1# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS.  All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9{
10  'includes': [
11    '../build/common.gypi',
12  ],
13  'targets': [
14    {
15      'target_name': 'voice_engine',
16      'type': 'static_library',
17      'dependencies': [
18        '<(webrtc_root)/common.gyp:webrtc_common',
19        '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
20        '<(webrtc_root)/modules/modules.gyp:audio_coding_module',
21        '<(webrtc_root)/modules/modules.gyp:audio_conference_mixer',
22        '<(webrtc_root)/modules/modules.gyp:audio_device',
23        '<(webrtc_root)/modules/modules.gyp:audio_processing',
24        '<(webrtc_root)/modules/modules.gyp:bitrate_controller',
25        '<(webrtc_root)/modules/modules.gyp:media_file',
26        '<(webrtc_root)/modules/modules.gyp:paced_sender',
27        '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
28        '<(webrtc_root)/modules/modules.gyp:webrtc_utility',
29        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
30        '<(webrtc_root)/webrtc.gyp:rtc_event_log',
31      ],
32      'export_dependent_settings': [
33        '<(webrtc_root)/modules/modules.gyp:audio_coding_module',
34      ],
35      'sources': [
36        'include/voe_audio_processing.h',
37        'include/voe_base.h',
38        'include/voe_codec.h',
39        'include/voe_dtmf.h',
40        'include/voe_errors.h',
41        'include/voe_external_media.h',
42        'include/voe_file.h',
43        'include/voe_hardware.h',
44        'include/voe_neteq_stats.h',
45        'include/voe_network.h',
46        'include/voe_rtp_rtcp.h',
47        'include/voe_video_sync.h',
48        'include/voe_volume_control.h',
49        'channel.cc',
50        'channel.h',
51        'channel_manager.cc',
52        'channel_manager.h',
53        'channel_proxy.cc',
54        'channel_proxy.h',
55        'dtmf_inband.cc',
56        'dtmf_inband.h',
57        'dtmf_inband_queue.cc',
58        'dtmf_inband_queue.h',
59        'level_indicator.cc',
60        'level_indicator.h',
61        'monitor_module.cc',
62        'monitor_module.h',
63        'network_predictor.cc',
64        'network_predictor.h',
65        'output_mixer.cc',
66        'output_mixer.h',
67        'shared_data.cc',
68        'shared_data.h',
69        'statistics.cc',
70        'statistics.h',
71        'transmit_mixer.cc',
72        'transmit_mixer.h',
73        'utility.cc',
74        'utility.h',
75        'voe_audio_processing_impl.cc',
76        'voe_audio_processing_impl.h',
77        'voe_base_impl.cc',
78        'voe_base_impl.h',
79        'voe_codec_impl.cc',
80        'voe_codec_impl.h',
81        'voe_dtmf_impl.cc',
82        'voe_dtmf_impl.h',
83        'voe_external_media_impl.cc',
84        'voe_external_media_impl.h',
85        'voe_file_impl.cc',
86        'voe_file_impl.h',
87        'voe_hardware_impl.cc',
88        'voe_hardware_impl.h',
89        'voe_neteq_stats_impl.cc',
90        'voe_neteq_stats_impl.h',
91        'voe_network_impl.cc',
92        'voe_network_impl.h',
93        'voe_rtp_rtcp_impl.cc',
94        'voe_rtp_rtcp_impl.h',
95        'voe_video_sync_impl.cc',
96        'voe_video_sync_impl.h',
97        'voe_volume_control_impl.cc',
98        'voe_volume_control_impl.h',
99        'voice_engine_defines.h',
100        'voice_engine_impl.cc',
101        'voice_engine_impl.h',
102      ],
103    },
104  ],
105  'conditions': [
106    ['OS=="win"', {
107      'defines': ['WEBRTC_DRIFT_COMPENSATION_SUPPORTED',],
108    }],
109    ['include_tests==1', {
110      'targets': [
111        {
112          'target_name': 'voice_engine_unittests',
113          'type': '<(gtest_target_type)',
114          'dependencies': [
115            'voice_engine',
116            '<(DEPTH)/testing/gmock.gyp:gmock',
117            '<(DEPTH)/testing/gtest.gyp:gtest',
118            # The rest are to satisfy the unittests' include chain.
119            # This would be unnecessary if we used qualified includes.
120            '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
121            '<(webrtc_root)/modules/modules.gyp:audio_device',
122            '<(webrtc_root)/modules/modules.gyp:audio_processing',
123            '<(webrtc_root)/modules/modules.gyp:audio_coding_module',
124            '<(webrtc_root)/modules/modules.gyp:audio_conference_mixer',
125            '<(webrtc_root)/modules/modules.gyp:media_file',
126            '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
127            '<(webrtc_root)/modules/modules.gyp:webrtc_utility',
128            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
129            '<(webrtc_root)/test/test.gyp:test_support_main',
130          ],
131          'sources': [
132            'channel_unittest.cc',
133            'network_predictor_unittest.cc',
134            'transmit_mixer_unittest.cc',
135            'utility_unittest.cc',
136            'voe_audio_processing_unittest.cc',
137            'voe_base_unittest.cc',
138            'voe_codec_unittest.cc',
139            'voe_network_unittest.cc',
140            'voice_engine_fixture.cc',
141            'voice_engine_fixture.h',
142          ],
143          'conditions': [
144            ['OS=="android"', {
145              'dependencies': [
146                '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
147              ],
148            }],
149          ],
150        },
151        {
152          # command line test that should work on linux/mac/win
153          'target_name': 'voe_cmd_test',
154          'type': 'executable',
155          'dependencies': [
156            'voice_engine',
157            '<(DEPTH)/testing/gtest.gyp:gtest',
158            '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
159            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
160            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
161            '<(webrtc_root)/test/test.gyp:channel_transport',
162            '<(webrtc_root)/test/test.gyp:test_support',
163            '<(webrtc_root)/webrtc.gyp:rtc_event_log',
164          ],
165          'sources': [
166            'test/cmd_test/voe_cmd_test.cc',
167          ],
168        },
169      ], # targets
170      'conditions': [
171        ['OS!="ios"', {
172          'targets': [
173            {
174              'target_name': 'voe_auto_test',
175              'type': 'executable',
176              'dependencies': [
177                'voice_engine',
178                '<(DEPTH)/testing/gmock.gyp:gmock',
179                '<(DEPTH)/testing/gtest.gyp:gtest',
180                '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
181                '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
182                '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
183                '<(webrtc_root)/test/test.gyp:channel_transport',
184                '<(webrtc_root)/test/test.gyp:test_support',
185                '<(webrtc_root)/test/webrtc_test_common.gyp:webrtc_test_common',
186                '<(webrtc_root)/webrtc.gyp:rtc_event_log',
187               ],
188              'sources': [
189                'test/auto_test/automated_mode.cc',
190                'test/auto_test/extended/agc_config_test.cc',
191                'test/auto_test/extended/ec_metrics_test.cc',
192                'test/auto_test/fakes/conference_transport.cc',
193                'test/auto_test/fakes/conference_transport.h',
194                'test/auto_test/fakes/loudest_filter.cc',
195                'test/auto_test/fakes/loudest_filter.h',
196                'test/auto_test/fixtures/after_initialization_fixture.cc',
197                'test/auto_test/fixtures/after_initialization_fixture.h',
198                'test/auto_test/fixtures/after_streaming_fixture.cc',
199                'test/auto_test/fixtures/after_streaming_fixture.h',
200                'test/auto_test/fixtures/before_initialization_fixture.cc',
201                'test/auto_test/fixtures/before_initialization_fixture.h',
202                'test/auto_test/fixtures/before_streaming_fixture.cc',
203                'test/auto_test/fixtures/before_streaming_fixture.h',
204                'test/auto_test/standard/audio_processing_test.cc',
205                'test/auto_test/standard/codec_before_streaming_test.cc',
206                'test/auto_test/standard/codec_test.cc',
207                'test/auto_test/standard/dtmf_test.cc',
208                'test/auto_test/standard/external_media_test.cc',
209                'test/auto_test/standard/file_before_streaming_test.cc',
210                'test/auto_test/standard/file_test.cc',
211                'test/auto_test/standard/hardware_before_initializing_test.cc',
212                'test/auto_test/standard/hardware_before_streaming_test.cc',
213                'test/auto_test/standard/hardware_test.cc',
214                'test/auto_test/standard/mixing_test.cc',
215                'test/auto_test/standard/neteq_stats_test.cc',
216                'test/auto_test/standard/rtp_rtcp_before_streaming_test.cc',
217                'test/auto_test/standard/rtp_rtcp_extensions.cc',
218                'test/auto_test/standard/rtp_rtcp_test.cc',
219                'test/auto_test/standard/voe_base_misc_test.cc',
220                'test/auto_test/standard/video_sync_test.cc',
221                'test/auto_test/standard/volume_test.cc',
222                'test/auto_test/resource_manager.cc',
223                'test/auto_test/voe_conference_test.cc',
224                'test/auto_test/voe_cpu_test.cc',
225                'test/auto_test/voe_cpu_test.h',
226                'test/auto_test/voe_output_test.cc',
227                'test/auto_test/voe_standard_test.cc',
228                'test/auto_test/voe_standard_test.h',
229                'test/auto_test/voe_stress_test.cc',
230                'test/auto_test/voe_stress_test.h',
231                'test/auto_test/voe_test_defines.h',
232                'test/auto_test/voe_test_interface.h',
233              ],
234              'conditions': [
235                ['OS=="android"', {
236                  # some tests are not supported on android yet, exclude these tests.
237                  'sources!': [
238                    'test/auto_test/standard/hardware_before_streaming_test.cc',
239                  ],
240                }],
241                ['enable_protobuf==1', {
242                  'defines': [
243                    'ENABLE_RTC_EVENT_LOG',
244                  ],
245                }],
246              ],
247              # Disable warnings to enable Win64 build, issue 1323.
248              'msvs_disabled_warnings': [
249                4267,  # size_t to int truncation.
250              ],
251            },
252          ],
253        }],
254        ['OS=="android"', {
255          'targets': [
256            {
257              'target_name': 'voice_engine_unittests_apk_target',
258              'type': 'none',
259              'dependencies': [
260                '<(apk_tests_path):voice_engine_unittests_apk',
261              ],
262            },
263          ],
264        }],
265        ['test_isolation_mode != "noop"', {
266          'targets': [
267            {
268              'target_name': 'voice_engine_unittests_run',
269              'type': 'none',
270              'dependencies': [
271                'voice_engine_unittests',
272              ],
273              'includes': [
274                '../build/isolate.gypi',
275              ],
276              'sources': [
277                'voice_engine_unittests.isolate',
278              ],
279            },
280            {
281              'target_name': 'voe_auto_test_run',
282              'type': 'none',
283              'dependencies': [
284                'voe_auto_test',
285              ],
286              'includes': [
287                '../build/isolate.gypi',
288              ],
289              'sources': [
290                'voe_auto_test.isolate',
291              ],
292            },
293          ],
294        }],
295      ],  # conditions
296    }], # include_tests==1
297  ], # conditions
298}
299