| # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # IMPORTANT: |
| # Please don't directly include this file if you are building via gyp_cobalt, |
| # since gyp_cobalt is automatically forcing its inclusion. |
| { |
| # Variables expected to be overriden in the platform's gyp_configuration.gypi. |
| 'variables': { |
| # Putting a variables dict inside another variables dict looks kind of |
| # weird. This is done so that 'host_arch', 'android_build_type', etc are |
| # defined as variables within the outer variables dict here. This is |
| # necessary to get these variables defined for the conditions within this |
| # variables dict that operate on these variables. |
| 'variables': { |
| 'variables': { |
| 'variables': { |
| 'host_arch%': |
| '<!(uname -m | sed -e "s/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/ia32/")', |
| }, |
| |
| # Copy conditionally-set variables out one scope. |
| 'host_arch%': '<(host_arch)', |
| |
| # Default architecture we're building for is the architecture we're |
| # building on. |
| 'target_arch%': '<(host_arch)', |
| |
| # Sets whether we're building with the Android SDK/NDK (and hence with |
| # Ant, value 0), or as part of the Android system (and hence with the |
| # Android build system, value 1). |
| 'android_build_type%': 0, |
| }, |
| |
| # Copy conditionally-set variables out one scope. |
| 'host_arch%': '<(host_arch)', |
| 'target_arch%': '<(target_arch)', |
| 'android_build_type%': '<(android_build_type)', |
| |
| # Set to 1 to enable dcheck in release without having to use the flag. |
| 'dcheck_always_on%': 0, |
| |
| # Python version. |
| 'python_ver%': '2.6', |
| |
| # Set ARM-v7 compilation flags |
| 'armv7%': 0, |
| |
| # Set Neon compilation flags (only meaningful if armv7==1). |
| 'arm_neon%': 1, |
| |
| # The system root for cross-compiles. Default: none. |
| 'sysroot%': '', |
| |
| # Use system libjpeg. Note that the system's libjepg will be used even if |
| # use_libjpeg_turbo is set. |
| 'use_system_libjpeg%': 0, |
| |
| # Variable 'component' is for cases where we would like to build some |
| # components as dynamic shared libraries but still need variable |
| # 'library' for static libraries. |
| # By default, component is set to whatever library is set to and |
| # it can be overriden by the GYP command line or by ~/.gyp/include.gypi. |
| 'component%': 'static_library', |
| |
| # Enable building with ASAN (Clang's -fsanitize=address option). |
| # -fsanitize=address only works with clang, but asan=1 implies clang=1 |
| # See https://sites.google.com/a/chromium.org/dev/developers/testing/addresssanitizer |
| 'asan%': 0, |
| |
| # Enable building with TSAN (Clang's -fsanitize=thread option). |
| # -fsanitize=thread only works with clang, but tsan=1 implies clang=1 |
| # See http://clang.llvm.org/docs/ThreadSanitizer.html |
| 'tsan%': 0, |
| |
| # Use a modified version of Clang to intercept allocated types and sizes |
| # for allocated objects. clang_type_profiler=1 implies clang=1. |
| # See http://dev.chromium.org/developers/deep-memory-profiler/cpp-object-type-identifier |
| # TODO(dmikurube): Support mac. See http://crbug.com/123758#c11 |
| 'clang_type_profiler%': 0, |
| |
| # Set to true to instrument the code with function call logger. |
| # See src/third_party/cygprofile/cyg-profile.cc for details. |
| 'order_profiling%': 0, |
| |
| # Set this to true when building with Clang. |
| # See http://code.google.com/p/chromium/wiki/Clang for details. |
| 'clang%': 0, |
| |
| # Set to "tsan", "memcheck", or "drmemory" to configure the build to work |
| # with one of those tools. |
| 'build_for_tool%': '', |
| |
| 'os_posix%': 0, |
| 'os_bsd%': 0, |
| }, |
| |
| # Make sure that cobalt is defined. This is needed in |
| # the case where the code is built using Chromium stock |
| # build tools. |
| 'cobalt%': 0, |
| |
| # Copy conditionally-set variables out one scope. |
| 'target_arch%': '<(target_arch)', |
| 'host_arch%': '<(host_arch)', |
| 'library%': 'static_library', |
| 'os_bsd%': '<(os_bsd)', |
| 'os_posix%': '<(os_posix)', |
| 'dcheck_always_on%': '<(dcheck_always_on)', |
| 'python_ver%': '<(python_ver)', |
| 'armv7%': '<(armv7)', |
| 'arm_neon%': '<(arm_neon)', |
| 'sysroot%': '<(sysroot)', |
| 'component%': '<(component)', |
| 'asan%': '<(asan)', |
| 'tsan%': '<(tsan)', |
| 'clang_type_profiler%': '<(clang_type_profiler)', |
| 'order_profiling%': '<(order_profiling)', |
| 'use_system_libjpeg%': '<(use_system_libjpeg)', |
| 'android_build_type%': '<(android_build_type)', |
| |
| # Use system protobuf instead of bundled one. |
| 'use_system_protobuf%': 0, |
| |
| # TODO(sgk): eliminate this if possible. |
| # It would be nicer to support this via a setting in 'target_defaults' |
| # in chrome/app/locales/locales.gypi overriding the setting in the |
| # 'Debug' configuration in the 'target_defaults' dict below, |
| # but that doesn't work as we'd like. |
| 'msvs_debug_link_incremental%': '2', |
| |
| # Clang stuff. |
| 'clang%': '<(clang)', |
| 'make_clang_dir%': 'third_party/llvm-build/Release+Asserts', |
| |
| # These two variables can be set in GYP_DEFINES while running |
| # |gclient runhooks| to let clang run a plugin in every compilation. |
| # Only has an effect if 'clang=1' is in GYP_DEFINES as well. |
| # Example: |
| # GYP_DEFINES='clang=1 clang_load=/abs/path/to/libPrintFunctionNames.dylib clang_add_plugin=print-fns' gclient runhooks |
| |
| 'clang_load%': '', |
| 'clang_add_plugin%': '', |
| |
| # Enable sampling based profiler. |
| # See http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html |
| 'profiling%': '0', |
| |
| # Set Thumb compilation flags. |
| 'arm_thumb%': 0, |
| |
| # Set ARM fpu compilation flags (only meaningful if armv7==1 and |
| # arm_neon==0). |
| 'arm_fpu%': 'vfpv3', |
| |
| # Set ARM float abi compilation flag. |
| 'arm_float_abi%': 'softfp', |
| |
| # .gyp files or targets should set chromium_code to 1 if they build |
| # Chromium-specific code, as opposed to external code. This variable is |
| # used to control such things as the set of warnings to enable, and |
| # whether warnings are treated as errors. |
| 'chromium_code%': 0, |
| |
| 'release_valgrind_build%': 0, |
| |
| # TODO(thakis): Make this a blacklist instead, http://crbug.com/101600 |
| 'enable_wexit_time_destructors%': 0, |
| |
| # Native Client is enabled by default. |
| 'disable_nacl%': 0, |
| |
| # Sets the default version name and code for Android app, by default we |
| # do a developer build. |
| 'android_app_version_name%': 'Developer Build', |
| 'android_app_version_code%': 0, |
| |
| 'windows_sdk_path%': 'C:/Program Files (x86)/Windows Kits/10', |
| |
| 'conditions': [ |
| ['target_arch=="android"', { |
| # Location of Android NDK. |
| 'variables': { |
| 'variables': { |
| 'variables': { |
| 'android_ndk_root%': '<!(/bin/echo -n $ANDROID_NDK_ROOT)', |
| }, |
| 'android_ndk_root%': '<(android_ndk_root)', |
| 'conditions': [ |
| ['target_arch == "ia32"', { |
| 'android_app_abi%': 'x86', |
| 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-9/arch-x86', |
| }], |
| ['target_arch=="arm" or (OS=="lb_shell" and target_arch=="android")', { |
| 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-9/arch-arm', |
| 'conditions': [ |
| ['armv7==0', { |
| 'android_app_abi%': 'armeabi', |
| }, { |
| 'android_app_abi%': 'armeabi-v7a', |
| }], |
| ], |
| }], |
| ], |
| }, |
| 'android_ndk_root%': '<(android_ndk_root)', |
| 'android_app_abi%': '<(android_app_abi)', |
| 'android_ndk_sysroot%': '<(android_ndk_sysroot)', |
| }, |
| 'android_ndk_root%': '<(android_ndk_root)', |
| 'android_ndk_sysroot': '<(android_ndk_sysroot)', |
| 'android_ndk_include': '<(android_ndk_sysroot)/usr/include', |
| 'android_ndk_lib': '<(android_ndk_sysroot)/usr/lib', |
| 'android_app_abi%': '<(android_app_abi)', |
| |
| # Location of the "strip" binary, used by both gyp and scripts. |
| 'android_strip%' : '<!(/bin/echo -n <(android_toolchain)/*-strip)', |
| |
| # Provides an absolute path to PRODUCT_DIR (e.g. out/Release). Used |
| # to specify the output directory for Ant in the Android build. |
| 'ant_build_out': '`cd <(PRODUCT_DIR) && pwd -P`', |
| |
| # Disable Native Client. |
| 'disable_nacl%': 1, |
| |
| # When building as part of the Android system, use system libraries |
| # where possible to reduce ROM size. |
| # TODO(steveblock): Investigate using the system version of sqlite. |
| 'use_system_sqlite%': 0, # '<(android_build_type)', |
| 'use_system_icu%': '<(android_build_type)', |
| 'use_system_stlport%': '<(android_build_type)', |
| |
| # Copy it out one scope. |
| 'android_build_type%': '<(android_build_type)', |
| }], # target_arch=="android" |
| |
| ['asan==1 and OS!="win"', { |
| 'clang%': 1, |
| }], |
| ['tsan==1', { |
| 'clang%': 1, |
| }], |
| |
| # On valgrind bots, override the optimizer settings so we don't inline too |
| # much and make the stacks harder to figure out. |
| # |
| # TODO(rnk): Kill off variables that no one else uses and just implement |
| # them under a build_for_tool== condition. |
| ['build_for_tool=="memcheck" or build_for_tool=="tsan"', { |
| # gcc flags |
| 'mac_debug_optimization': '1', |
| 'mac_release_optimization': '1', |
| 'release_optimize': '1', |
| 'no_gc_sections': 1, |
| 'debug_extra_cflags': '-g -fno-inline -fno-omit-frame-pointer ' |
| '-fno-builtin -fno-optimize-sibling-calls', |
| 'release_extra_cflags': '-g -fno-inline -fno-omit-frame-pointer ' |
| '-fno-builtin -fno-optimize-sibling-calls', |
| |
| # MSVS flags for TSan on Pin and Windows. |
| 'win_debug_RuntimeChecks': '0', |
| 'win_debug_disable_iterator_debugging': '1', |
| 'win_debug_Optimization': '1', |
| 'win_debug_InlineFunctionExpansion': '0', |
| 'win_release_InlineFunctionExpansion': '0', |
| 'win_release_OmitFramePointers': '0', |
| |
| 'linux_use_tcmalloc': 1, |
| 'release_valgrind_build': 1, |
| 'werror': '', |
| 'component': 'static_library', |
| 'use_system_zlib': 0, |
| }], |
| |
| # Build tweaks for DrMemory. |
| # TODO(rnk): Combine with tsan config to share the builder. |
| # http://crbug.com/108155 |
| ['build_for_tool=="drmemory"', { |
| # These runtime checks force initialization of stack vars which blocks |
| # DrMemory's uninit detection. |
| 'win_debug_RuntimeChecks': '0', |
| # Iterator debugging is slow. |
| 'win_debug_disable_iterator_debugging': '1', |
| # Try to disable optimizations that mess up stacks in a release build. |
| # DrM-i#1054 (http://code.google.com/p/drmemory/issues/detail?id=1054) |
| # /O2 and /Ob0 (disable inline) cannot be used together because of a |
| # compiler bug, so we use /Ob1 instead. |
| 'win_release_InlineFunctionExpansion': '1', |
| 'win_release_OmitFramePointers': '0', |
| # Ditto for debug, to support bumping win_debug_Optimization. |
| 'win_debug_InlineFunctionExpansion': 0, |
| 'win_debug_OmitFramePointers': 0, |
| # Keep the code under #ifndef NVALGRIND. |
| 'release_valgrind_build': 1, |
| }], |
| ], |
| }, |
| 'target_defaults': { |
| 'variables': { |
| # The condition that operates on chromium_code is in a target_conditions |
| # section, and will not have access to the default fallback value of |
| # chromium_code at the top of this file, or to the chromium_code |
| # variable placed at the root variables scope of .gyp files, because |
| # those variables are not set at target scope. As a workaround, |
| # if chromium_code is not set at target scope, define it in target scope |
| # to contain whatever value it has during early variable expansion. |
| # That's enough to make it available during target conditional |
| # processing. |
| 'chromium_code%': '<(chromium_code)', |
| |
| # See http://msdn.microsoft.com/en-us/library/aa652360(VS.71).aspx |
| 'win_release_Optimization%': '2', # 2 = /Os |
| 'win_debug_Optimization%': '0', # 0 = /Od |
| |
| # See http://msdn.microsoft.com/en-us/library/2kxx5t2c(v=vs.80).aspx |
| # Tri-state: blank is default, 1 on, 0 off |
| 'win_release_OmitFramePointers%': '0', |
| # Tri-state: blank is default, 1 on, 0 off |
| 'win_debug_OmitFramePointers%': '', |
| |
| # See http://msdn.microsoft.com/en-us/library/8wtf2dfz(VS.71).aspx |
| 'win_debug_RuntimeChecks%': '3', # 3 = all checks enabled, 0 = off |
| |
| # See http://msdn.microsoft.com/en-us/library/47238hez(VS.71).aspx |
| 'win_debug_InlineFunctionExpansion%': '', # empty = default, 0 = off, |
| 'win_release_InlineFunctionExpansion%': '2', # 1 = only __inline, 2 = max |
| |
| # VS inserts quite a lot of extra checks to algorithms like |
| # std::partial_sort in Debug build which make them O(N^2) |
| # instead of O(N*logN). This is particularly slow under memory |
| # tools like ThreadSanitizer so we want it to be disablable. |
| # See http://msdn.microsoft.com/en-us/library/aa985982(v=VS.80).aspx |
| 'win_debug_disable_iterator_debugging%': '0', |
| |
| 'release_extra_cflags%': '', |
| 'debug_extra_cflags%': '', |
| |
| 'release_valgrind_build%': '<(release_valgrind_build)', |
| |
| # the non-qualified versions are widely assumed to be *nix-only |
| 'win_release_extra_cflags%': '', |
| 'win_debug_extra_cflags%': '', |
| |
| # TODO(thakis): Make this a blacklist instead, http://crbug.com/101600 |
| 'enable_wexit_time_destructors%': '<(enable_wexit_time_destructors)', |
| |
| # Only used by Windows build for now. Can be used to build into a |
| # differet output directory, e.g., a build_dir_prefix of VS2010_ would |
| # output files in src/build/VS2010_{Debug,Release}. |
| 'build_dir_prefix%': '', |
| |
| # Targets are by default not nacl untrusted code. |
| 'nacl_untrusted_build%': 0, |
| |
| 'pnacl_compile_flags': [ |
| # pnacl uses the clang compiler so we need to supress all the |
| # same warnings as we do for clang. |
| # TODO(sbc): Remove these if/when they are removed from the clang |
| # build. |
| '-Wno-unused-function', |
| '-Wno-char-subscripts', |
| '-Wno-c++11-extensions', |
| '-Wno-unnamed-type-template-args', |
| ], |
| |
| # See http://msdn.microsoft.com/en-us/library/aa652367.aspx |
| 'win_release_RuntimeLibrary%': '0', # 0 = /MT (nondebug static) |
| 'win_debug_RuntimeLibrary%': '1', # 1 = /MTd (debug static) |
| |
| # See http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html |
| 'mac_release_optimization%': '3', # Use -O3 unless overridden |
| 'mac_debug_optimization%': '0', # Use -O0 unless overridden |
| }, |
| 'defines': [ |
| 'USE_OPENSSL=1', |
| ], |
| 'conditions': [ |
| ['component=="shared_library"', { |
| 'defines': ['COMPONENT_BUILD'], |
| }], |
| ['profiling==1', { |
| 'defines': ['ENABLE_PROFILING=1'], |
| }], |
| ['dcheck_always_on!=0', { |
| 'defines': ['DCHECK_ALWAYS_ON=1'], |
| }], # dcheck_always_on!=0 |
| ], # conditions for 'target_defaults' |
| 'target_conditions': [ |
| ['enable_wexit_time_destructors==1', { |
| 'conditions': [ |
| [ 'clang==1', { |
| 'cflags': [ |
| '-Wexit-time-destructors', |
| ], |
| 'xcode_settings': { |
| 'WARNING_CFLAGS': [ |
| '-Wexit-time-destructors', |
| ], |
| }, |
| }], |
| ], |
| }], |
| ['chromium_code!=0', { |
| 'includes': [ |
| # Rules for excluding e.g. foo_win.cc from the build on non-Windows. |
| 'filename_rules.gypi', |
| ], |
| # In Chromium code, we define __STDC_foo_MACROS in order to get the |
| # C99 macros on Mac and Linux. |
| 'defines': [ |
| '__STDC_CONSTANT_MACROS', |
| '__STDC_FORMAT_MACROS', |
| ], |
| 'conditions': [ |
| ['(OS == "win" or target_arch=="xb1") and component=="shared_library"', { |
| 'msvs_disabled_warnings': [ |
| 4251, # class 'std::xx' needs to have dll-interface. |
| ], |
| }], |
| ], |
| }], |
| ], # target_conditions for 'target_defaults' |
| }, |
| } |