Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2380)

Unified Diff: build/common.gypi

Issue 1124763003: Update from https://crrev.com/327068 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: update nacl, buildtools, fix display_change_notifier_unittest Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: build/common.gypi
diff --git a/build/common.gypi b/build/common.gypi
index e900cc4a6e72266d3c29f75608c6981acf567e28..c5a8facb9e1122e7fce09a5cdfaca06c486d7047 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -70,7 +70,10 @@
# certificates, use_openssl_certs must be set.
'use_openssl%': 0,
- # Typedef X509Certificate::OSCertHandle to OpenSSL's struct X509*.
+ # Use OpenSSL for representing certificates. When targeting Android,
+ # the platform certificate library is used for certificate
+ # verification. On other targets, this flag also enables OpenSSL for
+ # certificate verification, but this configuration is unsupported.
'use_openssl_certs%': 0,
# Disable viewport meta tag by default.
@@ -146,6 +149,7 @@
'enable_hidpi%': '<(enable_hidpi)',
'buildtype%': '<(buildtype)',
'branding%': '<(branding)',
+ 'branding_path_component%': '<(branding)',
'host_arch%': '<(host_arch)',
'target_arch%': '<(target_arch)',
@@ -155,12 +159,6 @@
# default. "default" should be used on non-official builds.
'android_channel%': 'default',
- # This is set when building the Android WebView inside the Android
- # build system, using the 'android' gyp backend. The WebView code is
- # still built when this is unset, but builds using the normal chromium
- # build system.
- 'android_webview_build%': 0,
-
# Set ARM architecture version.
'arm_version%': 7,
@@ -191,6 +189,14 @@
'mips_dsp_rev%': 0,
'conditions': [
+ ['branding == "Chrome"', {
+ 'branding_path_component%': 'google_chrome',
+ }],
+
+ ['branding == "Chromium"', {
+ 'branding_path_component%': 'chromium',
+ }],
+
# Ash needs Aura.
['use_aura==0', {
'use_ash%': 0,
@@ -248,14 +254,8 @@
# Set the default "target_subarch" on iOS. Valid values are "arm32",
# "arm64" and "both" (meaning a fat binary).
- #
- # TODO(sdefresne): change the default from "arm32" to "both" for
- # "target_subarch" once http://crbug.com/339477 is fixed.
- #
- # TODO(sdefresne): set the "target_arch" to "arm" once compilation
- # of skia has been fixed for simulator. http://crbug.com/342377
['OS=="ios"', {
- 'target_subarch%': 'arm32',
+ 'target_subarch%': 'arm64',
}],
# Set arch variants for MIPS platforms.
@@ -298,13 +298,13 @@
'enable_viewport%': '<(enable_viewport)',
'enable_hidpi%': '<(enable_hidpi)',
'android_channel%': '<(android_channel)',
- 'android_webview_build%': '<(android_webview_build)',
'use_goma%': '<(use_goma)',
'gomadir%': '<(gomadir)',
'enable_app_list%': '<(enable_app_list)',
'use_default_render_theme%': '<(use_default_render_theme)',
'buildtype%': '<(buildtype)',
'branding%': '<(branding)',
+ 'branding_path_component%': '<(branding_path_component)',
'arm_version%': '<(arm_version)',
'sysroot%': '<(sysroot)',
'chroot_cmd%': '<(chroot_cmd)',
@@ -633,14 +633,23 @@
# compiler. Always do this by default.
'host_clang%': 1,
- # Variables to control Link-Time Optimizations (LTO).
- # Note: the variables must *not* be enabled at the same time.
- # In this case LTO would 'merge' the optimization flags
- # at link-time which would lead to all code be optimized with -O2.
- # Enable LTO on the code compiled with -Os.
- # See crbug.com/407544
+ # Variables to control Link-Time Optimization (LTO).
+ # On Android, the variable use_lto enables LTO on code compiled with -Os,
+ # and use_lto_o2 enables LTO on code compiled with -O2. On other
+ # platforms, use_lto enables LTO in all translation units, and use_lto_o2
+ # has no effect.
+ #
+ # On Linux and Android, when using LLVM LTO, the script
+ # build/download_gold_plugin.py must be run to download a linker plugin.
+ # On Mac, LLVM needs to be built from scratch using
+ # tools/clang/scripts/update.py and the absolute path to
+ # third_party/llvm-build/Release+Asserts/lib must be added to
+ # $DYLD_LIBRARY_PATH to pick up the right version of the linker plugin.
+ #
+ # On Android, the variables must *not* be enabled at the same time.
+ # In this case LTO would 'merge' the optimization flags at link-time
+ # which would lead to all code be optimized with -O2. See crbug.com/407544
'use_lto%': 0,
- # Enable LTO on code compiled with -O2.
'use_lto_o2%': 0,
# Allowed level of identical code folding in the gold linker.
@@ -653,9 +662,22 @@
# See http://clang.llvm.org/docs/ControlFlowIntegrity.html
'cfi_vptr%': 0,
+ # Control Flow Integrity for casts.
+ # See http://clang.llvm.org/docs/ControlFlowIntegrity.html
+ 'cfi_derived_cast%': 0,
+ 'cfi_unrelated_cast%': 0,
+
+ 'cfi_blacklist%': '<(PRODUCT_DIR)/../../tools/cfi/blacklist.txt',
+
# Whether the entire browser uses toolkit-views on Mac instead of Cocoa.
'mac_views_browser%': 0,
+ # By default, use ICU data file (icudtl.dat).
+ 'icu_use_data_file_flag%': 1,
+
+ # Turn on JNI generation optimizations by default.
+ 'optimize_jni_generation%': 1,
+
'conditions': [
# A flag for POSIX platforms
['OS=="win"', {
@@ -672,18 +694,10 @@
}],
# NSS usage.
- ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris") and use_openssl==0', {
- 'use_nss%': 1,
- }, {
- 'use_nss%': 0,
- }],
-
- # When OpenSSL is used for SSL and crypto on Unix-like systems, use
- # OpenSSL's certificate definition.
- ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris") and use_openssl==1', {
- 'use_openssl_certs%': 1,
+ ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris")', {
+ 'use_nss_certs%': 1,
}, {
- 'use_openssl_certs%': 0,
+ 'use_nss_certs%': 0,
}],
# libudev usage. This currently only affects the content layer.
@@ -786,8 +800,8 @@
'native_memory_pressure_signals%': 1,
}],
- # Enable autofill dialog for Android, Mac and Views-enabled platforms.
- ['toolkit_views==1 or (OS=="android" and android_webview_build==0) or OS=="mac"', {
+ # Enable autofill dialog when not on iOS.
+ ['OS!="ios"', {
'enable_autofill_dialog%': 1,
'conditions': [
@@ -852,7 +866,7 @@
# are using a custom toolchain and need to control -B in ldflags.
# Do not use 32-bit gold on 32-bit hosts as it runs out address space
# for component=static_library builds.
- ['OS=="linux" and (target_arch=="x64" or target_arch=="arm")', {
+ ['(OS=="linux" or OS=="android") and (target_arch=="x64" or target_arch=="arm")', {
'linux_use_bundled_gold%': 1,
}, {
'linux_use_bundled_gold%': 0,
@@ -901,7 +915,7 @@
#
# On Aura, this allows per-tile painting to be used in the browser
# compositor.
- ['OS!="android"', {
+ ['OS!="android" and OS!="ios"', {
'use_canvas_skia%': 1,
}],
@@ -986,15 +1000,6 @@
'enable_print_preview%': 0,
}],
- # By default, use ICU data file (icudtl.dat) on all platforms
- # except when building Android WebView.
- # TODO(jshin): Handle 'use_system_icu' on Linux (Chromium).
- # Set the data reduction proxy origin for Android Webview.
- ['android_webview_build==0', {
- 'icu_use_data_file_flag%' : 1,
- }, {
- 'icu_use_data_file_flag%' : 0,
- }],
['OS=="win" or OS=="mac"', {
'enable_wifi_bootstrapping%' : 1,
}],
@@ -1006,23 +1011,12 @@
}, {
'sas_dll_path%': '<(DEPTH)/third_party/platformsdk_win7/files/redist/x86',
}],
-
- # Turn on JNI generation optimizations on non-WebView builds.
- ['OS=="android" and android_webview_build==0', {
- 'optimize_jni_generation%': 1,
- }, {
- 'optimize_jni_generation%': 0,
- }],
-
- # TODO(rmcilroy): Enable v8_use_external_startup_data on ChromeOS
- # http://crbug.com/421063
- ['android_webview_build==0 and chromecast==0 and chromeos==0 and OS!="ios"', {
- 'v8_use_external_startup_data%': 1,
- }, {
- 'v8_use_external_startup_data%': 0,
- }],
],
+ # Setting this to '0' will cause V8's startup snapshot to be
+ # embedded in the binary instead of being a external files.
+ 'v8_use_external_startup_data%': 1,
+
# Set this to 1 to enable use of concatenated impulse responses
# for the HRTF panner in WebAudio.
'use_concatenated_impulse_responses': 1,
@@ -1073,10 +1067,16 @@
'google_default_client_secret%': '',
# 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%': 1,
},
# Copy conditionally-set variables out one scope.
'branding%': '<(branding)',
+ 'branding_path_component%': '<(branding_path_component)',
'buildtype%': '<(buildtype)',
'target_arch%': '<(target_arch)',
'target_subarch%': '<(target_subarch)',
@@ -1091,7 +1091,7 @@
'use_libpci%': '<(use_libpci)',
'use_openssl%': '<(use_openssl)',
'use_openssl_certs%': '<(use_openssl_certs)',
- 'use_nss%': '<(use_nss)',
+ 'use_nss_certs%': '<(use_nss_certs)',
'use_udev%': '<(use_udev)',
'os_bsd%': '<(os_bsd)',
'os_posix%': '<(os_posix)',
@@ -1196,7 +1196,6 @@
'use_libjpeg_turbo%': '<(use_libjpeg_turbo)',
'use_system_libjpeg%': '<(use_system_libjpeg)',
'android_channel%': '<(android_channel)',
- 'android_webview_build%': '<(android_webview_build)',
'icu_use_data_file_flag%': '<(icu_use_data_file_flag)',
'gyp_managed_install%': 0,
'create_standalone_apk%': 1,
@@ -1224,7 +1223,12 @@
'video_hole%': '<(video_hole)',
'v8_use_external_startup_data%': '<(v8_use_external_startup_data)',
'cfi_vptr%': '<(cfi_vptr)',
+ 'cfi_derived_cast%': '<(cfi_derived_cast)',
+ 'cfi_unrelated_cast%': '<(cfi_unrelated_cast)',
+ 'cfi_blacklist%': '<(cfi_blacklist)',
'mac_views_browser%': '<(mac_views_browser)',
+ 'android_app_version_name%': '<(android_app_version_name)',
+ 'android_app_version_code%': '<(android_app_version_code)',
# Use system protobuf instead of bundled one.
'use_system_protobuf%': 0,
@@ -1417,7 +1421,7 @@
# Pseudo locales are special locales which are used for testing and
# debugging. They don't get copied to the final app. For more info,
- # check out https://sites.google.com/a/chromium.org/dev/Home/fake-bidi
+ # check out https://www.chromium.org/developers/testing/fake-bidi
'pseudo_locales': [
'fake-bidi',
],
@@ -1456,11 +1460,6 @@
# we can build a debug version with acceptable size and performance.
'android_full_debug%': 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%': 1,
-
# Contains data about the attached devices for gyp_managed_install.
'build_device_config_path': '<(PRODUCT_DIR)/build_devices.cfg',
@@ -1503,6 +1502,7 @@
# Ozone platforms to include in the build.
'ozone_platform_caca%': 0,
+ 'ozone_platform_cast%': 0,
'ozone_platform_dri%': 0,
'ozone_platform_drm%': 0,
'ozone_platform_egltest%': 0,
@@ -1564,18 +1564,11 @@
# it takes effect here.
['os_posix==1 and OS!="mac" and OS!="ios" and clang==0 and asan==0 and lsan==0 and tsan==0 and msan==0 and ubsan_vptr==0', {
'conditions': [
- ['OS=="android" and android_webview_build==0', {
+ ['OS=="android"', {
'host_gcc_version%': '<!pymod_do_main(compiler_version host compiler)',
# We directly set the gcc version since we know what we use.
'gcc_version%': 49,
- }],
- ['OS=="android" and android_webview_build==1', {
- # Android WebView uses a hermetic clang toolchain for host builds.
- 'host_gcc_version%': 0,
- # Android WebView uses the GCC toolchain from the Android build.
- 'gcc_version%': 48,
- }],
- ['OS!="android"', {
+ }, {
'host_gcc_version%': '<!pymod_do_main(compiler_version host compiler)',
'gcc_version%': '<!pymod_do_main(compiler_version target compiler)',
}],
@@ -1817,13 +1810,6 @@
# Uses system APIs for decoding audio and video.
'use_libffmpeg%': '0',
-
- # TODO(torne): Remove this unsupported option once all the places that
- # test it have been updated.
- 'use_system_stlport%': 0,
-
- # Copy it out one scope.
- 'android_webview_build%': '<(android_webview_build)',
}], # OS=="android"
['embedded==1', {
'use_system_fontconfig%': 0,
@@ -1844,10 +1830,8 @@
}],
],
}],
- ['android_webview_build==1', {
- # When building the WebView in the Android tree, jarjar will remap all
- # the class names, so the JNI generator needs to know this.
- 'jni_generator_jarjar_file': '../android_webview/build/jarjar-rules.txt',
+ ['chromecast==1 and OS!="android"', {
+ 'ozone_platform_cast%': 1
}],
['OS=="linux" and target_arch!="mipsel"', {
'clang%': 1,
@@ -2052,8 +2036,8 @@
['use_ash==1', {
'grit_defines': ['-D', 'use_ash'],
}],
- ['use_nss==1', {
- 'grit_defines': ['-D', 'use_nss'],
+ ['use_nss_certs==1', {
+ 'grit_defines': ['-D', 'use_nss_certs'],
}],
['use_ozone==1', {
'grit_defines': ['-D', 'use_ozone'],
@@ -2080,11 +2064,6 @@
'-E', 'ANDROID_JAVA_TAGGED_ONLY=true',
'--no-output-all-resource-defines',
],
- 'conditions': [
- ['<(android_webview_build)==1', {
- 'grit_defines': ['-D', 'is_android_webview_build'],
- }],
- ],
}],
['OS=="mac" or OS=="ios"', {
'grit_defines': ['-D', 'scale_factors=2x'],
@@ -2175,20 +2154,31 @@
'grit_defines': ['-D', 'enable_service_discovery'],
'enable_service_discovery%': 1
}],
- ['clang_use_chrome_plugins==1 and OS!="win"', {
+ ['clang_use_chrome_plugins==1', {
'variables': {
'conditions': [
- ['OS=="mac" or OS=="ios"', {
- 'clang_lib_path%': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.dylib',
- }, { # OS != "mac" or OS != "ios"
- 'clang_lib_path%': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so',
- }],
+ ['OS!="win"', {
+ 'variables': {
+ 'conditions': [
+ ['OS=="mac" or OS=="ios"', {
+ 'clang_lib_path%': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.dylib',
+ }, { # OS != "mac" or OS != "ios"
+ 'clang_lib_path%': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so',
+ }],
+ ],
+ },
+ 'clang_dynlib_flags%': '-Xclang -load -Xclang <(clang_lib_path) ',
+ }, { # OS == "win"
+ # On Windows, the plugin is built directly into clang, so there's
+ # no need to load it dynamically.
+ 'clang_dynlib_flags%': '',
+ }]
],
},
# If you change these, also change build/config/clang/BUILD.gn.
'clang_chrome_plugins_flags%':
- '-Xclang -load -Xclang <(clang_lib_path)'
- ' -Xclang -add-plugin -Xclang find-bad-constructs',
+ '<(clang_dynlib_flags)'
+ '-Xclang -add-plugin -Xclang find-bad-constructs',
}],
['asan==1 or msan==1 or lsan==1 or tsan==1', {
'clang%': 1,
@@ -2241,9 +2231,9 @@
}],
['OS=="win"', {
- # The Clang plugins don't currently work on Windows.
+ # The Blink GC plugin doesn't currently work on Windows.
# TODO(hans): One day, this will work. (crbug.com/82385)
- 'clang_use_chrome_plugins%': 0,
+ 'blink_gc_plugin%': 0,
}],
# On valgrind bots, override the optimizer settings so we don't inline too
@@ -2305,14 +2295,14 @@
}],
# Set default compiler flags depending on ARM version.
- ['arm_version==6 and android_webview_build==0', {
+ ['arm_version==6', {
'arm_arch%': 'armv6',
'arm_tune%': '',
'arm_fpu%': 'vfp',
'arm_float_abi%': 'softfp',
'arm_thumb%': 0,
}],
- ['arm_version==7 and android_webview_build==0', {
+ ['arm_version==7', {
'arm_arch%': 'armv7-a',
'arm_tune%': 'generic-armv7-a',
'conditions': [
@@ -2328,24 +2318,13 @@
}],
# Set default compiler flags for MIPS floating-point support.
- ['target_arch=="mipsel" and android_webview_build==0', {
+ ['target_arch=="mipsel"', {
'mips_float_abi%': 'hard',
}],
- ['target_arch=="mipsel" and mips_arch_variant=="r2" and android_webview_build==0', {
+ ['target_arch=="mipsel" and mips_arch_variant=="r2"', {
'mips_fpu_mode%': 'fp32',
}],
- ['android_webview_build==1', {
- # The WebView build gets its cpu-specific flags from the Android build system.
- 'arm_arch%': '',
- 'arm_tune%': '',
- 'arm_fpu%': '',
- 'arm_float_abi%': '',
- 'arm_thumb%': 0,
- 'mips_float_abi%': '',
- 'mips_fpu_mode%': '',
- }],
-
# Enable brlapi by default for chromeos.
[ 'chromeos==1', {
'use_brlapi%': 1,
@@ -2403,7 +2382,7 @@
'use_seccomp_bpf%': 0,
}],
- ['cfi_vptr==1', {
+ ['cfi_vptr==1 or cfi_derived_cast==1 or cfi_unrelated_cast==1', {
'use_lto%': 1,
}],
],
@@ -2702,6 +2681,9 @@
['enable_webrtc==1', {
'defines': ['ENABLE_WEBRTC=1'],
}],
+ ['enable_media_router==1', {
+ 'defines': ['ENABLE_MEDIA_ROUTER=1'],
+ }],
['proprietary_codecs==1', {
'defines': ['USE_PROPRIETARY_CODECS'],
'conditions': [
@@ -3012,6 +2994,27 @@
['v8_use_external_startup_data==1', {
'defines': ['V8_USE_EXTERNAL_STARTUP_DATA'],
}],
+
+ # SAFE_BROWSING_SERVICE - browser manages a safe-browsing service.
+ # SAFE_BROWSING_DB_LOCAL - service manages a local database.
+ # SAFE_BROWSING_DB_REMOTE - service talks via API to a database
+ # SAFE_BROWSING_CSD - enable client-side phishing detection.
+ ['safe_browsing==1', {
+ # TODO(nparker): Remove existing uses of FULL_SAFE_BROWSING
+ 'defines': [
+ 'FULL_SAFE_BROWSING',
+ 'SAFE_BROWSING_CSD',
+ 'SAFE_BROWSING_DB_LOCAL',
+ 'SAFE_BROWSING_SERVICE',
+ ],
+ }],
+ ['safe_browsing==2', {
+ 'defines': [
+ # TODO(nparker): Remove existing uses of MOBILE_SAFE_BROWSING
+ 'MOBILE_SAFE_BROWSING',
+ 'SAFE_BROWSING_SERVICE',
+ ],
+ }],
], # conditions for 'target_defaults'
'target_conditions': [
['<(use_libpci)==1', {
@@ -3032,8 +3035,8 @@
['<(use_glib)==1 and >(nacl_untrusted_build)==0', {
'defines': ['USE_GLIB=1'],
}],
- ['<(use_nss)==1 and >(nacl_untrusted_build)==0', {
- 'defines': ['USE_NSS=1'],
+ ['<(use_nss_certs)==1 and >(nacl_untrusted_build)==0', {
+ 'defines': ['USE_NSS_CERTS=1'],
}],
['<(chromeos)==1 and >(nacl_untrusted_build)==0', {
'defines': ['OS_CHROMEOS=1'],
@@ -3603,8 +3606,6 @@
'-pthread',
'-fno-strict-aliasing', # See http://crbug.com/32204
'-Wall',
- # TODO(evan): turn this back on once all the builds work.
- # '-Wextra',
# Don't warn about unused function params. We use those everywhere.
'-Wno-unused-parameter',
# Don't warn about the "struct foo f = {0};" initialization pattern.
@@ -3676,6 +3677,12 @@
'-fomit-frame-pointer',
],
}],
+ ['OS!="android"', {
+ 'defines': [
+ '_LARGEFILE_SOURCE',
+ '_LARGEFILE64_SOURCE',
+ ],
+ }],
['OS=="linux" and target_arch=="ia32"', {
'ldflags': [
'-Wl,--no-as-needed',
@@ -4025,6 +4032,8 @@
'-no-integrated-as',
'-B<(android_toolchain)', # Else /usr/bin/as gets picked up.
],
+ }],
+ ['clang==1 and linux_use_bundled_gold==0', {
'ldflags': [
# Let clang find the ld.gold in the NDK.
'--gcc-toolchain=<(android_toolchain)/..',
@@ -4076,10 +4085,6 @@
'cflags!': [
'-fstack-protector', # stack protector is always enabled on arm64.
],
- }],
- # TODO: Remove webview test once webview fully compiles from
- # Chromium. crbug.com/440793
- ['OS=="android" and android_webview_build==0', {
'ldflags': [
'-fuse-ld=gold',
],
@@ -4092,38 +4097,74 @@
'target_conditions': [
['_toolset=="target"', {
'conditions': [
- ['android_webview_build==0', {
+ ['mips_arch_variant=="r6"', {
'conditions': [
- ['mips_arch_variant=="r6"', {
- 'cflags': ['-mips32r6', '-Wa,-mips32r6'],
- 'conditions': [
+ ['clang==1', {
+ 'cflags': [ '-target mipsel-linux-gnu', '-march=mips32r6', ],
+ 'ldflags': [ '-target mipsel-linux-gnu', ],
+ }, { # clang==0
+ 'cflags': ['-mips32r6', '-Wa,-mips32r6', ],
+ }],
+ ['clang==0 and OS=="android"', {
+ 'ldflags': ['-mips32r6', '-Wl,-melf32ltsmip',],
+ }],
+ ],
+ }],
+ ['mips_arch_variant=="r2"', {
+ 'conditions': [
+ ['mips_float_abi=="hard" and mips_fpu_mode!=""', {
+ 'cflags': ['-m<(mips_fpu_mode)'],
+ }],
+ ['clang==1', {
+ 'conditions': [
['OS=="android"', {
- 'ldflags': ['-mips32r6', '-Wl,-melf32ltsmip',],
+ 'cflags': [ '-target mipsel-linux-android', '-march=mipsel', '-mcpu=mips32r2'],
+ 'ldflags': [ '-target mipsel-linux-android', ],
}],
- ],
+ ],
+ }, { # clang==0
+ 'cflags': ['-mips32r2', '-Wa,-mips32r2', ],
}],
- ['mips_arch_variant=="r2"', {
- 'cflags': ['-mips32r2', '-Wa,-mips32r2'],
+ ],
+ }],
+ ['mips_arch_variant=="r1"', {
+ 'conditions': [
+ ['clang==1', {
'conditions': [
- ['mips_float_abi=="hard" and mips_fpu_mode!=""', {
- 'cflags': ['-m<(mips_fpu_mode)'],
+ ['OS=="android"', {
+ 'cflags': [ '-target mipsel-linux-android', '-march=mipsel', '-mcpu=mips32'],
+ 'ldflags': [ '-target mipsel-linux-android', ],
}],
],
+ }, { # clang==0
+ 'cflags': ['-mips32', '-Wa,-mips32', ],
}],
- ['mips_arch_variant=="r1"', {
- 'cflags': ['-mips32', '-Wa,-mips32'],
- }],
- ['mips_dsp_rev==1', {
- 'cflags': ['-mdsp'],
- }],
- ['mips_dsp_rev==2', {
- 'cflags': ['-mdspr2'],
- }],
+ ],
+ }],
+ ['clang==1', {
+ 'cflags!': [
+ # Clang does not support the following options.
+ '-finline-limit=64',
],
'cflags': [
- '-m<(mips_float_abi)-float'
+ # TODO(gordanac) Enable integrated-as.
+ '-no-integrated-as',
+ '-B<(android_toolchain)', # Else /usr/bin/as gets picked up.
+ ],
+ 'ldflags': [
+ # Let clang find the ld in the NDK.
+ '--gcc-toolchain=<(android_toolchain)/..',
],
}],
+ ['mips_dsp_rev==1', {
+ 'cflags': ['-mdsp'],
+ }],
+ ['mips_dsp_rev==2', {
+ 'cflags': ['-mdspr2'],
+ }],
+ ],
+ 'cflags': [
+ '-m<(mips_float_abi)-float'
],
'ldflags': [
'-Wl,--no-keep-memory'
@@ -4138,17 +4179,13 @@
'target_conditions': [
['_toolset=="target"', {
'conditions': [
- ['android_webview_build==0', {
- 'conditions': [
- ['mips_arch_variant=="r6"', {
- 'cflags': ['-mips64r6', '-Wa,-mips64r6'],
- 'ldflags': ['-mips64r6'],
- }],
- ['mips_arch_variant=="r2"', {
- 'cflags': ['-mips64r2', '-Wa,-mips64r2'],
- 'ldflags': ['-mips64r2'],
- }],
- ],
+ ['mips_arch_variant=="r6"', {
+ 'cflags': ['-mips64r6', '-Wa,-mips64r6'],
+ 'ldflags': ['-mips64r6'],
+ }],
+ ['mips_arch_variant=="r2"', {
+ 'cflags': ['-mips64r2', '-Wa,-mips64r2'],
+ 'ldflags': ['-mips64r2'],
}],
],
'cflags_cc': [
@@ -4517,11 +4554,16 @@
'-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)',
],
}],
- ['linux_use_bundled_gold==1', {
+ ['linux_use_bundled_gold==1 and '
+ 'not (clang==0 and (use_lto==1 or use_lto_o2==1))', {
# Put our binutils, which contains gold in the search path. We pass
# the path to gold to the compiler. gyp leaves unspecified what the
# cwd is when running the compiler, so the normal gyp path-munging
# fails us. This hack gets the right path.
+ #
+ # Disabled when using GCC LTO because GCC also uses the -B search
+ # path at link time to find "as", and our bundled "as" can only
+ # target x86.
'ldflags': [
'-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)',
],
@@ -4668,8 +4710,13 @@
'-fstack-protector',
'-fno-short-enums',
'-finline-limit=64',
- '-Wa,--noexecstack',
'<@(release_extra_cflags)',
+ '--sysroot=<(android_ndk_sysroot)',
+ # NOTE: The stlport header include paths below are specified in
+ # cflags rather than include_dirs because they need to come
+ # after include_dirs.
+ # The include ordering here is important; change with caution.
+ '-isystem<(android_stlport_include)',
],
'defines': [
'ANDROID',
@@ -4677,15 +4724,43 @@
'USE_STLPORT=1',
'_STLP_USE_PTR_SPECIALIZATIONS=1',
'CHROME_BUILD_ID="<(chrome_build_id)"',
+ # The NDK has these things, but doesn't define the constants
+ # to say that it does. Define them here instead.
+ 'HAVE_SYS_UIO_H',
],
'ldflags!': [
'-pthread', # Not supported by Android toolchain.
],
'ldflags': [
'-Wl,--no-undefined',
+ '--sysroot=<(android_ndk_sysroot)',
+ '-nostdlib',
+ '-L<(android_stlport_libs_dir)',
+ # Don't allow visible symbols from libgcc or stlport to be
+ # re-exported.
+ '-Wl,--exclude-libs=libgcc.a',
+ '-Wl,--exclude-libs=libstlport_static.a',
+ # Don't allow visible symbols from libraries that contain
+ # assembly code with symbols that aren't hidden properly.
+ # http://crbug.com/448386
+ '-Wl,--exclude-libs=libcommon_audio.a',
+ '-Wl,--exclude-libs=libcommon_audio_neon.a',
+ '-Wl,--exclude-libs=libcommon_audio_sse2.a',
+ '-Wl,--exclude-libs=libiSACFix.a',
+ '-Wl,--exclude-libs=libisac_neon.a',
+ '-Wl,--exclude-libs=libopus.a',
+ '-Wl,--exclude-libs=libvpx.a',
+ ],
+ 'libraries': [
+ '-l<(android_stlport_library)',
+ # Manually link the libgcc.a that the cross compiler uses.
+ '<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)',
+ '-lc',
+ '-ldl',
+ '-lm',
],
'conditions': [
- ['component=="static_library" and android_webview_build==0', {
+ ['component=="static_library"', {
'target_conditions': [
['use_native_jni_exports==0', {
# Use a linker version script to strip JNI exports from
@@ -4741,112 +4816,12 @@
'-mllvm -asan-globals=0',
],
}],
- ['android_webview_build==0', {
- 'defines': [
- # The NDK has these things, but doesn't define the constants
- # to say that it does. Define them here instead.
- 'HAVE_SYS_UIO_H',
- ],
- 'cflags': [
- '--sysroot=<(android_ndk_sysroot)',
- ],
- 'ldflags': [
- '--sysroot=<(android_ndk_sysroot)',
- '-nostdlib',
- # Don't allow visible symbols from libgcc or stlport to be
- # re-exported.
- '-Wl,--exclude-libs=libgcc.a',
- '-Wl,--exclude-libs=libstlport_static.a',
- # Don't allow visible symbols from libraries that contain
- # assembly code with symbols that aren't hidden properly.
- # http://crbug.com/448386
- '-Wl,--exclude-libs=libcommon_audio.a',
- '-Wl,--exclude-libs=libcommon_audio_neon.a',
- '-Wl,--exclude-libs=libcommon_audio_sse2.a',
- '-Wl,--exclude-libs=libiSACFix.a',
- '-Wl,--exclude-libs=libisac_neon.a',
- '-Wl,--exclude-libs=libopus.a',
- '-Wl,--exclude-libs=libvpx.a',
- ],
- 'libraries': [
- '-l<(android_stlport_library)',
- # Manually link the libgcc.a that the cross compiler uses.
- '<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)',
- '-lc',
- '-ldl',
- '-lm',
- ],
- }],
- ['android_webview_build==1', {
- 'cflags': [
- # Android predefines this as 1; undefine it here so Chromium
- # can redefine it later to be 2 for chromium code and unset
- # for third party code. This works because cflags are added
- # before defines.
- '-U_FORTIFY_SOURCE',
- # Disable any additional warnings enabled by the Android build system but which
- # chromium does not build cleanly with (when treating warning as errors).
- # Things that are part of -Wextra:
- '-Wno-extra', # Enabled by -Wextra, but no specific flag
- '-Wno-ignored-qualifiers',
- '-Wno-type-limits',
- '-Wno-unused-but-set-variable',
- ],
- 'cflags_cc': [
- # Other things unrelated to -Wextra:
- '-Wno-non-virtual-dtor',
- '-Wno-sign-promo',
- ],
- 'libraries': [
- '-ldl',
- ],
- }],
- ['android_webview_build==1', {
- 'target_conditions': [
- ['chromium_code==0', {
- 'cflags': [
- # There is a class of warning which:
- # 1) Android always enables and also treats as errors
- # 2) Chromium ignores in third party code
- # So we re-enable those warnings when building Android.
- '-Wno-address',
- '-Wno-format-security',
- '-Wno-return-type',
- '-Wno-sequence-point',
- ],
- 'cflags_cc': [
- '-Wno-non-virtual-dtor',
- ],
- }],
- ],
- }],
['target_arch == "arm" and order_profiling==0', {
'ldflags': [
# Enable identical code folding to reduce size.
'-Wl,--icf=<(gold_icf_level)',
],
}],
- # NOTE: The stlport header include paths below are specified in
- # cflags rather than include_dirs because they need to come
- # after include_dirs. Think of them like system headers, but
- # don't use '-isystem' because the arm-linux-androideabi-4.4.3
- # toolchain (circa Gingerbread) will exhibit strange errors.
- # The include ordering here is important; change with caution.
- ['android_webview_build==0', {
- 'cflags': [
- '-isystem<(android_stlport_include)',
- ],
- 'ldflags': [
- '-L<(android_stlport_libs_dir)',
- ],
- }, { # else: android_webview_build!=0
- 'aosp_build_settings': {
- # Specify that we want to statically link stlport from the
- # NDK. This will provide all the include and library paths
- # automatically at build time, and link the right library.
- 'LOCAL_NDK_STL_VARIANT': 'stlport_static',
- },
- }],
['target_arch=="ia32"', {
# The x86 toolchain currently has problems with stack-protector.
'cflags!': [
@@ -4885,19 +4860,13 @@
['_type=="shared_library" or _type=="loadable_module"', {
'ldflags': [
'-Wl,-shared,-Bsymbolic',
+ # crtbegin_so.o should be the last item in ldflags.
+ '<(android_ndk_lib)/crtbegin_so.o',
],
- 'conditions': [
- ['android_webview_build==0', {
- 'ldflags': [
- # crtbegin_so.o should be the last item in ldflags.
- '<(android_ndk_lib)/crtbegin_so.o',
- ],
- 'libraries': [
- # crtend_so.o needs to be the last item in libraries.
- # Do not add any libraries after this!
- '<(android_ndk_lib)/crtend_so.o',
- ],
- }],
+ 'libraries': [
+ # crtend_so.o needs to be the last item in libraries.
+ # Do not add any libraries after this!
+ '<(android_ndk_lib)/crtend_so.o',
],
}],
],
@@ -5167,6 +5136,16 @@
# specified or not.
'-fno-strict-aliasing', # See http://crbug.com/32204.
],
+ 'conditions': [
+ ['branding=="Chrome" and buildtype=="Official"', {
+ 'OTHER_CFLAGS': [
+ # The Google Chrome Framework dSYM generated by dsymutil has
+ # grown larger than 4GB, which dsymutil can't handle. Reduce
+ # the amount of debug symbols.
+ '-gline-tables-only', # See http://crbug.com/479841
+ ]
+ }],
+ ],
},
'target_conditions': [
['_type=="executable"', {
@@ -5546,6 +5525,11 @@
4512, # Assignment operator could not be generated
4610, # Object can never be instantiated
4996, # 'X': was declared deprecated (for GetVersionEx).
+
+ # These are variable shadowing warnings that are new in VS2015. We
+ # should work through these at some point -- they may be removed from
+ # the RTM release in the /W4 set.
+ 4456, 4457, 4458, 4459,
],
'msvs_settings': {
'VCCLCompilerTool': {
@@ -5681,6 +5665,13 @@
],
},
}],
+ ['clang==1 and clang_use_chrome_plugins==1', {
+ 'VCCLCompilerTool': {
+ 'AdditionalOptions': [
+ '<@(clang_chrome_plugins_flags)',
+ ],
+ },
+ }],
],
},
},
@@ -5770,6 +5761,19 @@
}],
],
}],
+ ['sanitizer_coverage!=0', {
+ # TODO(asan/win): Move this down into the general
+ # win-target_defaults section once the 64-bit asan runtime
+ # exists. See crbug.com/345874.
+ 'VCCLCompilerTool': {
+ 'AdditionalOptions': [
+ '-fsanitize-coverage=<(sanitizer_coverage)',
+ ],
+ 'defines': [
+ 'SANITIZER_COVERAGE',
+ ],
+ },
+ }],
],
},
},
@@ -5813,45 +5817,6 @@
],
},
}],
- # In the android webview build, force host targets to be compiled with clang
- # as the hermetic host gcc is very old on some platforms. This is already
- # the default on the current development version of AOSP but we force it
- # here in case we need to compile against an older release version. We also
- # explicitly set it to false for target binaries to avoid causing problems
- # for the work to enable clang by default in AOSP. We also force the use of
- # libstdc++ on host as peculiarities of the android gyp backend mean that
- # using libc++ doesn't work, and Chromium doesn't yet require a more modern
- # C++ library.
- ['android_webview_build==1', {
- 'target_defaults': {
- 'target_conditions': [
- ['_toolset=="host"', {
- 'aosp_build_settings': {
- 'LOCAL_CLANG': 'true',
- 'LOCAL_CXX_STL': 'libstdc++',
- },
- }, { # else: _toolset != "host"
- 'aosp_build_settings': {
- 'LOCAL_CLANG': 'false',
- },
- }],
- ],
- },
- }],
- # We need a special case to handle the android webview build on mac because
- # the host gcc there doesn't accept this flag, but the target gcc may
- # require it.
- ['gcc_version>=48 and android_webview_build==1 and host_os=="mac"', {
- 'target_defaults': {
- 'target_conditions': [
- ['_toolset=="host"', {
- 'cflags!': [
- '-Wno-unused-local-typedefs',
- ],
- }],
- ],
- },
- }],
['clang==1 and ((OS!="mac" and OS!="ios") or clang_xcode==0) '
'and OS!="win"', {
'make_global_settings': [
@@ -5921,6 +5886,17 @@
'cflags': [
'-flto',
],
+ 'xcode_settings': {
+ 'LLVM_LTO': 'YES',
+ },
+ }],
+ # Work-around for http://openradar.appspot.com/20356002
+ ['_toolset=="target" and _type!="static_library"', {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ '-Wl,-all_load',
+ ],
+ },
}],
],
},
@@ -5947,6 +5923,25 @@
],
},
}],
+ # Apply a lower LTO optimization level in non-official builds.
+ ['use_lto==1 and clang==1 and buildtype!="Official"', {
+ 'target_defaults': {
+ 'target_conditions': [
+ ['_toolset=="target"', {
+ 'ldflags': [
+ '-Wl,--plugin-opt,O1',
+ ],
+ }],
+ ['_toolset=="target" and _type!="static_library"', {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ '-Wl,-mllvm,-O1',
+ ],
+ },
+ }],
+ ],
+ },
+ }],
['use_lto==1 and clang==1 and (target_arch=="ia32" or target_arch=="x64")', {
'target_defaults': {
'target_conditions': [
@@ -6030,6 +6025,74 @@
],
},
}],
+ ['cfi_derived_cast==1', {
+ 'target_defaults': {
+ 'target_conditions': [
+ ['_toolset=="target"', {
+ 'cflags': [
+ '-fsanitize=cfi-derived-cast',
+ ],
+ 'ldflags': [
+ '-fsanitize=cfi-derived-cast',
+ ],
+ 'xcode_settings': {
+ 'OTHER_CFLAGS': [
+ '-fsanitize=cfi-derived-cast',
+ ],
+ },
+ }],
+ ['_toolset=="target" and _type!="static_library"', {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ '-fsanitize=cfi-derived-cast',
+ ],
+ },
+ }],
+ ],
+ },
+ }],
+ ['cfi_unrelated_cast==1', {
+ 'target_defaults': {
+ 'target_conditions': [
+ ['_toolset=="target"', {
+ 'cflags': [
+ '-fsanitize=cfi-unrelated-cast',
+ ],
+ 'ldflags': [
+ '-fsanitize=cfi-unrelated-cast',
+ ],
+ 'xcode_settings': {
+ 'OTHER_CFLAGS': [
+ '-fsanitize=cfi-unrelated-cast',
+ ],
+ },
+ }],
+ ['_toolset=="target" and _type!="static_library"', {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ '-fsanitize=cfi-unrelated-cast',
+ ],
+ },
+ }],
+ ],
+ },
+ }],
+ ['cfi_vptr==1 or cfi_derived_cast==1 or cfi_unrelated_cast==1', {
+ 'target_defaults': {
+ 'target_conditions': [
+ ['_toolset=="target"', {
+ 'cflags': [
+ '-fsanitize-blacklist=<(cfi_blacklist)',
+ ],
+ 'xcode_settings': {
+ 'OTHER_CFLAGS': [
+ '-fsanitize-blacklist=<(cfi_blacklist)',
+ ],
+ },
+ }],
+ ],
+ },
+ }],
],
'xcode_settings': {
# DON'T ADD ANYTHING NEW TO THIS BLOCK UNLESS YOU REALLY REALLY NEED IT!
« no previous file with comments | « build/build_config.h ('k') | build/config/BUILD.gn » ('j') | mojo/public/tools/BUILD.gn » ('J')

Powered by Google App Engine
This is Rietveld 408576698