Skip to content

Commit e9edd8e

Browse files
committed
Move upstreamed cross-compilation patch to apply it to 6.2 only
1 parent 258a92b commit e9edd8e

File tree

3 files changed

+144
-161
lines changed

3 files changed

+144
-161
lines changed

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

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,56 @@ index 01390761c8c..d84c142397c 100644
2323

2424
// NOTE: 25185.byteSwapped = 0x62 'a', 0x61 'b'
2525
// CHECK-LABEL: test_ascii_scalar_scalar2
26+
diff --git a/swift/utils/build_swift/build_swift/driver_arguments.py b/swift/utils/build_swift/build_swift/driver_arguments.py
27+
index 2b7d6d07799..e0d04d22825 100644
28+
--- a/swift/utils/build_swift/build_swift/driver_arguments.py
29+
+++ b/swift/utils/build_swift/build_swift/driver_arguments.py
30+
@@ -677,6 +677,12 @@ def create_argument_parser():
31+
"for each cross-compiled toolchain's destdir, useful when building "
32+
"multiple toolchains and can be disabled if only cross-compiling one.")
33+
34+
+ option('--cross-compile-build-swift-tools', toggle_true,
35+
+ default=True,
36+
+ help="Cross-compile the Swift compiler, other host tools from the "
37+
+ "compiler repository, and various macros for each listed "
38+
+ "--cross-compile-hosts platform.")
39+
+
40+
option('--stdlib-deployment-targets', store,
41+
type=argparse.ShellSplitType(),
42+
default=None,
43+
diff --git a/swift/utils/build_swift/tests/expected_options.py b/swift/utils/build_swift/tests/expected_options.py
44+
index f8d1a3526ed..b655d610923 100644
45+
--- a/swift/utils/build_swift/tests/expected_options.py
46+
+++ b/swift/utils/build_swift/tests/expected_options.py
47+
@@ -155,6 +155,7 @@ EXPECTED_DEFAULTS = {
48+
'compiler_vendor': defaults.COMPILER_VENDOR,
49+
'coverage_db': None,
50+
'cross_compile_append_host_target_to_destdir': True,
51+
+ 'cross_compile_build_swift_tools': True,
52+
'cross_compile_deps_path': None,
53+
'cross_compile_hosts': [],
54+
'infer_cross_compile_hosts_on_darwin': False,
55+
@@ -622,6 +623,7 @@ EXPECTED_OPTIONS = [
56+
EnableOption('--build-swift-clang-overlays'),
57+
EnableOption('--build-swift-remote-mirror'),
58+
EnableOption('--cross-compile-append-host-target-to-destdir'),
59+
+ EnableOption('--cross-compile-build-swift-tools'),
60+
EnableOption('--color-in-tests'),
61+
EnableOption('--distcc'),
62+
EnableOption('--sccache'),
63+
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
64+
index a0289515fd0..355d72fe21f 100644
65+
--- a/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
66+
+++ b/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
67+
@@ -119,6 +119,8 @@ class BuildScriptInvocation(object):
68+
"--cmake-generator", args.cmake_generator,
69+
"--cross-compile-append-host-target-to-destdir", str(
70+
args.cross_compile_append_host_target_to_destdir).lower(),
71+
+ "--cross-compile-build-swift-tools", str(
72+
+ args.cross_compile_build_swift_tools).lower(),
73+
"--build-jobs", str(args.build_jobs),
74+
"--lit-jobs", str(args.lit_jobs),
75+
"--common-cmake-options=%s" % ' '.join(
2676
diff --git a/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py b/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
2777
index dc338334f28..f1a9f4d28bf 100644
2878
--- a/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
@@ -36,6 +86,100 @@ index dc338334f28..f1a9f4d28bf 100644
3686
assert self.toolchain.cmake is not None
3787
cmake_build = []
3888
_cmake = cmake.CMake(self.args, self.toolchain,
89+
@@ -71,9 +71,7 @@ class CMakeProduct(product.Product):
90+
env=env)
91+
92+
is_llvm = self.product_name() == "llvm"
93+
- if (not is_llvm and not self.args.skip_build) or (
94+
- is_llvm and self.args._build_llvm
95+
- ):
96+
+ if (not is_llvm and not self.args.skip_build) or (is_llvm and build_llvm):
97+
cmake_opts = [self.build_dir, "--config", build_type]
98+
99+
shell.call(
100+
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
101+
index ffae1d66702..72e400c55be 100644
102+
--- a/swift/utils/swift_build_support/swift_build_support/products/llvm.py
103+
+++ b/swift/utils/swift_build_support/swift_build_support/products/llvm.py
104+
@@ -249,10 +249,13 @@ class LLVM(cmake_product.CMakeProduct):
105+
# space/time efficient than -g on that platform.
106+
llvm_cmake_options.define('LLVM_USE_SPLIT_DWARF:BOOL', 'YES')
107+
108+
- if not self.args._build_llvm:
109+
+ build = True
110+
+ if not self.args._build_llvm or (not self.args.cross_compile_build_swift_tools
111+
+ and self.is_cross_compile_target(host_target)):
112+
# Indicating we don't want to build LLVM at all should
113+
# override everything.
114+
build_targets = []
115+
+ build = False
116+
elif self.args.skip_build or not self.args.build_llvm:
117+
# We can't skip the build completely because the standalone
118+
# build of Swift depends on these.
119+
@@ -399,7 +402,8 @@ class LLVM(cmake_product.CMakeProduct):
120+
121+
self._handle_cxx_headers(host_target, platform)
122+
123+
- self.build_with_cmake(build_targets, self.args.llvm_build_variant, [])
124+
+ self.build_with_cmake(build_targets, self.args.llvm_build_variant, [],
125+
+ build_llvm=build)
126+
127+
# copy over the compiler-rt builtins for iOS/tvOS/watchOS to ensure
128+
# that Swift's stdlib can use compiler-rt builtins when targeting
129+
@@ -484,7 +488,9 @@ class LLVM(cmake_product.CMakeProduct):
130+
Whether or not this product should be installed with the given
131+
arguments.
132+
"""
133+
- return self.args.install_llvm
134+
+ return self.args.install_llvm and (
135+
+ self.args.cross_compile_build_swift_tools or
136+
+ not self.is_cross_compile_target(host_target))
137+
138+
def install(self, host_target):
139+
"""
140+
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
141+
index ddb3b553de7..d127424709c 100644
142+
--- a/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py
143+
+++ b/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py
144+
@@ -42,13 +42,24 @@ class SwiftTestingMacros(product.Product):
145+
return True
146+
147+
def should_build(self, host_target):
148+
- return True
149+
+ build_macros = not self.is_cross_compile_target(host_target) or \
150+
+ self.args.cross_compile_build_swift_tools
151+
+ if not build_macros:
152+
+ print("Skipping building Testing Macros for %s, because the host tools "
153+
+ "are not being built" % host_target)
154+
+ return build_macros
155+
156+
def should_test(self, host_target):
157+
return False
158+
159+
def should_install(self, host_target):
160+
- return self.args.install_swift_testing_macros
161+
+ install_macros = self.args.install_swift_testing_macros and \
162+
+ (not self.is_cross_compile_target(host_target) or
163+
+ self.args.cross_compile_build_swift_tools)
164+
+ if self.args.install_swift_testing_macros and not install_macros:
165+
+ print("Skipping installing Testing Macros for %s, because the host tools "
166+
+ "are not being built" % host_target)
167+
+ return install_macros
168+
169+
def _cmake_product(self, host_target):
170+
build_root = os.path.dirname(self.build_dir)
171+
@@ -121,3 +132,11 @@ class SwiftTestingMacrosCMakeShim(cmake_product.CMakeProduct):
172+
install_prefix = install_destdir + self.args.install_prefix
173+
174+
self.install_with_cmake(['install'], install_prefix)
175+
+
176+
+ @classmethod
177+
+ def is_build_script_impl_product(cls):
178+
+ return False
179+
+
180+
+ @classmethod
181+
+ def is_before_build_script_impl_product(cls):
182+
+ return False
39183
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
40184
index 47e7ab79905..6bd94c3cad8 100644
41185
--- a/swift/utils/swift_build_support/swift_build_support/products/product.py

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,3 @@ index 3f36fc979cb..8713ae8fea8 100755
1010
"grep",
1111
"--extended-regexp",
1212
"--recursive",
13-
diff --git a/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py b/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
14-
index 6d0aae32835..3713086fec3 100644
15-
--- a/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
16-
+++ b/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
17-
@@ -25,7 +25,7 @@ class CMakeProduct(product.Product):
18-
19-
def build_with_cmake(self, build_targets, build_type, build_args,
20-
prefer_native_toolchain=False,
21-
- ignore_extra_cmake_options=False):
22-
+ ignore_extra_cmake_options=False, build_llvm=True):
23-
assert self.toolchain.cmake is not None
24-
cmake_build = []
25-
_cmake = cmake.CMake(self.args, self.toolchain,

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

Lines changed: 0 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -10,151 +10,3 @@ index 16e05052609..7ab8cebfab8 100755
1010

1111
cmake_options=(
1212
-DENABLE_SWIFT=YES
13-
diff --git a/swift/utils/build_swift/build_swift/driver_arguments.py b/swift/utils/build_swift/build_swift/driver_arguments.py
14-
index 2b7d6d07799..e0d04d22825 100644
15-
--- a/swift/utils/build_swift/build_swift/driver_arguments.py
16-
+++ b/swift/utils/build_swift/build_swift/driver_arguments.py
17-
@@ -677,6 +677,12 @@ def create_argument_parser():
18-
"for each cross-compiled toolchain's destdir, useful when building "
19-
"multiple toolchains and can be disabled if only cross-compiling one.")
20-
21-
+ option('--cross-compile-build-swift-tools', toggle_true,
22-
+ default=True,
23-
+ help="Cross-compile the Swift compiler, other host tools from the "
24-
+ "compiler repository, and various macros for each listed "
25-
+ "--cross-compile-hosts platform.")
26-
+
27-
option('--stdlib-deployment-targets', store,
28-
type=argparse.ShellSplitType(),
29-
default=None,
30-
diff --git a/swift/utils/build_swift/tests/expected_options.py b/swift/utils/build_swift/tests/expected_options.py
31-
index f8d1a3526ed..b655d610923 100644
32-
--- a/swift/utils/build_swift/tests/expected_options.py
33-
+++ b/swift/utils/build_swift/tests/expected_options.py
34-
@@ -155,6 +155,7 @@ EXPECTED_DEFAULTS = {
35-
'compiler_vendor': defaults.COMPILER_VENDOR,
36-
'coverage_db': None,
37-
'cross_compile_append_host_target_to_destdir': True,
38-
+ 'cross_compile_build_swift_tools': True,
39-
'cross_compile_deps_path': None,
40-
'cross_compile_hosts': [],
41-
'infer_cross_compile_hosts_on_darwin': False,
42-
@@ -622,6 +623,7 @@ EXPECTED_OPTIONS = [
43-
EnableOption('--build-swift-clang-overlays'),
44-
EnableOption('--build-swift-remote-mirror'),
45-
EnableOption('--cross-compile-append-host-target-to-destdir'),
46-
+ EnableOption('--cross-compile-build-swift-tools'),
47-
EnableOption('--color-in-tests'),
48-
EnableOption('--distcc'),
49-
EnableOption('--sccache'),
50-
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
51-
index a0289515fd0..355d72fe21f 100644
52-
--- a/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
53-
+++ b/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py
54-
@@ -119,6 +119,8 @@ class BuildScriptInvocation(object):
55-
"--cmake-generator", args.cmake_generator,
56-
"--cross-compile-append-host-target-to-destdir", str(
57-
args.cross_compile_append_host_target_to_destdir).lower(),
58-
+ "--cross-compile-build-swift-tools", str(
59-
+ args.cross_compile_build_swift_tools).lower(),
60-
"--build-jobs", str(args.build_jobs),
61-
"--lit-jobs", str(args.lit_jobs),
62-
"--common-cmake-options=%s" % ' '.join(
63-
diff --git a/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py b/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
64-
index dc338334f28..f1a9f4d28bf 100644
65-
--- a/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
66-
+++ b/swift/utils/swift_build_support/swift_build_support/products/cmake_product.py
67-
@@ -71,9 +71,7 @@ class CMakeProduct(product.Product):
68-
env=env)
69-
70-
is_llvm = self.product_name() == "llvm"
71-
- if (not is_llvm and not self.args.skip_build) or (
72-
- is_llvm and self.args._build_llvm
73-
- ):
74-
+ if (not is_llvm and not self.args.skip_build) or (is_llvm and build_llvm):
75-
cmake_opts = [self.build_dir, "--config", build_type]
76-
77-
shell.call(
78-
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
79-
index ffae1d66702..72e400c55be 100644
80-
--- a/swift/utils/swift_build_support/swift_build_support/products/llvm.py
81-
+++ b/swift/utils/swift_build_support/swift_build_support/products/llvm.py
82-
@@ -249,10 +249,13 @@ class LLVM(cmake_product.CMakeProduct):
83-
# space/time efficient than -g on that platform.
84-
llvm_cmake_options.define('LLVM_USE_SPLIT_DWARF:BOOL', 'YES')
85-
86-
- if not self.args._build_llvm:
87-
+ build = True
88-
+ if not self.args._build_llvm or (not self.args.cross_compile_build_swift_tools
89-
+ and self.is_cross_compile_target(host_target)):
90-
# Indicating we don't want to build LLVM at all should
91-
# override everything.
92-
build_targets = []
93-
+ build = False
94-
elif self.args.skip_build or not self.args.build_llvm:
95-
# We can't skip the build completely because the standalone
96-
# build of Swift depends on these.
97-
@@ -399,7 +402,8 @@ class LLVM(cmake_product.CMakeProduct):
98-
99-
self._handle_cxx_headers(host_target, platform)
100-
101-
- self.build_with_cmake(build_targets, self.args.llvm_build_variant, [])
102-
+ self.build_with_cmake(build_targets, self.args.llvm_build_variant, [],
103-
+ build_llvm=build)
104-
105-
# copy over the compiler-rt builtins for iOS/tvOS/watchOS to ensure
106-
# that Swift's stdlib can use compiler-rt builtins when targeting
107-
@@ -484,7 +488,9 @@ class LLVM(cmake_product.CMakeProduct):
108-
Whether or not this product should be installed with the given
109-
arguments.
110-
"""
111-
- return self.args.install_llvm
112-
+ return self.args.install_llvm and (
113-
+ self.args.cross_compile_build_swift_tools or
114-
+ not self.is_cross_compile_target(host_target))
115-
116-
def install(self, host_target):
117-
"""
118-
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
119-
index ddb3b553de7..d127424709c 100644
120-
--- a/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py
121-
+++ b/swift/utils/swift_build_support/swift_build_support/products/swift_testing_macros.py
122-
@@ -42,13 +42,24 @@ class SwiftTestingMacros(product.Product):
123-
return True
124-
125-
def should_build(self, host_target):
126-
- return True
127-
+ build_macros = not self.is_cross_compile_target(host_target) or \
128-
+ self.args.cross_compile_build_swift_tools
129-
+ if not build_macros:
130-
+ print("Skipping building Testing Macros for %s, because the host tools "
131-
+ "are not being built" % host_target)
132-
+ return build_macros
133-
134-
def should_test(self, host_target):
135-
return False
136-
137-
def should_install(self, host_target):
138-
- return self.args.install_swift_testing_macros
139-
+ install_macros = self.args.install_swift_testing_macros and \
140-
+ (not self.is_cross_compile_target(host_target) or
141-
+ self.args.cross_compile_build_swift_tools)
142-
+ if self.args.install_swift_testing_macros and not install_macros:
143-
+ print("Skipping installing Testing Macros for %s, because the host tools "
144-
+ "are not being built" % host_target)
145-
+ return install_macros
146-
147-
def _cmake_product(self, host_target):
148-
build_root = os.path.dirname(self.build_dir)
149-
@@ -121,3 +132,11 @@ class SwiftTestingMacrosCMakeShim(cmake_product.CMakeProduct):
150-
install_prefix = install_destdir + self.args.install_prefix
151-
152-
self.install_with_cmake(['install'], install_prefix)
153-
+
154-
+ @classmethod
155-
+ def is_build_script_impl_product(cls):
156-
+ return False
157-
+
158-
+ @classmethod
159-
+ def is_before_build_script_impl_product(cls):
160-
+ return False

0 commit comments

Comments
 (0)