termux-packages/packages/swift/swift-disable-appending-hos...

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)