andrew@webrtc.org | 14b43be | 2012-10-22 18:19:23 +0000 | [diff] [blame^] | 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 be set to zero in the supplement.gypi triggered by a |
| 18 | # gclient hook in the standalone build. |
| 19 | 'build_with_chromium%': 1, |
| 20 | }, |
| 21 | 'build_with_chromium%': '<(build_with_chromium)', |
| 22 | |
| 23 | 'conditions': [ |
| 24 | ['build_with_chromium==1', { |
| 25 | 'webrtc_root%': '<(DEPTH)/third_party/webrtc', |
| 26 | }, { |
| 27 | 'webrtc_root%': '<(DEPTH)/webrtc', |
| 28 | }], |
| 29 | ], |
| 30 | }, |
| 31 | 'build_with_chromium%': '<(build_with_chromium)', |
| 32 | 'webrtc_root%': '<(webrtc_root)', |
| 33 | |
| 34 | 'webrtc_vp8_dir%': '<(webrtc_root)/modules/video_coding/codecs/vp8', |
| 35 | 'include_opus%': 0, |
| 36 | }, |
| 37 | 'build_with_chromium%': '<(build_with_chromium)', |
| 38 | 'webrtc_root%': '<(webrtc_root)', |
| 39 | 'webrtc_vp8_dir%': '<(webrtc_vp8_dir)', |
| 40 | 'include_opus%': '<(include_opus)', |
| 41 | |
| 42 | # The Chromium common.gypi we use treats all gyp files without |
| 43 | # chromium_code==1 as third party code. This disables many of the |
| 44 | # preferred warning settings. |
| 45 | # |
| 46 | # We can set this here to have WebRTC code treated as Chromium code. Our |
| 47 | # third party code will still have the reduced warning settings. |
| 48 | 'chromium_code': 1, |
| 49 | |
| 50 | # Adds video support to dependencies shared by voice and video engine. |
| 51 | # This should normally be enabled; the intended use is to disable only |
| 52 | # when building voice engine exclusively. |
| 53 | 'enable_video%': 1, |
| 54 | |
| 55 | # Selects fixed-point code where possible. |
| 56 | 'prefer_fixed_point%': 0, |
| 57 | |
| 58 | # Enable data logging. Produces text files with data logged within engines |
| 59 | # which can be easily parsed for offline processing. |
| 60 | 'enable_data_logging%': 0, |
| 61 | |
| 62 | # Disable these to not build components which can be externally provided. |
| 63 | 'build_libjpeg%': 1, |
| 64 | 'build_libyuv%': 1, |
| 65 | 'build_libvpx%': 1, |
| 66 | |
| 67 | # Enable to use the Mozilla internal Opus version. |
| 68 | 'build_with_mozilla%': 0, |
| 69 | |
| 70 | 'libyuv_dir%': '<(DEPTH)/third_party/libyuv', |
| 71 | |
| 72 | 'conditions': [ |
| 73 | ['build_with_chromium==1', { |
| 74 | # Exclude pulse audio on Chromium since its prerequisites don't require |
| 75 | # pulse audio. |
| 76 | 'include_pulse_audio%': 0, |
| 77 | |
| 78 | # Exclude internal ADM since Chromium uses its own IO handling. |
| 79 | 'include_internal_audio_device%': 0, |
| 80 | |
| 81 | # Exclude internal VCM in Chromium build. |
| 82 | 'include_internal_video_capture%': 0, |
| 83 | |
| 84 | # Exclude internal video render module in Chromium build. |
| 85 | 'include_internal_video_render%': 0, |
| 86 | |
| 87 | 'include_video_engine_file_api%': 0, |
| 88 | |
| 89 | 'include_tests%': 0, |
| 90 | |
| 91 | # Disable the use of protocol buffers in production code. |
| 92 | 'enable_protobuf%': 0, |
| 93 | |
| 94 | }, { # Settings for the standalone (not-in-Chromium) build. |
| 95 | 'include_pulse_audio%': 1, |
| 96 | 'include_internal_audio_device%': 1, |
| 97 | 'include_internal_video_capture%': 1, |
| 98 | 'include_internal_video_render%': 1, |
| 99 | 'include_video_engine_file_api%': 1, |
| 100 | 'enable_protobuf%': 1, |
| 101 | 'include_tests%': 1, |
| 102 | |
| 103 | # TODO(andrew): For now, disable the Chrome plugins, which causes a |
| 104 | # flood of chromium-style warnings. Investigate enabling them: |
| 105 | # http://code.google.com/p/webrtc/issues/detail?id=163 |
| 106 | 'clang_use_chrome_plugins%': 0, |
| 107 | |
| 108 | # Switch between Android audio device OpenSL ES implementation |
| 109 | # and Java Implementation |
| 110 | 'enable_android_opensl%': 1, |
| 111 | }], |
| 112 | ['OS=="ios"', { |
| 113 | 'enable_video%': 0, |
| 114 | 'enable_protobuf%': 0, |
| 115 | 'build_libjpeg%': 0, |
| 116 | 'build_libyuv%': 0, |
| 117 | 'build_libvpx%': 0, |
| 118 | 'include_tests%': 0, |
| 119 | }], |
| 120 | ['target_arch=="arm"', { |
| 121 | 'prefer_fixed_point%': 1, |
| 122 | }], |
| 123 | ], # conditions |
| 124 | }, |
| 125 | 'target_defaults': { |
| 126 | 'include_dirs': [ |
| 127 | # TODO(andrew): we should be able to just use <(webrtc_root) here. |
| 128 | '..','../..', |
| 129 | ], |
| 130 | 'defines': [ |
| 131 | # TODO(leozwang): Run this as a gclient hook rather than at build-time: |
| 132 | # http://code.google.com/p/webrtc/issues/detail?id=687 |
| 133 | 'WEBRTC_SVNREVISION="Unavailable(issue687)"', |
| 134 | #'WEBRTC_SVNREVISION="<!(python <(webrtc_root)/build/version.py)"', |
| 135 | ], |
| 136 | 'conditions': [ |
| 137 | ['build_with_chromium==1', { |
| 138 | 'defines': [ |
| 139 | # Changes settings for Chromium build. |
| 140 | 'WEBRTC_CHROMIUM_BUILD', |
| 141 | ], |
| 142 | }, { |
| 143 | 'conditions': [ |
| 144 | ['os_posix==1', { |
| 145 | 'cflags': [ |
| 146 | '-Wextra', |
| 147 | # We need to repeat some flags from Chromium's common.gypi here |
| 148 | # that get overridden by -Wextra. |
| 149 | '-Wno-unused-parameter', |
| 150 | '-Wno-missing-field-initializers', |
| 151 | ], |
| 152 | 'cflags_cc': [ |
| 153 | # This is enabled for clang; enable for gcc as well. |
| 154 | '-Woverloaded-virtual', |
| 155 | ], |
| 156 | }], |
| 157 | ], |
| 158 | }], |
| 159 | ['target_arch=="arm"', { |
| 160 | 'defines': [ |
| 161 | 'WEBRTC_ARCH_ARM', |
| 162 | ], |
| 163 | 'conditions': [ |
| 164 | ['armv7==1', { |
| 165 | 'defines': ['WEBRTC_ARCH_ARM_V7',], |
| 166 | 'conditions': [ |
| 167 | ['arm_neon==1', { |
| 168 | 'defines': ['WEBRTC_ARCH_ARM_NEON',], |
| 169 | }, { |
| 170 | 'defines': ['WEBRTC_DETECT_ARM_NEON',], |
| 171 | }], |
| 172 | ], |
| 173 | }], |
| 174 | ], |
| 175 | }], |
| 176 | ['OS=="ios"', { |
| 177 | 'defines': [ |
| 178 | 'WEBRTC_MAC', |
| 179 | 'WEBRTC_IOS', |
| 180 | 'WEBRTC_THREAD_RR', |
| 181 | 'WEBRTC_CLOCK_TYPE_REALTIME', |
| 182 | ], |
| 183 | }], |
| 184 | ['OS=="linux"', { |
| 185 | 'defines': [ |
| 186 | 'WEBRTC_LINUX', |
| 187 | 'WEBRTC_THREAD_RR', |
| 188 | # TODO(andrew): can we select this automatically? |
| 189 | # Define this if the Linux system does not support CLOCK_MONOTONIC. |
| 190 | #'WEBRTC_CLOCK_TYPE_REALTIME', |
| 191 | ], |
| 192 | }], |
| 193 | ['OS=="mac"', { |
| 194 | 'defines': [ |
| 195 | 'WEBRTC_MAC', |
| 196 | 'WEBRTC_THREAD_RR', |
| 197 | 'WEBRTC_CLOCK_TYPE_REALTIME', |
| 198 | ], |
| 199 | }], |
| 200 | ['OS=="win"', { |
| 201 | 'defines': [ |
| 202 | 'WEBRTC_WIN', |
| 203 | ], |
| 204 | # TODO(andrew): enable all warnings when possible. |
| 205 | # 4389: Signed/unsigned mismatch. |
| 206 | # 4373: MSVC legacy warning for ignoring const / volatile in |
| 207 | # signatures. TODO(phoglund): get rid of 4373 supression when |
| 208 | # http://code.google.com/p/webrtc/issues/detail?id=261 is solved. |
| 209 | 'msvs_disabled_warnings': [4389, 4373], |
| 210 | |
| 211 | # Re-enable some warnings that Chromium disables. |
| 212 | 'msvs_disabled_warnings!': [4189,], |
| 213 | }], |
| 214 | ['OS=="android"', { |
| 215 | 'defines': [ |
| 216 | 'WEBRTC_LINUX', |
| 217 | 'WEBRTC_ANDROID', |
| 218 | # TODO(leozwang): Investigate CLOCK_REALTIME and CLOCK_MONOTONIC |
| 219 | # support on Android. Keep WEBRTC_CLOCK_TYPE_REALTIME for now, |
| 220 | # remove it after I verify that CLOCK_MONOTONIC is fully functional |
| 221 | # with condition and event functions in system_wrappers. |
| 222 | 'WEBRTC_CLOCK_TYPE_REALTIME', |
| 223 | 'WEBRTC_THREAD_RR', |
| 224 | ], |
| 225 | 'conditions': [ |
| 226 | ['enable_android_opensl==1', { |
| 227 | 'defines': [ |
| 228 | 'WEBRTC_ANDROID_OPENSLES', |
| 229 | ], |
| 230 | }], |
| 231 | ], |
| 232 | }], |
| 233 | ], # conditions |
| 234 | }, # target_defaults |
| 235 | } |
| 236 | |