diff options
author | Michal Klocek <michal.klocek@qt.io> | 2020-01-13 15:00:21 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-12-03 17:30:09 +0100 |
commit | fcaaabab9f3950750f5d769fa64f5f6847477803 (patch) | |
tree | 9ad48e40d54f6f4994d5eaa6b7ed1319f51c3738 /chromium/build | |
parent | ea5f18331c1601f877ab8ecb06df0d6d2f8a4ca8 (diff) | |
download | qtwebengine-chromium-fcaaabab9f3950750f5d769fa64f5f6847477803.tar.gz |
Add fat build support
Gn support fat builds with additional_target_cpus,
however this expects only fat builds for same type of
architecture like for ex. arm and arm64. Qt build
does fat builds for arm64 and x64, this is tricky to support
and would require some changes to support parsing builds
with two acitve toolchains.
Add poor man workaround to compile x64 together with arm64, by
using Xarch to separate parameters. Unfortunately arm64
includes neon files by default which can not be compiled
for x64. Therefore for release builds it is adviced
to do CONFIG-=simulator, which will not compile for
simulator, however will include NEON for arm64.
Task-number: QTBUG-77931
Change-Id: I26f9a656187a205ce8448eb3b888201c786476c7
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'chromium/build')
-rw-r--r-- | chromium/build/config/arm.gni | 2 | ||||
-rw-r--r-- | chromium/build/config/ios/BUILD.gn | 38 | ||||
-rw-r--r-- | chromium/build/config/ios/ios_sdk.gni | 2 | ||||
-rw-r--r-- | chromium/build/config/sysroot.gni | 3 |
4 files changed, 39 insertions, 6 deletions
diff --git a/chromium/build/config/arm.gni b/chromium/build/config/arm.gni index 29434eba92f..8eee2dee38c 100644 --- a/chromium/build/config/arm.gni +++ b/chromium/build/config/arm.gni @@ -123,5 +123,7 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") { } else if (current_cpu == "arm64" || v8_current_cpu == "arm64") { # arm64 supports only "hard". arm_float_abi = "hard" + declare_args() { arm_use_neon = true + } } diff --git a/chromium/build/config/ios/BUILD.gn b/chromium/build/config/ios/BUILD.gn index 862a0dbbf11..31cc509c13f 100644 --- a/chromium/build/config/ios/BUILD.gn +++ b/chromium/build/config/ios/BUILD.gn @@ -22,6 +22,7 @@ declare_args() { # That is not a limitation for now as Xcode mandates the presence of bitcode # only when building bitcode-enabled projects for real devices (ARM CPUs). enable_ios_bitcode = false + use_qt_fat_lib = false } # This is included by reference in the //build/config/compiler config that @@ -58,6 +59,12 @@ config("compiler") { "-target", "armv7-apple-ios$ios_deployment_target", ] + if (use_qt_fat_lib) { + common_ios_flags += [ + "-arch", + "i386", + ] + } } else if (current_cpu == "arm64") { common_ios_flags += [ "-arch", @@ -67,6 +74,12 @@ config("compiler") { "-target", "arm64-apple-ios$ios_deployment_target", ] + if (use_qt_fat_lib) { + common_ios_flags += [ + "-arch", + "x86_64", + ] + } } swiftflags += [ @@ -95,7 +108,7 @@ config("compiler") { # :runtime_library vs. :compiler. config("runtime_library") { if (ios_enable_relative_sdk_path) { - common_flags = [ + sysroot_flags = [ "-isysroot", rebase_path(sysroot, root_build_dir), ] @@ -104,7 +117,7 @@ config("runtime_library") { rebase_path(sysroot, root_build_dir), ] } else { - common_flags = [ + sysroot_flags = [ "-isysroot", sysroot, ] @@ -113,11 +126,24 @@ config("runtime_library") { sysroot, ] } - - if (use_ios_simulator) { - common_flags += [ "-mios-simulator-version-min=$ios_deployment_target" ] + if (use_qt_fat_lib) { + common_flags = [ + "-Xarch_arm64", + sysroot_flags, + "-Xarch_x86_64", + "-isysroot" + additional_target_sysroot[0], + ] + common_flags += [ "-Xarch_x86_64","-mios-simulator-version-min=$ios_deployment_target" ] + common_flags += [ "-Xarch_arm64","-miphoneos-version-min=$ios_deployment_target" ] } else { - common_flags += [ "-miphoneos-version-min=$ios_deployment_target" ] + + common_flags = sysroot_flags + + if (use_ios_simulator) { + common_flags += [ "-mios-simulator-version-min=$ios_deployment_target" ] + } else { + common_flags += [ "-miphoneos-version-min=$ios_deployment_target" ] + } } if (use_xcode_clang && enable_ios_bitcode && !use_ios_simulator) { diff --git a/chromium/build/config/ios/ios_sdk.gni b/chromium/build/config/ios/ios_sdk.gni index 917a6902ae1..7f4a4aa68b6 100644 --- a/chromium/build/config/ios/ios_sdk.gni +++ b/chromium/build/config/ios/ios_sdk.gni @@ -5,6 +5,7 @@ import("//build/config/ios/ios_sdk_overrides.gni") import("//build/toolchain/goma.gni") import("//build/toolchain/toolchain.gni") +import("//build/config/sysroot.gni") assert(use_system_xcode, "Hermetic xcode doesn't work for ios.") @@ -134,6 +135,7 @@ if (ios_sdk_path == "") { ios_sdk_platform_abs_path = _ios_sdk_result.sdk_platform_path ios_sdk_path = _ios_sdk_result.sdk_path ios_sdk_platform_path = _ios_sdk_result.sdk_platform_path + assert(ios_sdk_path == target_sysroot, "qt ios sdk path != gn ios sdk path") ios_sdk_version = _ios_sdk_result.sdk_version ios_sdk_build = _ios_sdk_result.sdk_build xcode_version = _ios_sdk_result.xcode_version diff --git a/chromium/build/config/sysroot.gni b/chromium/build/config/sysroot.gni index 8693218fedf..ecaa3c7e1d4 100644 --- a/chromium/build/config/sysroot.gni +++ b/chromium/build/config/sysroot.gni @@ -12,6 +12,9 @@ declare_args() { # toolchain. target_sysroot = "" + # used for fat library on ios + additional_target_sysroot = [] + # The path to directory containing linux sysroot images. target_sysroot_dir = "//build/linux" |