Chromium Code Reviews| Index: build/config/BUILDCONFIG.gn |
| diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn |
| index 4f3a223c32d23ab7b79007add5081deac14bdf7e..a6018a95a10aeea0b0e7e9532ad4d5e849358818 100644 |
| --- a/build/config/BUILDCONFIG.gn |
| +++ b/build/config/BUILDCONFIG.gn |
| @@ -2,6 +2,15 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| +if (target_os == "ios") { |
| + declare_args() { |
| + # If defined, then the build is a multi-architecture build (aka fat build) |
| + # and target_cpu must not be defined. Any value supported by target_cpu can |
| + # be used in this list. |
| + multi_arch_target_cpus = [] |
|
brettw
2016/07/11 23:57:17
[read the next comment first]
I'm trying *really*
sdefresne
2016/07/12 09:13:33
Done.
|
| + } |
| +} |
| + |
| # ============================================================================= |
| # PLATFORM SELECTION |
| # ============================================================================= |
| @@ -45,6 +54,18 @@ if (target_cpu == "") { |
| # This allows us to not have to specify both target_os and target_cpu |
| # on the command line. |
| target_cpu = "arm" |
| + } else if (target_os == "ios") { |
| + # If we're building for iOS, we respect the multi_arch_target_cpus if |
| + # it is defined. In that case, we pick the first architecture listed in |
| + # multi_arch_target_cpus and use it as target_cpu, the others will be |
| + # build as secondary toolchain by the ios_app_bundle target. |
| + if (multi_arch_target_cpus != []) { |
| + assert(target_cpu == "", |
| + "cannot define both multi_arch_target_cpus and target_cpu") |
| + target_cpu = multi_arch_target_cpus[0] |
| + } else { |
| + target_cpu = host_cpu |
| + } |
| } else { |
| target_cpu = host_cpu |
| } |
| @@ -214,6 +235,20 @@ if (target_os == "android") { |
| } |
| } else if (target_os == "ios") { |
| _default_toolchain = "//build/toolchain/mac:ios_clang_$target_cpu" |
| + assert(custom_toolchain == "" || multi_arch_target_cpus == [], |
| + "cannot define both multi_arch_target_cpus and custom_toolchain") |
| + |
| + # Initialize multi_arch_toolchains from multi_arch_target_cpus. The |
| + # list will not contain the default_toolchain and may be empty while |
| + # multi_arch_target_cpus is not. This allows the build to default to |
| + # regular build if multi_arch_target_cpus contains a single cpu. |
| + multi_arch_toolchains = [] |
|
brettw
2016/07/11 23:57:17
Can this code by put into build/config/ios/rules.g
sdefresne
2016/07/12 09:13:33
This will duplicate the "//build/toolchain/mac:ios
|
| + foreach(_multi_arch_target_cpu, multi_arch_target_cpus) { |
| + if (_multi_arch_target_cpu != target_cpu) { |
| + multi_arch_toolchains += |
| + [ "//build/toolchain/mac:ios_clang_$_multi_arch_target_cpu" ] |
| + } |
| + } |
| } else if (target_os == "linux") { |
| if (is_clang) { |
| _default_toolchain = "//build/toolchain/linux:clang_$target_cpu" |