Skip to content

Commit 6ad5c40

Browse files
authored
Merge pull request #81364 from etcwilde/ewilde/extend-swift-cmake-options
[Build-Script]: Extend Swift cmake options
2 parents e76b97e + 004a738 commit 6ad5c40

File tree

6 files changed

+31
-8
lines changed

6 files changed

+31
-8
lines changed

utils/build-presets.ini

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3152,20 +3152,20 @@ build-swift-examples=0
31523152
build-runtime-with-host-compiler=0
31533153
build-swift-libexec=0
31543154
build-swift-remote-mirror=0
3155+
build-swift-static-sdk-overlay=0
3156+
build-swift-static-stdlib=0
3157+
enable-experimental-concurrency=1
3158+
enable-experimental-distributed=0
3159+
enable-experimental-observation=0
3160+
enable-experimental-differentiable-programming=0
31553161

3156-
extra-cmake-options=
3162+
extra-llvm-cmake-options=
31573163
-DLLVM_TARGETS_TO_BUILD=AArch64;X86
31583164

3159-
swift-cmake-options=
3160-
-DSWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY:BOOL=YES
3161-
-DSWIFT_ENABLE_EXPERIMENTAL_OBSERVATION:BOOL=NO
3162-
-DSWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED:BOOL=NO
3163-
-DSWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING:BOOL=NO
3165+
extra-swift-cmake-options=
31643166
-DSWIFT_ENABLE_SWIFT_IN_SWIFT:BOOL=NO
31653167
-DSWIFT_INCLUDE_DOCS:BOOL=NO
31663168
-DSWIFT_BUILD_EXAMPLES:BOOL=OFF
3167-
-DSWIFT_BUILD_STATIC_SDK_OVERLAY:BOOL=NO
3168-
-DSWIFT_BUILD_STATIC_STDLIB:BOOL=NO
31693169

31703170
build-subdir=%(build_subdir)s
31713171
install-destdir=%(install_destdir)s

utils/build_swift/build_swift/driver_arguments.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,12 @@ def create_argument_parser():
595595
'will get little benefit from it (e.g. tools for '
596596
'bootstrapping or debugging Swift)')
597597

598+
option('--extra-swift-cmake-options', append,
599+
type=argparse.ShellSplitType(),
600+
help='Pass additional CMake options to the Swift build. '
601+
'Can be passed multiple times to add multiple options.',
602+
default=[])
603+
598604
option('--dsymutil-jobs', store_int,
599605
default=defaults.DSYMUTIL_JOBS,
600606
metavar='COUNT',
@@ -1412,6 +1418,13 @@ def create_argument_parser():
14121418
help='CMake options used for llvm in the form of comma '
14131419
'separated options "-DCMAKE_VAR1=YES,-DCMAKE_VAR2=/tmp". Can '
14141420
'be called multiple times to add multiple such options.')
1421+
option('--extra-llvm-cmake-options', append,
1422+
type=argparse.ShellSplitType(),
1423+
help='Pass additional CMake options to the LLVM build. '
1424+
'Can be passed multiple times to add multiple options. '
1425+
'These are the last arguments passed to CMake and can override '
1426+
'existing options.',
1427+
default=[])
14151428

14161429
option('--llvm-build-compiler-rt-with-use-runtimes', toggle_true, default=True,
14171430
help='Switch to LLVM_ENABLE_RUNTIMES as the mechanism to build compiler-rt'

utils/build_swift/tests/expected_options.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,9 @@
197197
'enable_ubsan': False,
198198
'export_compile_commands': False,
199199
'extra_cmake_options': [],
200+
'extra_llvm_cmake_options': [],
200201
'extra_swift_args': [],
202+
'extra_swift_cmake_options': [],
201203
'swift_debuginfo_non_lto_args': None,
202204
'force_optimized_typechecker': False,
203205
'foundation_build_variant': 'Debug',
@@ -806,6 +808,7 @@ class BuildScriptImplOption(_BaseOption):
806808
StrOption('--swift-darwin-module-archs'),
807809
StrOption('--swift-darwin-supported-archs'),
808810
SetTrueOption('--swift-freestanding-is-darwin'),
811+
AppendOption('--extra-swift-cmake-options'),
809812

810813
StrOption('--linux-archs'),
811814
StrOption('--linux-static-archs'),
@@ -856,6 +859,7 @@ class BuildScriptImplOption(_BaseOption):
856859
AppendOption('--llvm-ninja-targets'),
857860
AppendOption('--llvm-ninja-targets-for-cross-compile-hosts'),
858861
AppendOption('--llvm-cmake-options'),
862+
AppendOption('--extra-llvm-cmake-options'),
859863
EnableOption('--llvm-build-compiler-rt-with-use-runtimes'),
860864
AppendOption('--darwin-symroot-path-filters'),
861865

utils/swift_build_support/swift_build_support/products/llvm.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,7 @@ def build(self, host_target):
451451

452452
self.cmake_options.extend(host_config.cmake_options)
453453
self.cmake_options.extend(llvm_cmake_options)
454+
self.cmake_options.extend_raw(self.args.extra_llvm_cmake_options)
454455

455456
self._handle_cxx_headers(host_target, platform)
456457

utils/swift_build_support/swift_build_support/products/swift.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ def __init__(self, args, toolchain, source_dir, build_dir):
104104
self.cmake_options.extend(
105105
self._enable_new_runtime_build)
106106

107+
self.cmake_options.extend_raw(self.args.extra_swift_cmake_options)
108+
107109
@classmethod
108110
def product_source_name(cls):
109111
"""product_source_name() -> str

utils/swift_build_support/tests/products/test_swift.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def setUp(self):
5252
benchmark_num_o_iterations=3,
5353
disable_guaranteed_normal_arguments=True,
5454
force_optimized_typechecker=False,
55+
extra_swift_cmake_options=["-DHELLO=YES"],
5556
enable_stdlibcore_exclusivity_checking=False,
5657
enable_experimental_differentiable_programming=False,
5758
enable_experimental_concurrency=False,
@@ -125,6 +126,7 @@ def test_by_default_no_cmake_options(self):
125126
'-USWIFT_DEBUGINFO_NON_LTO_ARGS',
126127
'-DSWIFT_STDLIB_BUILD_SYMBOL_GRAPHS:BOOL=FALSE',
127128
'-DSWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL=FALSE',
129+
'-DHELLO=YES',
128130
]
129131
self.assertEqual(set(swift.cmake_options), set(expected))
130132

@@ -161,6 +163,7 @@ def test_swift_runtime_tsan(self):
161163
'-USWIFT_DEBUGINFO_NON_LTO_ARGS',
162164
'-DSWIFT_STDLIB_BUILD_SYMBOL_GRAPHS:BOOL=FALSE',
163165
'-DSWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL=FALSE',
166+
'-DHELLO=YES',
164167
]
165168
self.assertEqual(set(swift.cmake_options), set(flags_set))
166169

0 commit comments

Comments
 (0)