summaryrefslogtreecommitdiff
path: root/chromium/build
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2020-01-13 15:00:21 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-12-03 17:30:09 +0100
commitfcaaabab9f3950750f5d769fa64f5f6847477803 (patch)
tree9ad48e40d54f6f4994d5eaa6b7ed1319f51c3738 /chromium/build
parentea5f18331c1601f877ab8ecb06df0d6d2f8a4ca8 (diff)
downloadqtwebengine-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.gni2
-rw-r--r--chromium/build/config/ios/BUILD.gn38
-rw-r--r--chromium/build/config/ios/ios_sdk.gni2
-rw-r--r--chromium/build/config/sysroot.gni3
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"