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': 'common_audio',
16      'type': 'static_library',
17      'dependencies': [
18        '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers',
19      ],
20      'include_dirs': [
21        'resampler/include',
22        'signal_processing/include',
23      ],
24      'direct_dependent_settings': {
25        'include_dirs': [
26          'resampler/include',
27          'signal_processing/include',
28          'vad/include',
29        ],
30      },
31      'sources': [
32        'audio_util.cc',
33        'fir_filter.cc',
34        'fir_filter.h',
35        'fir_filter_neon.h',
36        'fir_filter_sse.h',
37        'include/audio_util.h',
38        'resampler/include/push_resampler.h',
39        'resampler/include/resampler.h',
40        'resampler/push_resampler.cc',
41        'resampler/push_sinc_resampler.cc',
42        'resampler/push_sinc_resampler.h',
43        'resampler/resampler.cc',
44        'resampler/sinc_resampler.cc',
45        'resampler/sinc_resampler.h',
46        'signal_processing/include/real_fft.h',
47        'signal_processing/include/signal_processing_library.h',
48        'signal_processing/include/spl_inl.h',
49        'signal_processing/auto_corr_to_refl_coef.c',
50        'signal_processing/auto_correlation.c',
51        'signal_processing/complex_fft.c',
52        'signal_processing/complex_fft_tables.h',
53        'signal_processing/complex_bit_reverse.c',
54        'signal_processing/copy_set_operations.c',
55        'signal_processing/cross_correlation.c',
56        'signal_processing/division_operations.c',
57        'signal_processing/dot_product_with_scale.c',
58        'signal_processing/downsample_fast.c',
59        'signal_processing/energy.c',
60        'signal_processing/filter_ar.c',
61        'signal_processing/filter_ar_fast_q12.c',
62        'signal_processing/filter_ma_fast_q12.c',
63        'signal_processing/get_hanning_window.c',
64        'signal_processing/get_scaling_square.c',
65        'signal_processing/ilbc_specific_functions.c',
66        'signal_processing/levinson_durbin.c',
67        'signal_processing/lpc_to_refl_coef.c',
68        'signal_processing/min_max_operations.c',
69        'signal_processing/randomization_functions.c',
70        'signal_processing/refl_coef_to_lpc.c',
71        'signal_processing/real_fft.c',
72        'signal_processing/resample.c',
73        'signal_processing/resample_48khz.c',
74        'signal_processing/resample_by_2.c',
75        'signal_processing/resample_by_2_internal.c',
76        'signal_processing/resample_by_2_internal.h',
77        'signal_processing/resample_fractional.c',
78        'signal_processing/spl_init.c',
79        'signal_processing/spl_sqrt.c',
80        'signal_processing/spl_sqrt_floor.c',
81        'signal_processing/spl_version.c',
82        'signal_processing/splitting_filter.c',
83        'signal_processing/sqrt_of_one_minus_x_squared.c',
84        'signal_processing/vector_scaling_operations.c',
85        'vad/include/webrtc_vad.h',
86        'vad/webrtc_vad.c',
87        'vad/vad_core.c',
88        'vad/vad_core.h',
89        'vad/vad_filterbank.c',
90        'vad/vad_filterbank.h',
91        'vad/vad_gmm.c',
92        'vad/vad_gmm.h',
93        'vad/vad_sp.c',
94        'vad/vad_sp.h',
95        'wav_header.cc',
96        'wav_header.h',
97        'wav_writer.cc',
98        'wav_writer.h',
99      ],
100      'conditions': [
101        ['target_arch=="ia32" or target_arch=="x64"', {
102          'dependencies': ['common_audio_sse2',],
103        }],
104        ['target_arch=="arm" or target_arch=="armv7"', {
105          'sources': [
106            'signal_processing/complex_bit_reverse_arm.S',
107            'signal_processing/spl_sqrt_floor_arm.S',
108          ],
109          'sources!': [
110            'signal_processing/complex_bit_reverse.c',
111            'signal_processing/spl_sqrt_floor.c',
112          ],
113          'conditions': [
114            ['arm_version==7', {
115              'dependencies': ['common_audio_neon',],
116              'sources': [
117                'signal_processing/filter_ar_fast_q12_armv7.S',
118              ],
119              'sources!': [
120                'signal_processing/filter_ar_fast_q12.c',
121              ],
122            }],
123          ],  # conditions
124        }],
125        ['target_arch=="mipsel" and mips_arch_variant!="r6" and android_webview_build==0', {
126          'sources': [
127            'signal_processing/include/spl_inl_mips.h',
128            'signal_processing/complex_bit_reverse_mips.c',
129            'signal_processing/complex_fft_mips.c',
130            'signal_processing/cross_correlation_mips.c',
131            'signal_processing/downsample_fast_mips.c',
132            'signal_processing/filter_ar_fast_q12_mips.c',
133            'signal_processing/min_max_operations_mips.c',
134            'signal_processing/resample_by_2_mips.c',
135            'signal_processing/spl_sqrt_floor_mips.c',
136          ],
137          'sources!': [
138            'signal_processing/complex_bit_reverse.c',
139            'signal_processing/complex_fft.c',
140            'signal_processing/filter_ar_fast_q12.c',
141            'signal_processing/spl_sqrt_floor.c',
142          ],
143          'conditions': [
144            ['mips_dsp_rev>0', {
145              'sources': [
146                'signal_processing/vector_scaling_operations_mips.c',
147              ],
148            }],
149          ],
150        }],
151      ],  # conditions
152      # Ignore warning on shift operator promotion.
153      'msvs_disabled_warnings': [ 4334, ],
154    },
155  ],  # targets
156  'conditions': [
157    ['target_arch=="ia32" or target_arch=="x64"', {
158      'targets': [
159        {
160          'target_name': 'common_audio_sse2',
161          'type': 'static_library',
162          'sources': [
163            'fir_filter_sse.cc',
164            'resampler/sinc_resampler_sse.cc',
165          ],
166          'cflags': ['-msse2',],
167          'xcode_settings': {
168            'OTHER_CFLAGS': ['-msse2',],
169          },
170        },
171      ],  # targets
172    }],
173    ['(target_arch=="arm" and arm_version==7) or target_arch=="armv7"', {
174      'targets': [
175        {
176          'target_name': 'common_audio_neon',
177          'type': 'static_library',
178          'includes': ['../build/arm_neon.gypi',],
179          'sources': [
180            'fir_filter_neon.cc',
181            'resampler/sinc_resampler_neon.cc',
182            'signal_processing/cross_correlation_neon.S',
183            'signal_processing/downsample_fast_neon.S',
184            'signal_processing/min_max_operations_neon.S',
185            'signal_processing/vector_scaling_operations_neon.S',
186          ],
187          'conditions': [
188            # Disable LTO in common_audio_neon target due to compiler bug
189            ['use_lto==1', {
190              'cflags!': [
191                '-flto',
192                '-ffat-lto-objects',
193              ],
194            }],
195          ],
196        },
197      ],  # targets
198    }],
199    ['include_tests==1', {
200      'targets' : [
201        {
202          'target_name': 'common_audio_unittests',
203          'type': '<(gtest_target_type)',
204          'dependencies': [
205            'common_audio',
206            '<(webrtc_root)/test/test.gyp:test_support_main',
207            '<(DEPTH)/testing/gmock.gyp:gmock',
208            '<(DEPTH)/testing/gtest.gyp:gtest',
209          ],
210          'sources': [
211            'audio_util_unittest.cc',
212            'fir_filter_unittest.cc',
213            'resampler/resampler_unittest.cc',
214            'resampler/push_resampler_unittest.cc',
215            'resampler/push_sinc_resampler_unittest.cc',
216            'resampler/sinc_resampler_unittest.cc',
217            'resampler/sinusoidal_linear_chirp_source.cc',
218            'resampler/sinusoidal_linear_chirp_source.h',
219            'signal_processing/real_fft_unittest.cc',
220            'signal_processing/signal_processing_unittest.cc',
221            'vad/vad_core_unittest.cc',
222            'vad/vad_filterbank_unittest.cc',
223            'vad/vad_gmm_unittest.cc',
224            'vad/vad_sp_unittest.cc',
225            'vad/vad_unittest.cc',
226            'vad/vad_unittest.h',
227            'wav_header_unittest.cc',
228            'wav_writer_unittest.cc',
229          ],
230          'conditions': [
231            ['OS=="android"', {
232              'dependencies': [
233                '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
234              ],
235            }],
236          ],
237        },
238      ],  # targets
239      'conditions': [
240        ['OS=="android"', {
241          'targets': [
242            {
243              'target_name': 'common_audio_unittests_apk_target',
244              'type': 'none',
245              'dependencies': [
246                '<(apk_tests_path):common_audio_unittests_apk',
247              ],
248            },
249          ],
250        }],
251        ['test_isolation_mode != "noop"', {
252          'targets': [
253            {
254              'target_name': 'common_audio_unittests_run',
255              'type': 'none',
256              'dependencies': [
257                'common_audio_unittests',
258              ],
259              'includes': [
260                '../build/isolate.gypi',
261                'common_audio_unittests.isolate',
262              ],
263              'sources': [
264                'common_audio_unittests.isolate',
265              ],
266            },
267          ],
268        }],
269      ],
270    }],
271  ],  # conditions
272}
273