Skip to content

Commit 4de714f

Browse files
authored
Merge pull request swiftlang#83464 from edymtt/edymtt/separate-deployment-version-for-tests
Test: allow different deployment target versions for tests on Darwin
2 parents e690f1d + 4e854de commit 4de714f

File tree

9 files changed

+111
-16
lines changed

9 files changed

+111
-16
lines changed

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,17 @@ set(COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_WATCHOS "2.0")
630630
set(COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_XROS "1.0")
631631
set(COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_MACCATALYST "13.1")
632632

633+
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX "${SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX}" CACHE STRING
634+
"Deployment target version for building macOS tests")
635+
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS}" CACHE STRING
636+
"Deployment target version for building iOS tests")
637+
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS}" CACHE STRING
638+
"Deployment target version for building tvOS tests")
639+
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS}" CACHE STRING
640+
"Deployment target version for building watchOS tests")
641+
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_XROS}" CACHE STRING
642+
"Deployment target version for building visionOS tests")
643+
633644
#
634645
# User-configurable debugging options.
635646
#

cmake/modules/DarwinSDKs.cmake

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ is_sdk_requested(OSX swift_build_osx)
1212
if(swift_build_osx)
1313
configure_sdk_darwin(
1414
OSX "OS X" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX}"
15-
macosx macosx macos macOS "${SUPPORTED_OSX_ARCHS}")
15+
macosx macosx macos macOS "${SUPPORTED_OSX_ARCHS}"
16+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX}")
1617
configure_target_variant(OSX-DA "OS X Debug+Asserts" OSX DA "Debug+Asserts")
1718
configure_target_variant(OSX-RA "OS X Release+Asserts" OSX RA "Release+Asserts")
1819
configure_target_variant(OSX-R "OS X Release" OSX R "Release")
@@ -36,7 +37,8 @@ if(swift_build_freestanding AND (SWIFT_FREESTANDING_FLAVOR STREQUAL "apple"))
3637
FREESTANDING "FREESTANDING" "${SWIFT_FREESTANDING_DEPLOYMENT_VERSION}"
3738
"${SWIFT_FREESTANDING_SDK}"
3839
"${SWIFT_FREESTANDING_TRIPLE_NAME}" "${SWIFT_FREESTANDING_MODULE_NAME}"
39-
"${SWIFT_FREESTANDING_AVAILABILITY_NAME}" "${SWIFT_FREESTANDING_ARCHS}")
40+
"${SWIFT_FREESTANDING_AVAILABILITY_NAME}" "${SWIFT_FREESTANDING_ARCHS}"
41+
"${SWIFT_FREESTANDING_DEPLOYMENT_VERSION}")
4042
set(SWIFT_SDK_FREESTANDING_LIB_SUBDIR "freestanding")
4143
configure_target_variant(FREESTANDING-DA "FREESTANDING Debug+Asserts" FREESTANDING DA "Debug+Asserts")
4244
configure_target_variant(FREESTANDING-RA "FREESTANDING Release+Asserts" FREESTANDING RA "Release+Asserts")
@@ -54,7 +56,8 @@ is_sdk_requested(IOS swift_build_ios)
5456
if(swift_build_ios)
5557
configure_sdk_darwin(
5658
IOS "iOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS}"
57-
iphoneos ios ios iOS "${SUPPORTED_IOS_ARCHS}")
59+
iphoneos ios ios iOS "${SUPPORTED_IOS_ARCHS}"
60+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS}")
5861
configure_target_variant(IOS-DA "iOS Debug+Asserts" IOS DA "Debug+Asserts")
5962
configure_target_variant(IOS-RA "iOS Release+Asserts" IOS RA "Release+Asserts")
6063
configure_target_variant(IOS-R "iOS Release" IOS R "Release")
@@ -65,7 +68,8 @@ if(swift_build_ios_simulator)
6568
configure_sdk_darwin(
6669
IOS_SIMULATOR "iOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS}"
6770
iphonesimulator ios ios-simulator iOS
68-
"${SUPPORTED_IOS_SIMULATOR_ARCHS}")
71+
"${SUPPORTED_IOS_SIMULATOR_ARCHS}"
72+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS}")
6973
configure_target_variant(
7074
IOS_SIMULATOR-DA "iOS Debug+Asserts" IOS_SIMULATOR DA "Debug+Asserts")
7175
configure_target_variant(
@@ -78,7 +82,8 @@ is_sdk_requested(TVOS swift_build_tvos)
7882
if(swift_build_tvos)
7983
configure_sdk_darwin(
8084
TVOS "tvOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS}"
81-
appletvos tvos tvos tvOS "${SUPPORTED_TVOS_ARCHS}")
85+
appletvos tvos tvos tvOS "${SUPPORTED_TVOS_ARCHS}"
86+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS}")
8287
configure_target_variant(TVOS-DA "tvOS Debug+Asserts" TVOS DA "Debug+Asserts")
8388
configure_target_variant(TVOS-RA "tvOS Release+Asserts" TVOS RA "Release+Asserts")
8489
configure_target_variant(TVOS-R "tvOS Release" TVOS R "Release")
@@ -89,7 +94,8 @@ if(swift_build_tvos_simulator)
8994
configure_sdk_darwin(
9095
TVOS_SIMULATOR "tvOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS}"
9196
appletvsimulator tvos tvos-simulator tvOS
92-
"${SUPPORTED_TVOS_SIMULATOR_ARCHS}")
97+
"${SUPPORTED_TVOS_SIMULATOR_ARCHS}"
98+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS}")
9399
configure_target_variant(
94100
TVOS_SIMULATOR-DA "tvOS Debug+Asserts" TVOS_SIMULATOR DA "Debug+Asserts")
95101
configure_target_variant(
@@ -102,7 +108,8 @@ is_sdk_requested(WATCHOS swift_build_watchos)
102108
if(swift_build_watchos)
103109
configure_sdk_darwin(
104110
WATCHOS "watchOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
105-
watchos watchos watchos watchOS "${SUPPORTED_WATCHOS_ARCHS}")
111+
watchos watchos watchos watchOS "${SUPPORTED_WATCHOS_ARCHS}"
112+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS}")
106113
configure_target_variant(WATCHOS-DA "watchOS Debug+Asserts" WATCHOS DA "Debug+Asserts")
107114
configure_target_variant(WATCHOS-RA "watchOS Release+Asserts" WATCHOS RA "Release+Asserts")
108115
configure_target_variant(WATCHOS-R "watchOS Release" WATCHOS R "Release")
@@ -113,7 +120,8 @@ if(swift_build_watchos_simulator)
113120
configure_sdk_darwin(
114121
WATCHOS_SIMULATOR "watchOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
115122
watchsimulator watchos watchos-simulator watchOS
116-
"${SUPPORTED_WATCHOS_SIMULATOR_ARCHS}")
123+
"${SUPPORTED_WATCHOS_SIMULATOR_ARCHS}"
124+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS}")
117125
configure_target_variant(WATCHOS_SIMULATOR-DA "watchOS Debug+Asserts" WATCHOS_SIMULATOR DA "Debug+Asserts")
118126
configure_target_variant(WATCHOS_SIMULATOR-RA "watchOS Release+Asserts" WATCHOS_SIMULATOR RA "Release+Asserts")
119127
configure_target_variant(WATCHOS_SIMULATOR-R "watchOS Release" WATCHOS_SIMULATOR R "Release")
@@ -123,7 +131,8 @@ is_sdk_requested(XROS swift_build_xros)
123131
if(swift_build_xros)
124132
configure_sdk_darwin(
125133
XROS "xrOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_XROS}"
126-
xros xros xros visionOS "${SUPPORTED_XROS_ARCHS}")
134+
xros xros xros visionOS "${SUPPORTED_XROS_ARCHS}"
135+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS}")
127136
configure_target_variant(XROS-DA "xrOS Debug+Asserts" XROS DA "Debug+Asserts")
128137
configure_target_variant(XROS-RA "xrOS Release+Asserts" XROS RA "Release+Asserts")
129138
configure_target_variant(XROS-R "xrOS Release" XROS R "Release")
@@ -134,7 +143,8 @@ if(swift_build_xros_simulator)
134143
configure_sdk_darwin(
135144
XROS_SIMULATOR "xrOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_XROS}"
136145
xrsimulator xros xros-simulator visionOS
137-
"${SUPPORTED_XROS_SIMULATOR_ARCHS}")
146+
"${SUPPORTED_XROS_SIMULATOR_ARCHS}"
147+
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS}")
138148

