87 lines
5.9 KiB
Diff
87 lines
5.9 KiB
Diff
|
From 3e7717673dcbb73b41a26ae5f70fd48620cca072
|
||
|
Date: Mon, 20 Dec 2021 20:47:55 +0530
|
||
|
Subject: [PATCH] [build] Add a flag that allows disabling appending the host
|
||
|
target's name to the install-destdir for a cross-compiled toolchain
|
||
|
|
||
|
This is useful if you're cross-compiling the toolchain for a single host and don't
|
||
|
want your specified install path modified.
|
||
|
---
|
||
|
utils/build-script-impl | 7 +++++--
|
||
|
utils/build_swift/build_swift/driver_arguments.py | 6 ++++++
|
||
|
.../swift_build_support/build_script_invocation.py | 2 ++
|
||
|
.../swift_build_support/products/product.py | 6 ++++--
|
||
|
5 files changed, 19 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl
|
||
|
index a9a77e2fb370d..6d0709d82de7e 100755
|
||
|
--- a/swift/utils/build-script-impl
|
||
|
+++ b/swift/utils/build-script-impl
|
||
|
@@ -249,6 +249,7 @@ KNOWN_SETTINGS=(
|
||
|
cross-compile-with-host-tools "" "set to use the clang we build for the host to then build the cross-compile hosts"
|
||
|
cross-compile-install-prefixes "" "semicolon-separated list of install prefixes to use for the cross-compiled hosts. The list expands, so if there are more cross-compile hosts than prefixes, unmatched hosts use the last prefix in the list"
|
||
|
cross-compile-deps-path "" "path for CMake to look for cross-compiled library dependencies, such as libXML2"
|
||
|
+ cross-compile-append-host-target-to-destdir "1" "turns on appending the host target name of each cross-compiled toolchain to its install-destdir, to keep them separate from the natively-built toolchain"
|
||
|
skip-merge-lipo-cross-compile-tools "" "set to skip running merge-lipo after installing cross-compiled host Swift tools"
|
||
|
coverage-db "" "If set, coverage database to use when prioritizing testing"
|
||
|
skip-local-host-install "" "If we are cross-compiling multiple targets, skip an install pass locally if the hosts match"
|
||
|
@@ -1133,8 +1134,10 @@ function get_host_install_destdir() {
|
||
|
if [[ $(should_include_host_in_lipo ${host}) ]]; then
|
||
|
# If this is one of the hosts we should lipo, install in to a temporary subdirectory.
|
||
|
local host_install_destdir="${BUILD_DIR}/intermediate-install/${host}"
|
||
|
- elif [[ "${host}" == "merged-hosts" ]]; then
|
||
|
- # This assumes that all hosts are merged to the lipo.
|
||
|
+ elif [[ "${host}" == "merged-hosts" ]] ||
|
||
|
+ [[ "$(true_false ${CROSS_COMPILE_APPEND_HOST_TARGET_TO_DESTDIR})" == "FALSE" ]]; then
|
||
|
+ # This assumes that all hosts are merged to the lipo, or the build
|
||
|
+ # was told not to append anything.
|
||
|
local host_install_destdir="${INSTALL_DESTDIR}"
|
||
|
else
|
||
|
local host_install_destdir="${INSTALL_DESTDIR}/${host}"
|
||
|
diff --git a/swift/utils/build_swift/build_swift/driver_arguments.py b/swift/utils/build_swift/build_swift/driver_arguments.py
|
||
|
index e10ef74dcefc1..ecbaa4a9dd5f4 100644
|
||
|
--- a/swift/utils/build_swift/build_swift/driver_arguments.py
|
||
|
+++ b/swift/utils/build_swift/build_swift/driver_arguments.py
|
||
|
@@ -568,6 +568,12 @@ def create_argument_parser():
|
||
|
'library dependencies of the corelibs and other Swift repos, '
|
||
|
'such as the libcurl dependency of FoundationNetworking')
|
||
|
|
||
|
+ option('--cross-compile-append-host-target-to-destdir', toggle_true,
|
||
|
+ default=True,
|
||
|
+ help="Append each cross-compilation host target's name as a subdirectory "
|
||
|
+ "for each cross-compiled toolchain's destdir, useful when building "
|
||
|
+ "multiple toolchains and can be disabled if only cross-compiling one.")
|
||
|
+
|
||
|
option('--stdlib-deployment-targets', store,
|
||
|
type=argparse.ShellSplitType(),
|
||
|
default=None,
|
||
|
diff --git a/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py b/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
|
||
|
index d6faa0a7ba6c9..3ae3002f5d906 100644
|
||
|
--- a/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
|
||
|
+++ b/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
|
||
|
@@ -124,6 +124,8 @@ def convert_to_impl_arguments(self):
|
||
|
"--lldb-assertions", str(
|
||
|
args.lldb_assertions).lower(),
|
||
|
"--cmake-generator", args.cmake_generator,
|
||
|
+ "--cross-compile-append-host-target-to-destdir", str(
|
||
|
+ args.cross_compile_append_host_target_to_destdir).lower(),
|
||
|
"--build-jobs", str(args.build_jobs),
|
||
|
"--common-cmake-options=%s" % ' '.join(
|
||
|
pipes.quote(opt) for opt in cmake.common_options()),
|
||
|
diff --git a/swift/utils/swift_build_support/swift_build_support/products/product.py b/swift/utils/swift_build_support/swift_build_support/products/product.py
|
||
|
index 2f02322ba1d92..9fc258789639b 100644
|
||
|
--- a/swift/utils/swift_build_support/swift_build_support/products/product.py
|
||
|
+++ b/swift/utils/swift_build_support/swift_build_support/products/product.py
|
||
|
@@ -230,8 +230,10 @@ def host_install_destdir(self, host_target):
|
||
|
# install in to a temporary subdirectory.
|
||
|
return '%s/intermediate-install/%s' % \
|
||
|
(os.path.dirname(self.build_dir), host_target)
|
||
|
- elif host_target == "merged-hosts":
|
||
|
- # This assumes that all hosts are merged to the lipo.
|
||
|
+ elif host_target == "merged-hosts" or \
|
||
|
+ not self.args.cross_compile_append_host_target_to_destdir:
|
||
|
+ # This assumes that all hosts are merged to the lipo, or the build
|
||
|
+ # was told not to append anything.
|
||
|
return self.args.install_destdir
|
||
|
else:
|
||
|
return '%s/%s' % (self.args.install_destdir, host_target)
|