1 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
6 # Please don't directly include this file if you are building via gyp_chromium,
7 # since gyp_chromium is automatically forcing its inclusion.
9 # Variables expected to be overriden on the GYP command line (-D) or by
10 # ~/.gyp/include.gypi.
12 # Putting a variables dict inside another variables dict looks kind of
13 # weird. This is done so that 'host_arch', 'chromeos', etc are defined as
14 # variables within the outer variables dict here. This is necessary
15 # to get these variables defined for the conditions within this variables
16 # dict that operate on these variables (e.g., for setting 'toolkit_views',
17 # we need to have 'chromeos' already set).
21 # Whether we're building a ChromeOS build.
24 # Disable touch support by default.
27 # Disable file manager component extension by default.
28 'file_manager_extension%': 0,
30 # Copy conditionally-set variables out one scope.
31 'chromeos%': '<(chromeos)',
32 'touchui%': '<(touchui)',
33 'file_manager_extension%': '<(file_manager_extension)',
35 # To do a shared build on linux we need to be able to choose between
36 # type static_library and shared_library. We default to doing a static
37 # build but you can override this with "gyp -Dlibrary=shared_library"
38 # or you can add the following line (without the #) to
39 # ~/.gyp/include.gypi {'variables': {'library': 'shared_library'}}
40 # to compile as shared by default
41 'library%': 'static_library',
43 # Compute the architecture that we're building on.
45 [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
46 # This handles the Linux platforms we generally deal with. Anything
47 # else gets passed through, which probably won't work very well; such
48 # hosts should pass an explicit target_arch to gyp.
50 '<!(uname -m | sed -e "s/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/")',
55 # Set default value of toolkit_views on for Windows, Chrome OS
57 ['OS=="win" or chromeos==1 or touchui==1', {
65 # Copy conditionally-set variables out one scope.
66 'chromeos%': '<(chromeos)',
67 'touchui%': '<(touchui)',
68 'file_manager_extension%': '<(file_manager_extension)',
69 'host_arch%': '<(host_arch)',
70 'library%': '<(library)',
71 'toolkit_views%': '<(toolkit_views)',
73 # Override branding to select the desired branding flavor.
74 'branding%': 'Chromium',
76 # Override buildtype to select the desired build flavor.
77 # Dev - everyday build for development/testing
78 # Official - release build (generally implies additional processing)
79 # TODO(mmoss) Once 'buildtype' is fully supported (e.g. Windows gyp
80 # conversion is done), some of the things which are now controlled by
81 # 'branding', such as symbol generation, will need to be refactored based
82 # on 'buildtype' (i.e. we don't care about saving symbols for non-Official
86 # Default architecture we're building for is the architecture we're
88 'target_arch%': '<(host_arch)',
90 # This variable tells WebCore.gyp and JavaScriptCore.gyp whether they are
91 # are built under a chromium full build (1) or a webkit.org chromium
93 'inside_chromium_build%': 1,
95 # Set to 1 to enable fast builds. It disables debug info for fastest
100 'python_ver%': '2.5',
102 # Set ARM-v7 compilation flags
105 # Set Neon compilation flags (only meaningful if armv7==1).
108 # The system root for cross-compiles. Default: none.
111 # On Linux, we build with sse2 for Chromium builds.
114 # Use libjpeg-turbo as the JPEG codec used by Chromium.
115 'use_libjpeg_turbo%': 1,
117 # Variable 'component' is for cases where we would like to build some
118 # components as dynamic shared libraries but still need variable
119 # 'library' for static libraries.
120 # By default, component is set to whatever library is set to and
121 # it can be overriden by the GYP command line or by ~/.gyp/include.gypi.
122 'component%': '<(library)',
124 # Set to select the Title Case versions of strings in GRD files.
125 'use_titlecase_in_grd_files%': 0,
127 # Use translations provided by volunteers at launchpad.net. This
128 # currently only works on Linux.
129 'use_third_party_translations%': 0,
131 # Remoting compilation is enabled by default. Set to 0 to disable.
134 # If this is set, the clang plugins used on the buildbot will be used.
135 # Run tools/clang/scripts/update.sh to make sure they are compiled.
136 # This causes 'clang_chrome_plugins_flags' to be set.
137 # Has no effect if 'clang' is not set as well.
138 'clang_use_chrome_plugins%': 0,
141 # A flag to enable or disable our compile-time dependency
142 # on gnome-keyring. If that dependency is disabled, no gnome-keyring
143 # support will be available. This option is useful
144 # for Linux distributions.
146 'use_gnome_keyring%': 0,
148 'use_gnome_keyring%': 1,
151 # Set to 1 compile with -fPIC cflag on linux. This is a must for shared
152 # libraries on linux x86-64 and arm.
153 ['host_arch=="ia32"', {
159 ['toolkit_views==0 or OS=="mac"', {
160 # GTK+ and Mac wants Title Case strings
161 'use_titlecase_in_grd_files%': 1,
164 # Enable some hacks to support Flapper only on Chrome OS.
166 'enable_flapper_hacks%': 1,
168 'enable_flapper_hacks%': 0,
173 # Copy conditionally-set variables out one scope.
174 'branding%': '<(branding)',
175 'buildtype%': '<(buildtype)',
176 'target_arch%': '<(target_arch)',
177 'host_arch%': '<(host_arch)',
178 'toolkit_views%': '<(toolkit_views)',
179 'use_gnome_keyring%': '<(use_gnome_keyring)',
180 'linux_fpic%': '<(linux_fpic)',
181 'enable_flapper_hacks%': '<(enable_flapper_hacks)',
182 'chromeos%': '<(chromeos)',
183 'touchui%': '<(touchui)',
184 'file_manager_extension%': '<(file_manager_extension)',
185 'inside_chromium_build%': '<(inside_chromium_build)',
186 'fastbuild%': '<(fastbuild)',
187 'python_ver%': '<(python_ver)',
188 'armv7%': '<(armv7)',
189 'arm_neon%': '<(arm_neon)',
190 'sysroot%': '<(sysroot)',
191 'disable_sse2%': '<(disable_sse2)',
192 'library%': '<(library)',
193 'component%': '<(component)',
194 'use_titlecase_in_grd_files%': '<(use_titlecase_in_grd_files)',
195 'use_third_party_translations%': '<(use_third_party_translations)',
196 'remoting%': '<(remoting)',
197 'clang_use_chrome_plugins%': '<(clang_use_chrome_plugins)',
199 # The release channel that this build targets. This is used to restrict
200 # channel-specific build options, like which installer packages to create.
201 # The default is 'all', which does no channel-specific filtering.
204 # Override chromium_mac_pch and set it to 0 to suppress the use of
205 # precompiled headers on the Mac. Prefix header injection may still be
206 # used, but prefix headers will not be precompiled. This is useful when
207 # using distcc to distribute a build to compile slaves that don't
208 # share the same compiler executable as the system driving the compilation,
209 # because precompiled headers rely on pointers into a specific compiler
210 # executable's image. Setting this to 0 is needed to use an experimental
211 # Linux-Mac cross compiler distcc farm.
212 'chromium_mac_pch%': 1,
214 # Mac OS X SDK and deployment target support.
215 # The SDK identifies the version of the system headers that will be used,
216 # and corresponds to the MAC_OS_X_VERSION_MAX_ALLOWED compile-time macro.
217 # "Maximum allowed" refers to the operating system version whose APIs are
218 # available in the headers.
219 # The deployment target identifies the minimum system version that the
220 # built products are expected to function on. It corresponds to the
221 # MAC_OS_X_VERSION_MIN_REQUIRED compile-time macro.
222 # To ensure these macros are available, #include <AvailabilityMacros.h>.
223 # Additional documentation on these macros is available at
224 # http://developer.apple.com/mac/library/technotes/tn2002/tn2064.html#SECTION3
225 # Chrome normally builds with the Mac OS X 10.5 SDK and sets the
226 # deployment target to 10.5. Other projects, such as O3D, may override
229 'mac_deployment_target%': '10.5',
231 # Set to 1 to enable code coverage. In addition to build changes
232 # (e.g. extra CFLAGS), also creates a new target in the src/chrome
233 # project file called "coverage".
234 # Currently ignored on Windows.
237 # Overridable specification for potential use of alternative
238 # JavaScript engines.
239 'javascript_engine%': 'v8',
241 # Although base/allocator lets you select a heap library via an
242 # environment variable, the libcmt shim it uses sometimes gets in
243 # the way. To disable it entirely, and switch to normal msvcrt, do e.g.
244 # 'win_use_allocator_shim': 0,
245 # 'win_release_RuntimeLibrary': 2
246 # to ~/.gyp/include.gypi, gclient runhooks --force, and do a release build.
247 'win_use_allocator_shim%': 1, # 1 = shim allocator via libcmt; 0 = msvcrt
249 # Whether usage of OpenMAX is enabled.
250 'enable_openmax%': 0,
252 # Whether proprietary audio/video codecs are assumed to be included with
253 # this build (only meaningful if branding!=Chrome).
254 'proprietary_codecs%': 0,
256 # TODO(bradnelson): eliminate this when possible.
257 # To allow local gyp files to prevent release.vsprops from being included.
258 # Yes(1) means include release.vsprops.
259 # Once all vsprops settings are migrated into gyp, this can go away.
260 'msvs_use_common_release%': 1,
262 # TODO(bradnelson): eliminate this when possible.
263 # To allow local gyp files to override additional linker options for msvs.
264 # Yes(1) means set use the common linker options.
265 'msvs_use_common_linker_extras%': 1,
267 # TODO(sgk): eliminate this if possible.
268 # It would be nicer to support this via a setting in 'target_defaults'
269 # in chrome/app/locales/locales.gypi overriding the setting in the
270 # 'Debug' configuration in the 'target_defaults' dict below,
271 # but that doesn't work as we'd like.
272 'msvs_debug_link_incremental%': '2',
274 # Needed for some of the largest modules.
275 'msvs_debug_link_nonincremental%': '1',
277 # This is the location of the sandbox binary. Chrome looks for this before
278 # running the zygote process. If found, and SUID, it will be used to
279 # sandbox the zygote process and, thus, all renderer processes.
280 'linux_sandbox_path%': '',
282 # Set this to true to enable SELinux support.
285 # Set this to true when building with Clang.
286 # See http://code.google.com/p/chromium/wiki/Clang for details.
287 # TODO: eventually clang should behave identically to gcc, and this
288 # won't be necessary.
291 # These two variables can be set in GYP_DEFINES while running
292 # |gclient runhooks| to let clang run a plugin in every compilation.
293 # Only has an effect if 'clang=1' is in GYP_DEFINES as well.
295 # GYP_DEFINES='clang=1 clang_load=/abs/path/to/libPrintFunctionNames.dylib clang_add_plugin=print-fns' gclient runhooks
298 'clang_add_plugin%': '',
300 # Enable sampling based profiler.
301 # See http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html
304 # Override whether we should use Breakpad on Linux. I.e. for Chrome bot.
305 'linux_breakpad%': 0,
306 # And if we want to dump symbols for Breakpad-enabled builds.
307 'linux_dump_symbols%': 0,
308 # And if we want to strip the binary after dumping symbols.
309 'linux_strip_binary%': 0,
310 # Strip the test binaries needed for Linux reliability tests.
311 'linux_strip_reliability_tests%': 0,
314 'linux_use_tcmalloc%': 1,
316 # Disable TCMalloc's debugallocation.
317 'linux_use_debugallocation%': 0,
319 # Disable TCMalloc's heapchecker.
320 'linux_use_heapchecker%': 0,
322 # Disable shadow stack keeping used by heapcheck to unwind the stacks
324 'linux_keep_shadow_stacks%': 0,
326 # Set to 1 to turn on seccomp sandbox by default.
327 # (Note: this is ignored for official builds.)
328 'linux_use_seccomp_sandbox%': 0,
330 # Set to 1 to link against libgnome-keyring instead of using dlopen().
331 'linux_link_gnome_keyring%': 0,
333 # Used to disable Native Client at compile time, for platforms where it
337 # Set Thumb compilation flags.
340 # Set ARM fpu compilation flags (only meaningful if armv7==1 and
344 # Enable new NPDevice API.
345 'enable_new_npdevice_api%': 0,
347 # Enable EGLImage support in OpenMAX
348 'enable_eglimage%': 1,
350 # Enable a variable used elsewhere throughout the GYP files to determine
351 # whether to compile in the sources for the GPU plugin / process.
354 # Use OpenSSL instead of NSS. Under development: see http://crbug.com/62803
357 # .gyp files or targets should set chromium_code to 1 if they build
358 # Chromium-specific code, as opposed to external code. This variable is
359 # used to control such things as the set of warnings to enable, and
360 # whether warnings are treated as errors.
363 # Set to 1 to compile with the built in pdf viewer.
366 # This allows to use libcros from the current system, ie. /usr/lib/
367 # The cros_api will be pulled in as a static library, and all headers
368 # from the system include dirs.
369 'system_libcros%': 0,
371 # NOTE: When these end up in the Mac bundle, we need to replace '-' for '_'
372 # so Cocoa is happy (http://crbug.com/20441).
374 'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en-GB',
375 'en-US', 'es-419', 'es', 'et', 'fa', 'fi', 'fil', 'fr', 'gu', 'he',
376 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv',
377 'ml', 'mr', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru',
378 'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk',
379 'vi', 'zh-CN', 'zh-TW',
384 # Use Harfbuzz-NG instead of Harfbuzz.
385 # Under development: http://crbug.com/68551
386 'use_harfbuzz_ng%': 0,
388 # Point to ICU directory.
389 'icu_src_dir': '../third_party/icu',
392 ['OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
393 # This will set gcc_version to XY if you are running gcc X.Y.*.
394 # This is used to tweak build flags for gcc 4.4.
395 'gcc_version%': '<!(python <(DEPTH)/build/compiler_version.py)',
396 # Figure out the python architecture to decide if we build pyauto.
397 'python_arch%': '<!(<(DEPTH)/build/linux/python_arch.sh <(sysroot)/usr/lib/libpython<(python_ver).so.1.0)',
399 ['branding=="Chrome"', {
400 'linux_breakpad%': 1,
402 # All Chrome builds have breakpad symbols, but only process the
403 # symbols from official builds.
404 ['(branding=="Chrome" and buildtype=="Official")', {
405 'linux_dump_symbols%': 1,
408 }], # OS=="linux" or OS=="freebsd" or OS=="openbsd"
412 # mac_product_name is set to the name of the .app bundle as it should
413 # appear on disk. This duplicates data from
414 # chrome/app/theme/chromium/BRANDING and
415 # chrome/app/theme/google_chrome/BRANDING, but is necessary to get
416 # these names into the build system.
417 ['branding=="Chrome"', {
418 'mac_product_name%': 'Google Chrome',
419 }, { # else: branding!="Chrome"
420 'mac_product_name%': 'Chromium',
423 # Feature variables for enabling Mac Breakpad and Keystone auto-update
424 # support. Both features are on by default in official builds with
426 ['branding=="Chrome" and buildtype=="Official"', {
429 }, { # else: branding!="Chrome" or buildtype!="Official"
436 # Whether to use multiple cores to compile with visual studio. This is
437 # optional because it sometimes causes corruption on VS 2005.
438 # It is on by default on VS 2008 and off on VS 2005.
441 ['component=="shared_library"', {
442 'win_use_allocator_shim%': 0,
444 ['MSVS_VERSION=="2005"', {
445 'msvs_multi_core_compile%': 0,
447 'msvs_multi_core_compile%': 1,
449 # Don't do incremental linking for large modules on 32-bit.
450 ['MSVS_OS_BITS==32', {
451 'msvs_large_module_debug_link_mode%': '1', # No
453 'msvs_large_module_debug_link_mode%': '2', # Yes
455 ['MSVS_VERSION=="2010e" or MSVS_VERSION=="2008e" or MSVS_VERSION=="2005e"', {
463 'nacl_win64_defines': [
464 # This flag is used to minimize dependencies when building
465 # Native Client loader for 64-bit Windows.
470 ['OS=="mac" or (OS=="linux" and chromeos==0 and target_arch!="arm")', {
476 # Set the relative path from this file to the GYP file of the JPEG
477 # library used by Chromium.
478 ['use_libjpeg_turbo==1', {
479 'libjpeg_gyp_path': '../third_party/libjpeg_turbo/libjpeg.gyp',
481 'libjpeg_gyp_path': '../third_party/libjpeg/libjpeg.gyp',
482 }], # use_libjpeg_turbo==1
484 # Use GConf, the GNOME configuration system.
491 # Setup -D flags passed into grit.
492 ['branding=="Chrome"', {
493 # TODO(mmoss) The .grd files look for _google_chrome, but for
494 # consistency they should look for google_chrome_build like C++.
495 'grit_defines': ['-D', '_google_chrome'],
497 'grit_defines': ['-D', '_chromium'],
500 'grit_defines': ['-D', 'chromeos'],
502 ['toolkit_views==1', {
503 'grit_defines': ['-D', 'toolkit_views'],
506 'grit_defines': ['-D', 'touchui'],
508 ['file_manager_extension==1', {
509 'grit_defines': ['-D', 'file_manager_extension'],
512 'grit_defines': ['-D', 'remoting'],
514 ['use_titlecase_in_grd_files==1', {
515 'grit_defines': ['-D', 'use_titlecase'],
517 ['use_third_party_translations==1', {
518 'grit_defines': ['-D', 'use_third_party_translations'],
519 'locales': ['ast', 'eu', 'gl', 'ka', 'ku', 'ug'],
522 ['clang_use_chrome_plugins==1', {
523 'clang_chrome_plugins_flags':
524 '<!(<(DEPTH)/tools/clang/scripts/plugin_flags.sh)',
530 # The condition that operates on chromium_code is in a target_conditions
531 # section, and will not have access to the default fallback value of
532 # chromium_code at the top of this file, or to the chromium_code
533 # variable placed at the root variables scope of .gyp files, because
534 # those variables are not set at target scope. As a workaround,
535 # if chromium_code is not set at target scope, define it in target scope
536 # to contain whatever value it has during early variable expansion.
537 # That's enough to make it available during target conditional
539 'chromium_code%': '<(chromium_code)',
541 # See http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html
542 'mac_release_optimization%': '3', # Use -O3 unless overridden
543 'mac_debug_optimization%': '0', # Use -O0 unless overridden
544 # See http://msdn.microsoft.com/en-us/library/aa652360(VS.71).aspx
545 'win_release_Optimization%': '2', # 2 = /Os
546 'win_debug_Optimization%': '0', # 0 = /Od
547 # See http://msdn.microsoft.com/en-us/library/8wtf2dfz(VS.71).aspx
548 'win_debug_RuntimeChecks%': '3', # 3 = all checks enabled, 0 = off
549 # See http://msdn.microsoft.com/en-us/library/47238hez(VS.71).aspx
550 'win_debug_InlineFunctionExpansion%': '', # empty = default, 0 = off,
551 'win_release_InlineFunctionExpansion%': '2', # 1 = only __inline, 2 = max
552 # VS inserts quite a lot of extra checks to algorithms like
553 # std::partial_sort in Debug build which make them O(N^2)
554 # instead of O(N*logN). This is particularly slow under memory
555 # tools like ThreadSanitizer so we want it to be disablable.
556 # See http://msdn.microsoft.com/en-us/library/aa985982(v=VS.80).aspx
557 'win_debug_disable_iterator_debugging%': '0',
559 'release_extra_cflags%': '',
560 'debug_extra_cflags%': '',
561 'release_valgrind_build%': 0,
564 ['OS=="win" and component=="shared_library"', {
565 # See http://msdn.microsoft.com/en-us/library/aa652367.aspx
566 'win_release_RuntimeLibrary%': '2', # 2 = /MT (nondebug DLL)
567 'win_debug_RuntimeLibrary%': '3', # 3 = /MTd (debug DLL)
569 # See http://msdn.microsoft.com/en-us/library/aa652367.aspx
570 'win_release_RuntimeLibrary%': '0', # 0 = /MT (nondebug static)
571 'win_debug_RuntimeLibrary%': '1', # 1 = /MTd (debug static)
576 ['branding=="Chrome"', {
577 'defines': ['GOOGLE_CHROME_BUILD'],
578 }, { # else: branding!="Chrome"
579 'defines': ['CHROMIUM_BUILD'],
581 ['toolkit_views==1', {
582 'defines': ['TOOLKIT_VIEWS=1'],
585 'defines': ['OS_CHROMEOS=1'],
588 'defines': ['TOUCH_UI=1'],
590 ['file_manager_extension==1', {
591 'defines': ['FILE_MANAGER_EXTENSION=1'],
594 'defines': ['ENABLE_PROFILING=1'],
597 'defines': ['ENABLE_REMOTING=1'],
599 ['proprietary_codecs==1', {
600 'defines': ['USE_PROPRIETARY_CODECS'],
602 ['enable_flapper_hacks==1', {
603 'defines': ['ENABLE_FLAPPER_HACKS=1'],
607 # For Windows, we don't genererate debug information.
611 'GenerateDebugInformation': 'false',
613 'VCCLCompilerTool': {
614 'DebugInformationFormat': '0',
617 }, { # else: OS != "win", generate less debug information.
619 'debug_extra_cflags': '-g1',
622 # Clang creates chubby debug information, which makes linking very
623 # slow. For now, don't create debug information with clang. See
624 # http://crbug.com/70000
625 ['OS=="linux" and clang==1', {
627 'debug_extra_cflags': '-g0',
630 ], # conditions for fastbuild.
633 'defines': ['CHROMIUM_SELINUX=1'],
635 ['win_use_allocator_shim==0', {
638 'defines': ['NO_TCMALLOC'],
652 ['enable_eglimage==1', {
661 'GCC_INSTRUMENT_PROGRAM_FLOW_ARCS': 'YES', # -fprofile-arcs
662 'GCC_GENERATE_TEST_COVERAGE_FILES': 'YES', # -ftest-coverage
664 # Add -lgcov for types executable, shared_library, and
665 # loadable_module; not for static_library.
666 # This is a delayed conditional.
667 'target_conditions': [
668 ['_type!="static_library"', {
669 'xcode_settings': { 'OTHER_LDFLAGS': [ '-lgcov' ] },
674 'cflags': [ '-ftest-coverage',
676 'link_settings': { 'libraries': [ '-lgcov' ] },
678 # Finally, for Windows, we simply turn on profiling.
684 'VCCLCompilerTool': {
685 # /Z7, not /Zi, so coverage is happyb
686 'DebugInformationFormat': '1',
687 'AdditionalOptions': ['/Yd'],
691 ], # conditions for coverage
696 '_CRT_SECURE_NO_DEPRECATE',
697 '_SCL_SECURE_NO_DEPRECATE',
700 '<(DEPTH)/third_party/wtl/include',
703 ], # conditions for 'target_defaults'
704 'target_conditions': [
705 ['chromium_code==0', {
707 [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
708 # We don't want to get warnings from third-party code,
709 # so remove any existing warning-enabling flags like -Wall.
716 # Don't warn about hash_map in third-party code.
718 # Don't warn about printf format problems.
719 # This is off by default in gcc but on in Ubuntu's gcc(!).
725 '_CRT_SECURE_NO_DEPRECATE',
726 '_CRT_NONSTDC_NO_WARNINGS',
727 '_CRT_NONSTDC_NO_DEPRECATE',
728 '_SCL_SECURE_NO_DEPRECATE',
730 'msvs_disabled_warnings': [4800],
732 'VCCLCompilerTool': {
733 'WarnAsError': 'false',
734 'Detect64BitPortabilityProblems': 'false',
740 'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO',
741 'WARNING_CFLAGS!': ['-Wall', '-Wextra'],
746 # In Chromium code, we define __STDC_FORMAT_MACROS in order to get the
747 # C99 macros on Mac and Linux.
749 '__STDC_FORMAT_MACROS',
753 'sources/': [ ['exclude', '_win(_unittest)?\\.(h|cc)$'],
754 ['exclude', '(^|/)win/'],
755 ['exclude', '(^|/)win_[^/]*\\.(h|cc)$'] ],
758 'sources/': [ ['exclude', '_(cocoa|mac)(_unittest)?\\.(h|cc)$'],
759 ['exclude', '(^|/)(cocoa|mac)/'],
760 ['exclude', '\\.mm?$' ] ],
762 ['OS!="linux" and OS!="freebsd" and OS!="openbsd"', {
764 ['exclude', '_(chromeos|gtk|x|x11|xdg)(_unittest)?\\.(h|cc)$'],
765 ['exclude', '(^|/)gtk/'],
766 ['exclude', '(^|/)(gtk|x11)_[^/]*\\.(h|cc)$'],
771 ['exclude', '_linux(_unittest)?\\.(h|cc)$'],
772 ['exclude', '(^|/)linux/'],
775 # We use "POSIX" to refer to all non-Windows operating systems.
777 'sources/': [ ['exclude', '_posix\\.(h|cc)$'] ],
778 # turn on warnings for signed/unsigned mismatch on chromium code.
780 'VCCLCompilerTool': {
781 'AdditionalOptions': ['/we4389'],
786 'sources/': [ ['exclude', '_chromeos\\.(h|cc)$'] ]
788 ['toolkit_views==0', {
789 'sources/': [ ['exclude', '_views\\.(h|cc)$'] ]
793 ], # target_conditions for 'target_defaults'
794 'default_configuration': 'Debug',
796 # VCLinkerTool LinkIncremental values below:
798 # 1 == /INCREMENTAL:NO
800 # Debug links incremental, Release does not.
802 # Abstract base configurations to cover common attributes.
806 'msvs_configuration_attributes': {
807 'OutputDirectory': '$(SolutionDir)$(ConfigurationName)',
808 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
816 'TargetMachine': '1',
819 'msvs_configuration_platform': 'Win32',
823 'msvs_configuration_platform': 'x64',
826 'TargetMachine': '17', # x86 - 64
827 'AdditionalLibraryDirectories!':
828 ['<(DEPTH)/third_party/platformsdk_win7/files/Lib'],
829 'AdditionalLibraryDirectories':
830 ['<(DEPTH)/third_party/platformsdk_win7/files/Lib/x64'],
833 'AdditionalLibraryDirectories!':
834 ['<(DEPTH)/third_party/platformsdk_win7/files/Lib'],
835 'AdditionalLibraryDirectories':
836 ['<(DEPTH)/third_party/platformsdk_win7/files/Lib/x64'],
840 # Not sure if tcmalloc works on 64-bit Windows.
846 'defines': ['DYNAMIC_ANNOTATIONS_ENABLED=1'],
848 'COPY_PHASE_STRIP': 'NO',
849 'GCC_OPTIMIZATION_LEVEL': '<(mac_debug_optimization)',
850 'OTHER_CFLAGS': [ '<@(debug_extra_cflags)', ],
853 'VCCLCompilerTool': {
854 'Optimization': '<(win_debug_Optimization)',
855 'PreprocessorDefinitions': ['_DEBUG'],
856 'BasicRuntimeChecks': '<(win_debug_RuntimeChecks)',
857 'RuntimeLibrary': '<(win_debug_RuntimeLibrary)',
859 # According to MSVS, InlineFunctionExpansion=0 means
860 # "default inlining", not "/Ob0".
861 # Thus, we have to handle InlineFunctionExpansion==0 separately.
862 ['win_debug_InlineFunctionExpansion==0', {
863 'AdditionalOptions': ['/Ob0'],
865 ['win_debug_InlineFunctionExpansion!=""', {
866 'InlineFunctionExpansion':
867 '<(win_debug_InlineFunctionExpansion)',
869 ['win_debug_disable_iterator_debugging==1', {
870 'PreprocessorDefinitions': ['_HAS_ITERATOR_DEBUGGING=0'],
875 'LinkIncremental': '<(msvs_debug_link_incremental)',
877 'VCResourceCompilerTool': {
878 'PreprocessorDefinitions': ['_DEBUG'],
884 '<@(debug_extra_cflags)',
895 'DEAD_CODE_STRIPPING': 'YES', # -Wl,-dead_strip
896 'GCC_OPTIMIZATION_LEVEL': '<(mac_release_optimization)',
897 'OTHER_CFLAGS': [ '<@(release_extra_cflags)', ],
900 'VCCLCompilerTool': {
901 'Optimization': '<(win_release_Optimization)',
902 'RuntimeLibrary': '<(win_release_RuntimeLibrary)',
904 # According to MSVS, InlineFunctionExpansion=0 means
905 # "default inlining", not "/Ob0".
906 # Thus, we have to handle InlineFunctionExpansion==0 separately.
907 ['win_release_InlineFunctionExpansion==0', {
908 'AdditionalOptions': ['/Ob0'],
910 ['win_release_InlineFunctionExpansion!=""', {
911 'InlineFunctionExpansion':
912 '<(win_release_InlineFunctionExpansion)',
917 'LinkIncremental': '1',
921 ['release_valgrind_build==0', {
922 'defines': ['NVALGRIND', 'DYNAMIC_ANNOTATIONS_ENABLED=0'],
924 'defines': ['DYNAMIC_ANNOTATIONS_ENABLED=1'],
926 ['win_use_allocator_shim==0', {
927 'defines': ['NO_TCMALLOC'],
931 '<@(release_extra_cflags)',
943 'VCCLCompilerTool': {
945 'RuntimeLibrary': '0',
946 'BufferSecurityCheck': 'false',
949 'EnableCOMDATFolding': '1',
950 'LinkIncremental': '1',
955 # Concrete configurations
958 'inherit_from': ['Common_Base', 'x86_Base', 'Debug_Base'],
961 'inherit_from': ['Common_Base', 'x86_Base', 'Release_Base'],
963 ['msvs_use_common_release', {
964 'includes': ['release.gypi'],
970 # TODO(bradnelson): add a gyp mechanism to make this more graceful.
972 'inherit_from': ['Common_Base', 'x86_Base', 'Release_Base', 'Purify'],
975 'inherit_from': ['Common_Base', 'x64_Base', 'Debug_Base'],
978 'inherit_from': ['Common_Base', 'x64_Base', 'Release_Base'],
981 'inherit_from': ['Common_Base', 'x64_Base', 'Release_Base', 'Purify_Base'],
988 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
990 # Enable -Werror by default, but put it in a variable so it can
991 # be disabled in ~/.gyp/include.gypi on the valgrind builders.
993 # Use -fno-strict-aliasing by default since gcc 4.4 has periodic
994 # issues that slip through the cracks. We could do this just for
995 # gcc 4.4 but it makes more sense to be consistent on all
996 # compilers in use. TODO(Craig): turn this off again when
997 # there is some 4.4 test infrastructure in place and existing
998 # aliasing issues have been fixed.
999 'no_strict_aliasing%': 1,
1000 'conditions': [['OS=="linux"', {'werror%': '-Werror',}],
1001 ['OS=="freebsd"', {'werror%': '',}],
1002 ['OS=="openbsd"', {'werror%': '',}],
1006 '<(werror)', # See note above about the werror variable.
1010 # TODO(evan): turn this back on once all the builds work.
1012 # Don't warn about unused function params. We use those everywhere.
1013 '-Wno-unused-parameter',
1014 # Don't warn about the "struct foo f = {0};" initialization pattern.
1015 '-Wno-missing-field-initializers',
1016 '-D_FILE_OFFSET_BITS=64',
1017 # Don't export any symbols (for example, to plugins we dlopen()).
1018 # Note: this is *required* to make some plugins work.
1019 '-fvisibility=hidden',
1024 '-fno-threadsafe-statics',
1025 # Make inline functions have hidden visiblity by default.
1026 # Surprisingly, not covered by -fvisibility=hidden.
1027 '-fvisibility-inlines-hidden',
1030 '-pthread', '-Wl,-z,noexecstack',
1035 'debug_optimize%': '0',
1041 '-O>(debug_optimize)',
1047 'release_optimize%': '2',
1048 # Binaries become big and gold is unable to perform GC
1049 # and remove unused sections for some of test targets
1050 # on 32 bit platform.
1051 # (This is currently observed only in chromeos valgrind bots)
1052 # The following flag is to disable --gc-sections linker
1053 # option for these bots.
1054 'no_gc_sections%': 0,
1057 '-O>(release_optimize)',
1058 # Don't emit the GCC version ident directives, they just end up
1059 # in the .comment section taking up binary size.
1061 # Put data and code in their own sections, so that unused symbols
1062 # can be removed at link time with --gc-sections.
1064 '-ffunction-sections',
1067 # Specifically tell the linker to perform optimizations.
1068 # See http://lwn.net/Articles/192624/ .
1073 ['no_gc_sections==0', {
1075 '-Wl,--gc-sections',
1085 '-fno-omit-frame-pointer',
1094 'cflags': ['-fprofile-arcs', '-ftest-coverage'],
1095 'ldflags': ['-fprofile-arcs'],
1098 'cflags': ['-pg', '-g'],
1106 [ 'target_arch=="ia32"', {
1108 # Needed so that libs with .s files (e.g. libicudata.a)
1109 # are compatible with the general 32-bit-ness.
1112 # All floating-point computations on x87 happens in 80-bit
1113 # precision. Because the C and C++ language standards allow
1114 # the compiler to keep the floating-point values in higher
1115 # precision than what's specified in the source and doing so
1116 # is more efficient than constantly rounding up to 64-bit or
1117 # 32-bit precision as specified in the source, the compiler,
1118 # especially in the optimized mode, tries very hard to keep
1119 # values in x87 floating-point stack (in 80-bit precision)
1120 # as long as possible. This has important side effects, that
1121 # the real value used in computation may change depending on
1122 # how the compiler did the optimization - that is, the value
1123 # kept in 80-bit is different than the value rounded down to
1124 # 64-bit or 32-bit. There are possible compiler options to make
1125 # this behavior consistent (e.g. -ffloat-store would keep all
1126 # floating-values in the memory, thus force them to be rounded
1127 # to its original precision) but they have significant runtime
1128 # performance penalty.
1130 # -mfpmath=sse -msse2 makes the compiler use SSE instructions
1131 # which keep floating-point values in SSE registers in its
1132 # native precision (32-bit for single precision, and 64-bit for
1133 # double precision values). This means the floating-point value
1134 # used during computation does not change depending on how the
1135 # compiler optimized the code, since the value is always kept
1136 # in its specified precision.
1138 ['branding=="Chromium" and disable_sse2==0', {
1145 # ChromeOS targets Pinetrail, which is sse3, but most of the
1146 # benefit comes from sse2 so this setting allows ChromeOS
1147 # to build on other CPUs. In the future -march=atom would help
1148 # but requires a newer compiler.
1149 ['chromeos==1 and disable_sse2==0', {
1154 # Install packages have started cropping up with
1155 # different headers between the 32-bit and 64-bit
1156 # versions, so we have to shadow those differences off
1157 # and make sure a 32-bit-on-64-bit build picks up the
1159 ['host_arch!="ia32"', {
1165 # -mmmx allows mmintrin.h to be used for mmx intrinsics.
1166 # video playback is mmx and sse2 optimized.
1175 ['target_arch=="arm"', {
1176 'target_conditions': [
1177 ['_toolset=="target"', {
1179 # The codesourcery arm-2009q3 toolchain warns at that the ABI
1180 # has changed whenever it encounters a varargs function. This
1181 # silences those warnings, as they are not helpful and
1182 # clutter legitimate warnings.
1186 ['arm_thumb == 1', {
1189 # TODO(piman): -Wa,-mimplicit-it=thumb is needed for
1190 # inline assembly that uses condition codes but it's
1191 # suboptimal. Better would be to #ifdef __thumb__ at the
1192 # right place and have a separate thumb path.
1193 '-Wa,-mimplicit-it=thumb',
1200 '-mfloat-abi=softfp',
1204 'cflags': [ '-mfpu=neon', ],
1206 'cflags': [ '-mfpu=<(arm_fpu)', ],
1220 'target_conditions': [
1221 ['_toolset=="target"', {
1223 '--sysroot=<(sysroot)',
1226 '--sysroot=<(sysroot)',
1231 'target_conditions': [
1232 ['_toolset=="target"', {
1234 # Clang spots more unused functions.
1235 '-Wno-unused-function',
1236 # Don't die on dtoa code that uses a char as an array index.
1237 '-Wno-char-subscripts',
1238 # Survive EXPECT_EQ(unnamed_enum, unsigned int) -- see
1239 # http://code.google.com/p/googletest/source/detail?r=446 .
1240 # TODO(thakis): Use -isystem instead (http://crbug.com/58751 )
1241 '-Wno-unnamed-type-template-args',
1244 # Clang doesn't seem to know know this flag.
1249 ['clang==1 and clang_use_chrome_plugins==1', {
1250 'target_conditions': [
1251 ['_toolset=="target"', {
1253 '<(clang_chrome_plugins_flags)',
1257 ['clang==1 and clang_load!="" and clang_add_plugin!=""', {
1258 'target_conditions': [
1259 ['_toolset=="target"', {
1261 '-Xclang', '-load', '-Xclang', '<(clang_load)',
1262 '-Xclang', '-add-plugin', '-Xclang', '<(clang_add_plugin)',
1266 ['no_strict_aliasing==1', {
1268 '-fno-strict-aliasing',
1271 ['linux_breakpad==1', {
1273 'defines': ['USE_LINUX_BREAKPAD'],
1275 ['library=="shared_library"', {
1276 # When building with shared libraries, remove the visiblity-hiding
1278 'cflags!': [ '-fvisibility=hidden' ],
1280 ['target_arch=="x64" or target_arch=="arm"', {
1281 # Shared libraries need -fPIC on x86-64 and arm
1286 # --as-needed confuses library interdependencies.
1287 # See http://code.google.com/p/chromium/issues/detail?id=61430
1291 ['linux_use_heapchecker==1', {
1292 'variables': {'linux_use_tcmalloc%': 1},
1294 ['linux_use_tcmalloc==0', {
1295 'defines': ['NO_TCMALLOC'],
1297 ['linux_use_heapchecker==0', {
1298 'defines': ['NO_HEAPCHECKER'],
1300 ['linux_keep_shadow_stacks==1', {
1301 'defines': ['KEEP_SHADOW_STACKS'],
1302 'cflags': ['-finstrument-functions'],
1307 # FreeBSD-specific options; note that most FreeBSD options are set above,
1310 'target_defaults': {
1312 '-Wl,--no-keep-memory',
1317 'cflags!': ['-fvisibility=hidden'],
1318 'cflags_cc!': ['-fvisibility-inlines-hidden'],
1321 'target_defaults': {
1323 # These should be 'mac_real_dsym%' and 'mac_strip%', but there
1324 # seems to be a bug with % in variables that are intended to be
1325 # set to different values in different targets, like these two.
1326 'mac_strip': 1, # Strip debugging symbols from the target.
1327 'mac_real_dsym': 0, # Fake .dSYMs are fine in most cases.
1331 'ALWAYS_SEARCH_USER_PATHS': 'NO',
1332 'GCC_C_LANGUAGE_STANDARD': 'c99', # -std=c99
1333 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
1334 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
1335 # (Equivalent to -fPIC)
1336 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
1337 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
1338 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
1339 # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
1340 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
1341 'GCC_OBJC_CALL_CXX_CDTORS': 'YES', # -fobjc-call-cxx-cdtors
1342 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
1343 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
1344 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES', # -Werror
1345 'GCC_VERSION': '4.2',
1346 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
1347 # MACOSX_DEPLOYMENT_TARGET maps to -mmacosx-version-min
1348 'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)',
1349 'PREBINDING': 'NO', # No -Wl,-prebind
1350 'USE_HEADERMAP': 'NO',
1355 # Don't warn about unused function parameters.
1356 '-Wno-unused-parameter',
1357 # Don't warn about the "struct foo f = {0};" initialization
1359 '-Wno-missing-field-initializers',
1362 ['chromium_mac_pch', {'GCC_PRECOMPILE_PREFIX_HEADER': 'YES'},
1363 {'GCC_PRECOMPILE_PREFIX_HEADER': 'NO'}
1367 # Don't die on dtoa code that uses a char as an array index.
1368 # This is required solely for base/third_party/dmg_fp/dtoa.cc.
1369 '-Wno-char-subscripts',
1370 # Clang spots more unused functions.
1371 '-Wno-unused-function',
1372 # Survive EXPECT_EQ(unnamed_enum, unsigned int) -- see
1373 # http://code.google.com/p/googletest/source/detail?r=446 .
1374 # TODO(thakis): Use -isystem instead (http://crbug.com/58751 ).
1375 '-Wno-unnamed-type-template-args',
1378 # TODO(thakis): Causes many warnings - http://crbug.com/75001
1379 '-fobjc-exceptions',
1382 ['clang==1 and clang_use_chrome_plugins==1', {
1384 '<(clang_chrome_plugins_flags)',
1387 ['clang==1 and clang_load!="" and clang_add_plugin!=""', {
1389 '-Xclang', '-load', '-Xclang', '<(clang_load)',
1390 '-Xclang', '-add-plugin', '-Xclang', '<(clang_add_plugin)',
1395 'target_conditions': [
1396 ['_type!="static_library"', {
1397 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
1400 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-ObjC']},
1402 ['(_type=="executable" or _type=="shared_library" or \
1403 _type=="loadable_module") and mac_strip!=0', {
1404 'target_conditions': [
1405 ['mac_real_dsym == 1', {
1406 # To get a real .dSYM bundle produced by dsymutil, set the
1407 # debug information format to dwarf-with-dsym. Since
1408 # strip_from_xcode will not be used, set Xcode to do the
1409 # stripping as well.
1413 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
1414 'DEPLOYMENT_POSTPROCESSING': 'YES',
1415 'STRIP_INSTALLED_PRODUCT': 'YES',
1416 'target_conditions': [
1417 ['_type=="shared_library" or _type=="loadable_module"', {
1418 # The Xcode default is to strip debugging symbols
1419 # only (-S). Local symbols should be stripped as
1420 # well, which will be handled by -x. Xcode will
1421 # continue to insert -S when stripping even when
1422 # additional flags are added with STRIPFLAGS.
1424 }], # _type=="shared_library" or _type=="loadable_module"'
1425 ], # target_conditions
1427 }, # configuration "Release"
1429 }, { # mac_real_dsym != 1
1430 # To get a fast fake .dSYM bundle, use a post-build step to
1431 # produce the .dSYM and strip the executable. strip_from_xcode
1432 # only operates in the Release configuration.
1436 # Define strip_from_xcode in a variable ending in _path
1437 # so that gyp understands it's a path and performs proper
1438 # relativization during dict merging.
1439 'strip_from_xcode_path': 'mac/strip_from_xcode',
1441 'postbuild_name': 'Strip If Needed',
1442 'action': ['<(strip_from_xcode_path)'],
1446 ], # target_conditions
1447 }], # (_type=="executable" or _type=="shared_library" or
1448 # _type=="loadable_module") and mac_strip!=0
1449 ], # target_conditions
1450 }, # target_defaults
1453 'target_defaults': {
1455 '_WIN32_WINNT=0x0600',
1461 'CERT_CHAIN_PARA_HAS_EXTRA_FIELDS',
1462 'WIN32_LEAN_AND_MEAN',
1467 ['component=="static_library"', {
1469 '_HAS_EXCEPTIONS=0',
1478 'msvs_system_include_dirs': [
1479 '<(DEPTH)/third_party/platformsdk_win7/files/Include',
1480 '<(DEPTH)/third_party/directxsdk/files/Include',
1481 '$(VSInstallDir)/VC/atlmfc/include',
1483 'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
1484 'msvs_disabled_warnings': [4351, 4396, 4503, 4819],
1486 'VCCLCompilerTool': {
1487 'MinimalRebuild': 'false',
1488 'BufferSecurityCheck': 'true',
1489 'EnableFunctionLevelLinking': 'true',
1490 'RuntimeTypeInfo': 'false',
1491 'WarningLevel': '3',
1492 'WarnAsError': 'true',
1493 'DebugInformationFormat': '3',
1495 ['msvs_multi_core_compile', {
1496 'AdditionalOptions': ['/MP'],
1498 ['MSVS_VERSION=="2005e"', {
1499 'AdditionalOptions': ['/w44068'], # Unknown pragma to 4 (ATL)
1501 ['component=="shared_library"', {
1502 'ExceptionHandling': '1', # /EHsc
1504 'ExceptionHandling': '0',
1508 'VCLibrarianTool': {
1509 'AdditionalOptions': ['/ignore:4221'],
1510 'AdditionalLibraryDirectories': [
1511 '<(DEPTH)/third_party/platformsdk_win7/files/Lib',
1512 '<(DEPTH)/third_party/directxsdk/files/Lib/x86',
1516 'AdditionalDependencies': [
1528 # Explicitly required when using the ATL with express
1529 'AdditionalDependencies': [
1533 ['MSVS_VERSION=="2005e"', {
1534 # Non-express versions link automatically to these
1535 'AdditionalDependencies': [
1545 'AdditionalLibraryDirectories': [
1546 '<(DEPTH)/third_party/platformsdk_win7/files/Lib',
1547 '<(DEPTH)/third_party/directxsdk/files/Lib/x86',
1549 'GenerateDebugInformation': 'true',
1550 'MapFileName': '$(OutDir)\\$(TargetName).map',
1551 'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib',
1552 'FixedBaseAddress': '1',
1555 # 1 == /SUBSYSTEM:CONSOLE
1556 # 2 == /SUBSYSTEM:WINDOWS
1557 # Most of the executables we'll ever create are tests
1558 # and utilities with console output.
1562 'GenerateStublessProxies': 'true',
1563 'TypeLibraryName': '$(InputName).tlb',
1564 'OutputDirectory': '$(IntDir)',
1565 'HeaderFileName': '$(InputName).h',
1566 'DLLDataFileName': 'dlldata.c',
1567 'InterfaceIdentifierFileName': '$(InputName)_i.c',
1568 'ProxyFileName': '$(InputName)_p.c',
1570 'VCResourceCompilerTool': {
1572 'AdditionalIncludeDirectories': [
1574 '<(SHARED_INTERMEDIATE_DIR)',
1580 ['disable_nacl==1 or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
1581 'target_defaults': {
1587 ['OS=="win" and msvs_use_common_linker_extras', {
1588 'target_defaults': {
1602 'AdditionalOptions': [
1615 'AdditionalOptions': [
1616 # safeseh is not compatible with x64
1628 ['enable_new_npdevice_api==1', {
1629 'target_defaults': {
1631 'ENABLE_NEW_NPDEVICE_API',
1637 # DON'T ADD ANYTHING NEW TO THIS BLOCK UNLESS YOU REALLY REALLY NEED IT!
1638 # This block adds *project-wide* configuration settings to each project
1639 # file. It's almost always wrong to put things here. Specify your
1640 # custom xcode_settings in target_defaults to add them to targets instead.
1642 # In an Xcode Project Info window, the "Base SDK for All Configurations"
1643 # setting sets the SDK on a project-wide basis. In order to get the
1644 # configured SDK to show properly in the Xcode UI, SDKROOT must be set
1645 # here at the project level.
1646 'SDKROOT': 'macosx<(mac_sdk)', # -isysroot
1648 # The Xcode generator will look for an xcode_settings section at the root
1649 # of each dict and use it to apply settings on a file-wide basis. Most
1650 # settings should not be here, they should be in target-specific
1651 # xcode_settings sections, or better yet, should use non-Xcode-specific
1652 # settings in target dicts. SYMROOT is a special case, because many other
1653 # Xcode variables depend on it, including variables such as
1654 # PROJECT_DERIVED_FILE_DIR. When a source group corresponding to something
1655 # like PROJECT_DERIVED_FILE_DIR is added to a project, in order for the
1656 # files to appear (when present) in the UI as actual files and not red
1657 # red "missing file" proxies, the correct path to PROJECT_DERIVED_FILE_DIR,
1658 # and therefore SYMROOT, needs to be set at the project level.
1659 'SYMROOT': '<(DEPTH)/xcodebuild',
1665 # indent-tabs-mode:nil
1667 # vim: set expandtab tabstop=2 shiftwidth=2: