Skip to content

Commit da6dff3

Browse files
Merge pull request #68713 from AnthonyLatsis/test-generate-xcode
2 parents 6b88070 + 2644adf commit da6dff3

File tree

5 files changed

+34
-16
lines changed

5 files changed

+34
-16
lines changed

utils/swift_build_support/swift_build_support/products/cmake_product.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ def build_with_cmake(self, build_targets, build_type, build_args,
7070
+ self.args.extra_cmake_options + [self.source_dir],
7171
env=env)
7272

73-
if not self.args.skip_build or self.product_name() == "llvm":
73+
is_llvm = self.product_name() == "llvm"
74+
if (not is_llvm and not self.args.skip_build) or (
75+
is_llvm and self.args._build_llvm
76+
):
7477
cmake_opts = [self.build_dir, "--config", build_type]
7578

7679
if self.args.cmake_generator == "Xcode":

utils/swift_build_support/swift_build_support/products/llvm.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -216,20 +216,11 @@ def build(self, host_target):
216216
# space/time efficient than -g on that platform.
217217
llvm_cmake_options.define('LLVM_USE_SPLIT_DWARF:BOOL', 'YES')
218218

219-
build_targets = ['all']
220-
221-
if self.args.llvm_ninja_targets_for_cross_compile_hosts and \
222-
self.is_cross_compile_target(host_target):
223-
build_targets = (self.args.llvm_ninja_targets_for_cross_compile_hosts)
224-
elif self.args.llvm_ninja_targets:
225-
build_targets = (self.args.llvm_ninja_targets)
226-
227-
# indicating we don't want to build LLVM should
228-
# override any custom ninja target we specified
229219
if not self.args._build_llvm:
230-
build_targets = ['clean']
231-
232-
if self.args.skip_build or not self.args.build_llvm:
220+
# Indicating we don't want to build LLVM at all should
221+
# override everything.
222+
build_targets = []
223+
elif self.args.skip_build or not self.args.build_llvm:
233224
# We can't skip the build completely because the standalone
234225
# build of Swift depends on these.
235226
build_targets = ['llvm-tblgen', 'clang-resource-headers',
@@ -248,6 +239,14 @@ def build(self, host_target):
248239
'llvm-nm',
249240
'llvm-size'
250241
])
242+
else:
243+
build_targets = ['all']
244+
245+
if self.args.llvm_ninja_targets_for_cross_compile_hosts and \
246+
self.is_cross_compile_target(host_target):
247+
build_targets = (self.args.llvm_ninja_targets_for_cross_compile_hosts)
248+
elif self.args.llvm_ninja_targets:
249+
build_targets = (self.args.llvm_ninja_targets)
251250

252251
if self.args.host_libtool:
253252
llvm_cmake_options.define('CMAKE_LIBTOOL', self.args.host_libtool)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# RUN: %empty-directory(%t)
2+
# RUN: %empty-directory(%t/Xcode)
3+
4+
# Build system generation for 'swift' depends on several LLVM tools
5+
# (e.g. llvm-tblgen). This is why we still build them with '--skip-build' or
6+
# '--skip-build-llvm' set, and have an additional '--build-llvm' option to
7+
# actually skip building that bare minimum too.
8+
#
9+
# To save time, borrow these dependencies from the current build directories,
10+
# and test Xcode project generation only for 'swift'.
11+
12+
# RUN: ln -s %swift_obj_root/../cmark-%target-os-%target-arch %t/Xcode/cmark-%target-os-%target-arch
13+
# RUN: ln -s %swift_obj_root/../llvm-%target-os-%target-arch %t/Xcode/llvm-%target-os-%target-arch
14+
# RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --cmake %cmake --swift-darwin-supported-archs="$(uname -m)" --build-subdir="Xcode" --skip-build-cmark --build-llvm=0 --xcode
15+
16+
# REQUIRES: standalone_build
17+
# REQUIRES: OS=macosx

validation-test/BuildSystem/llvm-targets-options.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
# RUN: mkdir -p %t
99
# RUN: SKIP_XCODE_VERSION_CHECK=1 SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --dry-run --build-llvm=0 --llvm-ninja-targets="lib/all clangDependencyScanning" --cmake %cmake 2>&1 | %FileCheck --check-prefix=BUILD-LLVM-0-CHECK %s
1010

11-
# BUILD-LLVM-0-CHECK: cmake --build {{.*}}/llvm-{{[^/]*}} clean
11+
# BUILD-LLVM-0-CHECK-NOT: cmake --build {{.*}}/Ninja-DebugAssert/llvm
1212

1313

1414
# RUN: %empty-directory(%t)

validation-test/BuildSystem/skip_build_xcode.test

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# RUN: %empty-directory(%t)
2-
# RUN: mkdir -p %t
32
# RUN: SKIP_XCODE_VERSION_CHECK=1 SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --xcode --release --swift-darwin-supported-archs="$(uname -m)" --dry-run --cmake %cmake 2>&1 | %FileCheck %s
43

54
# REQUIRES: standalone_build

0 commit comments

Comments
 (0)