139149
configure_target_variant(
140150
XROS_SIMULATOR-DA "xrOS Simulator Debug+Asserts" XROS_SIMULATOR DA "Debug+Asserts")

cmake/modules/SwiftConfigureSDK.cmake

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function(_report_sdk prefix)
3232
message(STATUS " Version: ${SWIFT_SDK_${prefix}_VERSION}")
3333
message(STATUS " Build number: ${SWIFT_SDK_${prefix}_BUILD_NUMBER}")
3434
message(STATUS " Deployment version: ${SWIFT_SDK_${prefix}_DEPLOYMENT_VERSION}")
35+
message(STATUS " Deployment version for tests: ${SWIFT_SDK_${prefix}_TEST_DEPLOYMENT_VERSION}")
3536
message(STATUS " Triple name: ${SWIFT_SDK_${prefix}_TRIPLE_NAME}")
3637
message(STATUS " Simulator: ${SWIFT_SDK_${prefix}_IS_SIMULATOR}")
3738
endif()
@@ -138,6 +139,7 @@ endfunction()
138139
# triple_name # The name used in Swift's -triple
139140
# availability_name # The name used in Swift's @availability
140141
# architectures # A list of architectures this SDK supports
142+
# test_deployment_version # Deployment versions to be used for tests
141143
# )
142144
#
143145
# Sadly there are three OS naming conventions.
@@ -170,7 +172,8 @@ endfunction()
170172
#
171173
macro(configure_sdk_darwin
172174
prefix name deployment_version xcrun_name
173-
triple_name module_name availability_name architectures)
175+
triple_name module_name availability_name architectures
176+
test_deployment_version)
174177
# Note: this has to be implemented as a macro because it sets global
175178
# variables.
176179

