| Index: build/common.gypi
|
| diff --git a/build/common.gypi b/build/common.gypi
|
| index 43f73de1845bbf7255a8ae320a09b397e14bb083..e859749716089e2129bea36d4cd461b263ab4367 100644
|
| --- a/build/common.gypi
|
| +++ b/build/common.gypi
|
| @@ -136,8 +136,9 @@
|
| 'host_arch%': '<(host_arch)',
|
|
|
| # Default architecture we're building for is the architecture we're
|
| - # building on.
|
| + # building on, and possibly sub-architecture (for iOS builds).
|
| 'target_arch%': '<(host_arch)',
|
| + 'target_subarch%': '',
|
|
|
| # This is set when building the Android WebView inside the Android
|
| # build system, using the 'android' gyp backend. The WebView code is
|
| @@ -220,6 +221,18 @@
|
| }, {
|
| 'gomadir': '<!(/bin/echo -n ${HOME}/goma)',
|
| }],
|
| +
|
| + # 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',
|
| + }],
|
| ],
|
| },
|
|
|
| @@ -227,6 +240,7 @@
|
| 'chromeos%': '<(chromeos)',
|
| 'host_arch%': '<(host_arch)',
|
| 'target_arch%': '<(target_arch)',
|
| + 'target_subarch%': '<(target_subarch)',
|
| 'toolkit_views%': '<(toolkit_views)',
|
| 'toolkit_uses_gtk%': '<(toolkit_uses_gtk)',
|
| 'desktop_linux%': '<(desktop_linux)',
|
| @@ -866,6 +880,7 @@
|
| 'branding%': '<(branding)',
|
| 'buildtype%': '<(buildtype)',
|
| 'target_arch%': '<(target_arch)',
|
| + 'target_subarch%': '<(target_subarch)',
|
| 'host_arch%': '<(host_arch)',
|
| 'toolkit_views%': '<(toolkit_views)',
|
| 'ui_compositor_image_transport%': '<(ui_compositor_image_transport)',
|
| @@ -1082,6 +1097,13 @@
|
| 'clang%': '<(clang)',
|
| 'make_clang_dir%': 'third_party/llvm-build/Release+Asserts',
|
|
|
| + # Control which version of clang to use when 'clang' is set to 1 when
|
| + # building for iOS (Apple has not yet open-sourced support for "arm64"
|
| + # so when building for that 'target_arch' we have to use clang shipped
|
| + # with Xcode that does not supports some flags).
|
| + # TODO(sdefresne): remove this once http://crbug.com/341453 is fixed.
|
| + 'clang_xcode%': 0,
|
| +
|
| # 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.
|
| @@ -1726,7 +1748,13 @@
|
| ['"<(GENERATOR)"=="ninja"', {
|
| 'clang%': 1,
|
| 'host_os%': "mac",
|
| - }]
|
| + }],
|
| + # Apple has not upstreamed the support for "arm64" yet, so when
|
| + # building for "arm64" or "both", we need to use the clang that
|
| + # is provided with Xcode.
|
| + ['target_subarch!="arm32"', {
|
| + 'clang_xcode%': 1,
|
| + }],
|
| ],
|
| }],
|
| ['enable_extensions==1', {
|
| @@ -4029,9 +4057,6 @@
|
| # Note that the prebuilt Clang binaries should not be used for iOS
|
| # development except for ASan builds.
|
| ['clang==1', {
|
| - 'CC': '$(SOURCE_ROOT)/<(clang_dir)/clang',
|
| - 'LDPLUSPLUS': '$(SOURCE_ROOT)/<(clang_dir)/clang++',
|
| -
|
| # gnu++11 instead of c++11 is needed because some code uses
|
| # typeof() (a GNU extension).
|
| # TODO(thakis): Eventually switch this to c++11 instead of
|
| @@ -4066,24 +4091,37 @@
|
|
|
| # Warns when a const char[] is converted to bool.
|
| '-Wstring-conversion',
|
| + ],
|
|
|
| - # Clang considers the `register` keyword as deprecated, but e.g.
|
| - # code generated by flex (used in angle) contains that keyword.
|
| - # http://crbug.com/255186
|
| - '-Wno-deprecated-register',
|
| + 'conditions': [
|
| + ['clang_xcode==0', {
|
| + 'CC': '$(SOURCE_ROOT)/<(clang_dir)/clang',
|
| + 'LDPLUSPLUS': '$(SOURCE_ROOT)/<(clang_dir)/clang++',
|
| +
|
| + 'WARNING_CFLAGS': [
|
| + # Clang considers the `register` keyword as deprecated, but
|
| + # e.g. code generated by flex (used in angle) contains that
|
| + # keyword. http://crbug.com/255186
|
| + #
|
| + # Note: clang as shipped with Xcode is older and does not
|
| + # treat the `register` as deprecated and does not define
|
| + # this flag, so don't enable it if "clang_xcode" is "1".
|
| + '-Wno-deprecated-register',
|
| + ],
|
| + }],
|
| ],
|
| }],
|
| - ['clang==1 and clang_use_chrome_plugins==1', {
|
| + ['clang==1 and clang_xcode==0 and clang_use_chrome_plugins==1', {
|
| 'OTHER_CFLAGS': [
|
| '<@(clang_chrome_plugins_flags)',
|
| ],
|
| }],
|
| - ['clang==1 and clang_load!=""', {
|
| + ['clang==1 and clang_xcode==0 and clang_load!=""', {
|
| 'OTHER_CFLAGS': [
|
| '-Xclang', '-load', '-Xclang', '<(clang_load)',
|
| ],
|
| }],
|
| - ['clang==1 and clang_add_plugin!=""', {
|
| + ['clang==1 and clang_xcode==0 and clang_add_plugin!=""', {
|
| 'OTHER_CFLAGS': [
|
| '-Xclang', '-add-plugin', '-Xclang', '<(clang_add_plugin)',
|
| ],
|
| @@ -4364,14 +4402,32 @@
|
| # Match OS X clang C++11 warning settings.
|
| '-Wno-c++11-narrowing',
|
| ],
|
| +
|
| + # Limit the valid architectures depending on "target_subarch".
|
| + # This need to include the "arm" architectures but also the "x86"
|
| + # ones (they are used when building for the simulator).
|
| + 'conditions': [
|
| + ['target_subarch=="arm32"', {
|
| + 'VALID_ARCHS': ['armv7', 'i386'],
|
| + }],
|
| + ['target_subarch=="arm64"', {
|
| + 'VALID_ARCHS': ['arm64', 'x86_64'],
|
| + }],
|
| + ['target_subarch=="both"', {
|
| + 'VALID_ARCHS': ['arm64', 'armv7', 'x86_64', 'i386'],
|
| + }],
|
| + ],
|
| },
|
| 'target_conditions': [
|
| ['_toolset=="host"', {
|
| 'xcode_settings': {
|
| 'SDKROOT': 'macosx<(mac_sdk)', # -isysroot
|
| 'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)',
|
| + 'VALID_ARCHS': [
|
| + 'x86_64',
|
| + ],
|
| 'ARCHS': [
|
| - 'x86_64'
|
| + 'x86_64',
|
| ],
|
| },
|
| }],
|
| @@ -4381,6 +4437,7 @@
|
| # since we can't negate the iphone deployment target above, we
|
| # instead set it here for target only.
|
| 'IPHONEOS_DEPLOYMENT_TARGET': '<(ios_deployment_target)',
|
| + 'ARCHS': ['$(ARCHS_STANDARD_INCLUDING_64_BIT)'],
|
| },
|
| }],
|
| ['_type=="executable"', {
|
| @@ -4777,7 +4834,8 @@
|
| ],
|
| },
|
| }],
|
| - ['clang==1 and OS!="win"', {
|
| + ['clang==1 and ((OS!="mac" and OS!="ios") or clang_xcode==0) '
|
| + 'and OS!="win"', {
|
| 'make_global_settings': [
|
| ['CC', '<(make_clang_dir)/bin/clang'],
|
| ['CXX', '<(make_clang_dir)/bin/clang++'],
|
| @@ -4813,7 +4871,8 @@
|
| # TODO(yyanagisawa): supports GENERATOR==make
|
| # make generator doesn't support CC_wrapper without CC
|
| # in make_global_settings yet.
|
| - ['use_goma==1 and ("<(GENERATOR)"=="ninja" or clang==1)', {
|
| + ['use_goma==1 and ((OS!="mac" and OS!="ios") or clang_xcode==0) and '
|
| + '("<(GENERATOR)"=="ninja" or clang==1)', {
|
| 'make_global_settings': [
|
| ['CC_wrapper', '<(gomadir)/gomacc'],
|
| ['CXX_wrapper', '<(gomadir)/gomacc'],
|
| @@ -4861,7 +4920,6 @@
|
| ['OS=="ios"', {
|
| # Target both iPhone and iPad.
|
| 'TARGETED_DEVICE_FAMILY': '1,2',
|
| - 'VALID_ARCHS': 'armv7 i386',
|
| }, { # OS!="ios"
|
| 'conditions': [
|
| ['target_arch=="x64"', {
|
|
|