Skip to content

Commit 6b70b0a

Browse files
committed
Extend --cross-compile-build-swift-tools=False to disable building and installing LLVM
and the Testing macros for cross-compiled hosts, then enable building and using the Testing macros for the native host.
1 parent 917b800 commit 6b70b0a

File tree

2 files changed

+101
-2
lines changed

2 files changed

+101
-2
lines changed

swift-ci/sdks/android/patches/swift-android.patch

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,102 @@ index fba09416ddb..67b81daba12 100644
148148

149149
android_toolchain_path = self.ndk_toolchain_path(args)
150150

151+
diff --git a/swift/utils/build_swift/build_swift/driver_arguments.py b/swift/utils/build_swift/build_swift/driver_arguments.py
152+
index 2b7d6d07799..e0d04d22825 100644
153+
--- a/swift/utils/build_swift/build_swift/driver_arguments.py
154+
+++ b/swift/utils/build_swift/build_swift/driver_arguments.py
155+
@@ -677,6 +677,12 @@ def create_argument_parser():
156+
"for each cross-compiled toolchain's destdir, useful when building "
157+
"multiple toolchains and can be disabled if only cross-compiling one.")
158+
159+
+ option('--cross-compile-build-swift-tools', toggle_true,
160+
+ default=True,
161+
+ help="Cross-compile the Swift compiler, other host tools from the "
162+
+ "compiler repository, and various macros for each listed "
163+
+ "--cross-compile-hosts platform.")
164+
+
165+
option('--stdlib-deployment-targets', store,
166+
type=argparse.ShellSplitType(),
167+
default=None,
168+
diff --git a/swift/utils/build_swift/tests/expected_options.py b/swift/utils/build_swift/tests/expected_options.py
169+
index dddb505174e..6052e1f3da6 100644
170+
--- a/swift/utils/build_swift/tests/expected_options.py
171+
+++ b/swift/utils/build_swift/tests/expected_options.py
172+
@@ -156,6 +156,7 @@ EXPECTED_DEFAULTS = {
173+
'compiler_vendor': defaults.COMPILER_VENDOR,
174+
'coverage_db': None,
175+
'cross_compile_append_host_target_to_destdir': True,
176+
+ 'cross_compile_build_swift_tools': True,
177+
'cross_compile_deps_path': None,
178+
'cross_compile_hosts': [],
179+
'infer_cross_compile_hosts_on_darwin': False,
180+
@@ -628,6 +629,7 @@ EXPECTED_OPTIONS = [
181+
EnableOption('--build-swift-clang-overlays'),
182+
EnableOption('--build-swift-remote-mirror'),
183+
EnableOption('--cross-compile-append-host-target-to-destdir'),
184+
+ EnableOption('--cross-compile-build-swift-tools'),
185+
EnableOption('--color-in-tests'),
186+
EnableOption('--distcc'),
187+
EnableOption('--sccache'),
188+
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
189+
index a0289515fd0..355d72fe21f 100644
190+
--- a/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
191+
+++ b/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
192+
@@ -119,6 +119,8 @@ class BuildScriptInvocation(object):
193+
"--cmake-generator", args.cmake_generator,
194+
"--cross-compile-append-host-target-to-destdir", str(
195+
args.cross_compile_append_host_target_to_destdir).lower(),
196+
+ "--cross-compile-build-swift-tools", str(
197+
+ args.cross_compile_build_swift_tools).lower(),
198+
"--build-jobs", str(args.build_jobs),
199+
"--lit-jobs", str(args.lit_jobs),
200+
"--common-cmake-options=%s" % ' '.join(
201+
diff --git a/swift/utils/swift_build_support/swift_build_support/products/llvm.py b/swift/utils/swift_build_support/swift_build_support/products/llvm.py
202+
index ffae1d66702..bc6e00e7ea3 100644
203+
--- a/swift/utils/swift_build_support/swift_build_support/products/llvm.py
204+
+++ b/swift/utils/swift_build_support/swift_build_support/products/llvm.py
205+
@@ -249,7 +249,8 @@ class LLVM(cmake_product.CMakeProduct):
206+
# space/time efficient than -g on that platform.
207+
llvm_cmake_options.define('LLVM_USE_SPLIT_DWARF:BOOL', 'YES')
208+
209+
- if not self.args._build_llvm:
210+
+ if not self.args._build_llvm or (not self.args.cross_compile_build_swift_tools and self.is_cross_compile_target(host_target)):
211+
+ self.args._build_llvm = False
212+
# Indicating we don't want to build LLVM at all should
213+
# override everything.
214+
build_targets = []
215+
@@ -484,7 +484,7 @@ class LLVM(cmake_product.CMakeProduct):
216+
Whether or not this product should be installed with the given
217+
arguments.
218+
"""
219+
- return self.args.install_llvm
220+
+ return self.args.install_llvm and (self.args.cross_compile_build_swift_tools or not self.is_cross_compile_target(host_target))
221+
222+
def install(self, host_target):
223+
"""
224+
diff --git a/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py b/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py
225+
index ddb3b553de7..7195d921da2 100644
226+
--- a/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py
227+
+++ b/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py
228+
@@ -42,13 +42,19 @@ class SwiftTestingMacros(product.Product):
229+
return True
230+
231+
def should_build(self, host_target):
232+
- return True
233+
+ build_macros = not self.is_cross_compile_target(host_target) or self.args.cross_compile_build_swift_tools
234+
+ if not build_macros:
235+
+ print("Skipping building Testing Macros for %s, because the host tools are not being built", host_target)
236+
+ return build_macros
237+
238+
def should_test(self, host_target):
239+
return False
240+
241+
def should_install(self, host_target):
242+
- return self.args.install_swift_testing_macros
243+
+ install_macros = self.args.install_swift_testing_macros and (not self.is_cross_compile_target(host_target) or self.args.cross_compile_build_swift_tools)
244+
+ if self.args.install_swift_testing_macros and not install_macros:
245+
+ print("Skipping installing Testing Macros for %s, because the host tools are not being built", host_target)
246+
+ return install_macros
247+
248+
def _cmake_product(self, host_target):
249+
build_root = os.path.dirname(self.build_dir)

swift-ci/sdks/android/scripts/build.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,8 +460,8 @@ for arch in $archs; do
460460
--install-foundation \
461461
--xctest --install-xctest \
462462
--swift-testing --install-swift-testing \
463-
--cross-compile-build-swift-tools=0 \
464-
--llvm-ninja-targets-for-cross-compile-hosts=help \
463+
--swift-testing-macros --install-swift-testing-macros \
464+
--cross-compile-build-swift-tools=False \
465465
--libdispatch-cmake-options=-DCMAKE_SHARED_LINKER_FLAGS= \
466466
--foundation-cmake-options=-DCMAKE_SHARED_LINKER_FLAGS= \
467467
--cross-compile-append-host-target-to-destdir=False

0 commit comments

Comments
 (0)