@@ -202,6 +205,11 @@ macro(configure_sdk_darwin
202205
# Set other variables.
203206
set(SWIFT_SDK_${prefix}_NAME "${name}")
204207
set(SWIFT_SDK_${prefix}_DEPLOYMENT_VERSION "${deployment_version}")
208+
if(NOT "${test_deployment_version}" STREQUAL "")
209+
set(SWIFT_SDK_${prefix}_TEST_DEPLOYMENT_VERSION "${test_deployment_version}")
210+
else()
211+
set(SWIFT_SDK_${prefix}_TEST_DEPLOYMENT_VERSION "${deployment_version}")
212+
endif()
205213
set(SWIFT_SDK_${prefix}_LIB_SUBDIR "${xcrun_name}")
206214
set(SWIFT_SDK_${prefix}_TRIPLE_NAME "${triple_name}")
207215
set(SWIFT_SDK_${prefix}_AVAILABILITY_NAME "${availability_name}")

test/cmake/modules/SwiftTestUtils.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ function(get_swift_test_versioned_target_triple variant_triple_out_var sdk arch
3030
# Use the macCatalyst target triple and compiler resources for the iOS-like build flavor.
3131
set(variant_triple "${arch}-apple-ios13.1-macabi")
3232
else()
33-
get_versioned_target_triple(variant_triple ${sdk} ${arch} "${SWIFT_SDK_${sdk}_DEPLOYMENT_VERSION}")
33+
get_versioned_target_triple(variant_triple ${sdk} ${arch} "${SWIFT_SDK_${sdk}_TEST_DEPLOYMENT_VERSION}")
3434
endif()
3535

3636
set(${variant_triple_out_var} "${variant_triple}" PARENT_SCOPE)

utils/build_swift/build_swift/driver_arguments.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,27 @@ def create_argument_parser():
549549
metavar='MAJOR.MINOR',
550550
help='minimum deployment target version for xrOS')
551551

552+
option('--darwin-test-deployment-version-osx', store,
553+
default=defaults.DARWIN_DEPLOYMENT_VERSION_OSX,
554+
metavar='MAJOR.MINOR',
555+
help='deployment target version to use when building macOS tests')
556+
option('--darwin-test-deployment-version-ios', store,
557+
default=defaults.DARWIN_DEPLOYMENT_VERSION_IOS,
558+
metavar='MAJOR.MINOR',
559+
help='deployment target version to use when building iOS tests')
560+
option('--darwin-test-deployment-version-tvos', store,
561+
default=defaults.DARWIN_DEPLOYMENT_VERSION_TVOS,
562+
metavar='MAJOR.MINOR',
563+
help='deployment target version to use when building tvOS tests')
564+
option('--darwin-test-deployment-version-watchos', store,
565+
default=defaults.DARWIN_DEPLOYMENT_VERSION_WATCHOS,
566+
metavar='MAJOR.MINOR',
567+
help='deployment target version to use when building watchOS tests')
568+
option('--darwin-test-deployment-version-xros', store,
569+
default=defaults.DARWIN_DEPLOYMENT_VERSION_XROS,
570+
metavar='MAJOR.MINOR',
571+
help='deployment target version to use when building visionOS tests')
572+
552573
option('--extra-cmake-options', append,
553574
type=argparse.ShellSplitType(),
554575
help='Pass through extra options to CMake in the form of comma '

utils/build_swift/tests/expected_options.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,16 @@
169169
defaults.DARWIN_DEPLOYMENT_VERSION_WATCHOS,
170170
'darwin_deployment_version_xros':
171171
defaults.DARWIN_DEPLOYMENT_VERSION_XROS,
172+
'darwin_test_deployment_version_osx':
173+
defaults.DARWIN_DEPLOYMENT_VERSION_OSX,
174+
'darwin_test_deployment_version_ios':
175+
defaults.DARWIN_DEPLOYMENT_VERSION_IOS,
176+
'darwin_test_deployment_version_tvos':
177+
defaults.DARWIN_DEPLOYMENT_VERSION_TVOS,
178+
'darwin_test_deployment_version_watchos':
179+
defaults.DARWIN_DEPLOYMENT_VERSION_WATCHOS,
180+
'darwin_test_deployment_version_xros':
181+
defaults.DARWIN_DEPLOYMENT_VERSION_XROS,
172182
'darwin_symroot_path_filters': [],
173183
'darwin_xcrun_toolchain': None,
174184
'distcc': False,
@@ -805,6 +815,11 @@ class BuildScriptImplOption(_BaseOption):
805815
StrOption('--darwin-deployment-version-tvos'),
806816
StrOption('--darwin-deployment-version-watchos'),
807817
StrOption('--darwin-deployment-version-xros'),
818+
StrOption('--darwin-test-deployment-version-osx'),
819+
StrOption('--darwin-test-deployment-version-ios'),
820+
StrOption('--darwin-test-deployment-version-tvos'),
821+
StrOption('--darwin-test-deployment-version-watchos'),
822+
StrOption('--darwin-test-deployment-version-xros'),
808823
DisableOption('--skip-test-xros-host', dest='test_xros_host'),
809824
DisableOption('--skip-test-xros', dest='test_xros'),
810825
DisableOption('--skip-test-xros-simulator', dest='test_xros_simulator'),

utils/swift_build_support/swift_build_support/products/swift.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ def __init__(self, args, toolchain, source_dir, build_dir):
106106
self.cmake_options.extend(
107107
self._enable_new_runtime_build)
108108

109+
self.cmake_options.extend(
110+
self._darwin_test_deployment_versions)
111+
109112
self.cmake_options.extend_raw(self.args.extra_swift_cmake_options)
110113

111114
@classmethod
@@ -307,6 +310,19 @@ def _enable_new_runtime_build(self):
307310
return [('SWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL',
308311
self.args.enable_new_runtime_build)]
309312

313+
@property
314+
def _darwin_test_deployment_versions(self):
315+
return [('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX:STRING',
316+
self.args.darwin_test_deployment_version_osx),
317+
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS:STRING',
318+
self.args.darwin_test_deployment_version_ios),
319+
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS:STRING',
320+
self.args.darwin_test_deployment_version_tvos),
321+
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS:STRING',
322+
self.args.darwin_test_deployment_version_watchos),
323+
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS:STRING',
324+
self.args.darwin_test_deployment_version_xros)]
325+
310326
def _handle_swift_debuginfo_non_lto_args(self):
311327
if ('swift_debuginfo_non_lto_args' not in self.args
312328
or self.args.swift_debuginfo_non_lto_args is None):

