Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / build / common.gypi
1 # Copyright (c) 2012 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 # This file contains common settings for building WebRTC components.
10
11 {
12   # Nesting is required in order to use variables for setting other variables.
13   'variables': {
14     'variables': {
15       'variables': {
16         'variables': {
17           # This will already be set to zero by supplement.gypi
18           'build_with_chromium%': 1,
19         },
20         'build_with_chromium%': '<(build_with_chromium)',
21
22         'conditions': [
23           ['build_with_chromium==1', {
24             'build_with_libjingle': 1,
25             'webrtc_root%': '<(DEPTH)/third_party/webrtc',
26             'apk_tests_path%': '<(DEPTH)/third_party/webrtc/build/apk_tests.gyp',
27             'modules_java_gyp_path%': '<(DEPTH)/third_party/webrtc/modules/modules_java_chromium.gyp',
28             'gen_core_neon_offsets_gyp%': '<(DEPTH)/third_party/webrtc/modules/audio_processing/gen_core_neon_offsets_chromium.gyp',
29           }, {
30             'build_with_libjingle%': 0,
31             'webrtc_root%': '<(DEPTH)/webrtc',
32             'apk_tests_path%': '<(DEPTH)/webrtc/build/apk_test_noop.gyp',
33             'modules_java_gyp_path%': '<(DEPTH)/webrtc/modules/modules_java.gyp',
34             'gen_core_neon_offsets_gyp%':'<(DEPTH)/webrtc/modules/audio_processing/gen_core_neon_offsets.gyp',
35           }],
36         ],
37       },
38       'build_with_chromium%': '<(build_with_chromium)',
39       'build_with_libjingle%': '<(build_with_libjingle)',
40       'webrtc_root%': '<(webrtc_root)',
41       'apk_tests_path%': '<(apk_tests_path)',
42       'modules_java_gyp_path%': '<(modules_java_gyp_path)',
43       'gen_core_neon_offsets_gyp%': '<(gen_core_neon_offsets_gyp)',
44       'webrtc_vp8_dir%': '<(webrtc_root)/modules/video_coding/codecs/vp8',
45       'rbe_components_path%': '<(webrtc_root)/modules/remote_bitrate_estimator',
46       'include_opus%': 1,
47     },
48     'build_with_chromium%': '<(build_with_chromium)',
49     'build_with_libjingle%': '<(build_with_libjingle)',
50     'webrtc_root%': '<(webrtc_root)',
51     'apk_tests_path%': '<(apk_tests_path)',
52     'modules_java_gyp_path%': '<(modules_java_gyp_path)',
53     'gen_core_neon_offsets_gyp%': '<(gen_core_neon_offsets_gyp)',
54     'webrtc_vp8_dir%': '<(webrtc_vp8_dir)',
55     'include_opus%': '<(include_opus)',
56     'rbe_components_path%': '<(rbe_components_path)',
57
58     # The Chromium common.gypi we use treats all gyp files without
59     # chromium_code==1 as third party code. This disables many of the
60     # preferred warning settings.
61     #
62     # We can set this here to have WebRTC code treated as Chromium code. Our
63     # third party code will still have the reduced warning settings.
64     'chromium_code': 1,
65
66     # Set to 1 to enable code coverage on Linux using the gcov library.
67     'coverage%': 0,
68
69     # Remote bitrate estimator logging/plotting.
70     'enable_bwe_test_logging%': 0,
71
72     # Adds video support to dependencies shared by voice and video engine.
73     # This should normally be enabled; the intended use is to disable only
74     # when building voice engine exclusively.
75     'enable_video%': 1,
76
77     # Selects fixed-point code where possible.
78     'prefer_fixed_point%': 0,
79
80     # Enable data logging. Produces text files with data logged within engines
81     # which can be easily parsed for offline processing.
82     'enable_data_logging%': 0,
83
84     # Enables the use of protocol buffers for debug recordings.
85     'enable_protobuf%': 1,
86
87     # Disable these to not build components which can be externally provided.
88     'build_libjpeg%': 1,
89     'build_libyuv%': 1,
90     'build_libvpx%': 1,
91
92     # Enable to use the Mozilla internal settings.
93     'build_with_mozilla%': 0,
94
95     'libyuv_dir%': '<(DEPTH)/third_party/libyuv',
96
97     # Define MIPS architecture variant, MIPS DSP variant and MIPS FPU
98     # This may be subject to change in accordance to Chromium's MIPS flags
99     'mips_arch_variant%': 'mips32r1',
100     'mips_dsp_rev%': 0,
101     'mips_fpu%' : 1,
102     'enable_android_opensl%': 1,
103
104     'conditions': [
105       ['build_with_chromium==1', {
106         # Exclude pulse audio on Chromium since its prerequisites don't require
107         # pulse audio.
108         'include_pulse_audio%': 0,
109
110         # Exclude internal ADM since Chromium uses its own IO handling.
111         'include_internal_audio_device%': 0,
112
113         # Exclude internal VCM in Chromium build.
114         'include_internal_video_capture%': 0,
115
116         # Exclude internal video render module in Chromium build.
117         'include_internal_video_render%': 0,
118       }, {  # Settings for the standalone (not-in-Chromium) build.
119         # TODO(andrew): For now, disable the Chrome plugins, which causes a
120         # flood of chromium-style warnings. Investigate enabling them:
121         # http://code.google.com/p/webrtc/issues/detail?id=163
122         'clang_use_chrome_plugins%': 0,
123
124         'include_pulse_audio%': 1,
125         'include_internal_audio_device%': 1,
126         'include_internal_video_capture%': 1,
127         'include_internal_video_render%': 1,
128       }],
129       ['build_with_libjingle==1', {
130         'include_tests%': 0,
131         'restrict_webrtc_logging%': 1,
132       }, {
133         'include_tests%': 1,
134         'restrict_webrtc_logging%': 0,
135       }],
136       ['OS=="ios"', {
137         'build_libjpeg%': 0,
138         'enable_protobuf%': 0,
139       }],
140       ['target_arch=="arm" or target_arch=="armv7"', {
141         'prefer_fixed_point%': 1,
142       }],
143     ], # conditions
144   },
145   'target_defaults': {
146     'include_dirs': [
147       # Allow includes to be prefixed with webrtc/ in case it is not an
148       # immediate subdirectory of <(DEPTH).
149       '../..',
150       # To include the top-level directory when building in Chrome, so we can
151       # use full paths (e.g. headers inside testing/ or third_party/).
152       '<(DEPTH)',
153     ],
154     'conditions': [
155       ['restrict_webrtc_logging==1', {
156         'defines': ['WEBRTC_RESTRICT_LOGGING',],
157       }],
158       ['build_with_mozilla==1', {
159         'defines': [
160           # Changes settings for Mozilla build.
161           'WEBRTC_MOZILLA_BUILD',
162          ],
163       }],
164       ['enable_video==1', {
165         'defines': ['WEBRTC_MODULE_UTILITY_VIDEO',],
166       }],
167       ['build_with_chromium==1', {
168         'defines': [
169           # Changes settings for Chromium build.
170           'WEBRTC_CHROMIUM_BUILD',
171         ],
172       }, {
173         'conditions': [
174           ['os_posix==1', {
175             'cflags': [
176               '-Wextra',
177               # We need to repeat some flags from Chromium's common.gypi here
178               # that get overridden by -Wextra.
179               '-Wno-unused-parameter',
180               '-Wno-missing-field-initializers',
181               '-Wno-strict-overflow',
182             ],
183             'cflags_cc': [
184               '-Wnon-virtual-dtor',
185               # This is enabled for clang; enable for gcc as well.
186               '-Woverloaded-virtual',
187             ],
188           }],
189           ['clang==1', {
190             'cflags': [
191               '-Wthread-safety',
192             ],
193           }],
194         ],
195       }],
196       ['target_arch=="arm" or target_arch=="armv7"', {
197         'defines': [
198           'WEBRTC_ARCH_ARM',
199         ],
200         'conditions': [
201           ['arm_version==7', {
202             'defines': ['WEBRTC_ARCH_ARM_V7',],
203             'conditions': [
204               ['arm_neon==1', {
205                 'defines': ['WEBRTC_ARCH_ARM_NEON',],
206               }, {
207                 'defines': ['WEBRTC_DETECT_ARM_NEON',],
208               }],
209             ],
210           }],
211         ],
212       }],
213       ['target_arch=="mipsel"', {
214         'defines': [
215           'MIPS32_LE',
216         ],
217         'conditions': [
218           ['mips_fpu==1', {
219             'defines': [
220               'MIPS_FPU_LE',
221             ],
222             'cflags': [
223               '-mhard-float',
224             ],
225           }, {
226             'cflags': [
227               '-msoft-float',
228             ],
229           }],
230           ['mips_arch_variant=="mips32r2"', {
231             'defines': [
232               'MIPS32_R2_LE',
233             ],
234             'cflags': [
235               '-mips32r2',
236             ],
237             'cflags_cc': [
238               '-mips32r2',
239             ],
240           }],
241           ['mips_dsp_rev==1', {
242             'defines': [
243               'MIPS_DSP_R1_LE',
244             ],
245             'cflags': [
246               '-mdsp',
247             ],
248             'cflags_cc': [
249               '-mdsp',
250             ],
251           }],
252           ['mips_dsp_rev==2', {
253             'defines': [
254               'MIPS_DSP_R1_LE',
255               'MIPS_DSP_R2_LE',
256             ],
257             'cflags': [
258               '-mdspr2',
259             ],
260             'cflags_cc': [
261               '-mdspr2',
262             ],
263           }],
264         ],
265       }],
266       ['coverage==1 and OS=="linux"', {
267         'cflags': [ '-ftest-coverage',
268                     '-fprofile-arcs' ],
269         'link_settings': { 'libraries': [ '-lgcov' ] },
270       }],
271       ['os_posix==1', {
272         # For access to standard POSIXish features, use WEBRTC_POSIX instead of
273         # a more specific macro.
274         'defines': [
275           'WEBRTC_POSIX',
276         ],
277       }],
278       ['OS=="ios"', {
279         'defines': [
280           'WEBRTC_MAC',
281           'WEBRTC_IOS',
282         ],
283       }],
284       ['OS=="linux"', {
285         'defines': [
286           'WEBRTC_LINUX',
287         ],
288       }],
289       ['OS=="mac"', {
290         'defines': [
291           'WEBRTC_MAC',
292         ],
293       }],
294       ['OS=="win"', {
295         'defines': [
296           'WEBRTC_WIN',
297         ],
298         # TODO(andrew): enable all warnings when possible.
299         # TODO(phoglund): get rid of 4373 supression when
300         # http://code.google.com/p/webrtc/issues/detail?id=261 is solved.
301         'msvs_disabled_warnings': [
302           4373,  # legacy warning for ignoring const / volatile in signatures.
303           4389,  # Signed/unsigned mismatch.
304         ],
305         # Re-enable some warnings that Chromium disables.
306         'msvs_disabled_warnings!': [4189,],
307       }],
308       ['OS=="android"', {
309         'defines': [
310           'WEBRTC_LINUX',
311           'WEBRTC_ANDROID',
312          ],
313          'conditions': [
314            ['enable_android_opensl==1', {
315              'defines': [
316                'WEBRTC_ANDROID_OPENSLES',
317              ],
318            }],
319            ['clang!=1', {
320              # The Android NDK doesn't provide optimized versions of these
321              # functions. Ensure they are disabled for all compilers.
322              'cflags': [
323                '-fno-builtin-cos',
324                '-fno-builtin-sin',
325                '-fno-builtin-cosf',
326                '-fno-builtin-sinf',
327              ],
328            }],
329          ],
330       }],
331     ], # conditions
332     'direct_dependent_settings': {
333       'include_dirs': [
334         '../..',
335       ],
336       'conditions': [
337         ['build_with_mozilla==1', {
338           'defines': [
339             # Changes settings for Mozilla build.
340             'WEBRTC_MOZILLA_BUILD',
341            ],
342         }],
343         ['build_with_chromium==1', {
344           'defines': [
345             # Changes settings for Chromium build.
346             'WEBRTC_CHROMIUM_BUILD',
347           ],
348         }],
349         ['OS=="mac"', {
350           'defines': [
351             'WEBRTC_MAC',
352           ],
353         }],
354         ['OS=="ios"', {
355           'defines': [
356             'WEBRTC_MAC',
357             'WEBRTC_IOS',
358           ],
359         }],
360         ['OS=="win"', {
361           'defines': [
362             'WEBRTC_WIN',
363           ],
364         }],
365         ['OS=="linux"', {
366           'defines': [
367             'WEBRTC_LINUX',
368           ],
369         }],
370         ['OS=="android"', {
371           'defines': [
372             'WEBRTC_LINUX',
373             'WEBRTC_ANDROID',
374            ],
375            'conditions': [
376              ['enable_android_opensl==1', {
377                'defines': [
378                  'WEBRTC_ANDROID_OPENSLES',
379                ],
380              }]
381            ],
382         }],
383       ],
384     },
385   }, # target_defaults
386 }
387