utils/swift_build_support/tests/products/test_swift.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,12 @@ def setUp(self):
7474
build_swift_private_stdlib=True,
7575
swift_tools_ld64_lto_codegen_only_for_supporting_targets=False,
7676
build_stdlib_docs=False,
77-
enable_new_runtime_build=False)
77+
enable_new_runtime_build=False,
78+
darwin_test_deployment_version_osx="10.9",
79+
darwin_test_deployment_version_ios="15.0",
80+
darwin_test_deployment_version_tvos="14.0",
81+
darwin_test_deployment_version_watchos="6.0",
82+
darwin_test_deployment_version_xros="1.0")
7883

7984
# Setup shell
8085
shell.dry_run = True
@@ -126,6 +131,11 @@ def test_by_default_no_cmake_options(self):
126131
'-USWIFT_DEBUGINFO_NON_LTO_ARGS',
127132
'-DSWIFT_STDLIB_BUILD_SYMBOL_GRAPHS:BOOL=FALSE',
128133
'-DSWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL=FALSE',
134+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX:STRING=10.9',
135+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS:STRING=15.0',
136+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS:STRING=14.0',
137+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS:STRING=6.0',
138+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS:STRING=1.0',
129139
'-DHELLO=YES',
130140
]
131141
self.assertEqual(set(swift.cmake_options), set(expected))
@@ -163,6 +173,11 @@ def test_swift_runtime_tsan(self):
163173
'-USWIFT_DEBUGINFO_NON_LTO_ARGS',
164174
'-DSWIFT_STDLIB_BUILD_SYMBOL_GRAPHS:BOOL=FALSE',
165175
'-DSWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL=FALSE',
176+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX:STRING=10.9',
177+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS:STRING=15.0',
178+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS:STRING=14.0',
179+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS:STRING=6.0',
180+
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS:STRING=1.0',
166181
'-DHELLO=YES',
167182
]
168183
self.assertEqual(set(swift.cmake_options), set(flags_set))

utils/swift_build_support/tests/test_toolchain.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,8 @@ def test_misc_tools(self):
5353
tc = host_toolchain()
5454

5555
# CMake
56-
self.assertIsNotNone(tc.cmake)
57-
self.assertTrue(
58-
os.path.basename(tc.cmake).startswith('cmake'))
56+
self.assertTrue(tc.cmake is None or
57+
os.path.basename(tc.cmake).startswith('cmake'))
5958

6059
# Ninja
6160
self.assertTrue(tc.ninja is None or

0 commit comments

Comments
 (0)