mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #83464 from edymtt/edymtt/separate-deployment-version-for-tests
Test: allow different deployment target versions for tests on Darwin
This commit is contained in:
@@ -630,6 +630,17 @@ set(COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_WATCHOS "2.0")
|
||||
set(COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_XROS "1.0")
|
||||
set(COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_MACCATALYST "13.1")
|
||||
|
||||
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX "${SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX}" CACHE STRING
|
||||
"Deployment target version for building macOS tests")
|
||||
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS}" CACHE STRING
|
||||
"Deployment target version for building iOS tests")
|
||||
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS}" CACHE STRING
|
||||
"Deployment target version for building tvOS tests")
|
||||
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS}" CACHE STRING
|
||||
"Deployment target version for building watchOS tests")
|
||||
set(SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS "${SWIFT_DARWIN_DEPLOYMENT_VERSION_XROS}" CACHE STRING
|
||||
"Deployment target version for building visionOS tests")
|
||||
|
||||
#
|
||||
# User-configurable debugging options.
|
||||
#
|
||||
|
||||
@@ -12,7 +12,8 @@ is_sdk_requested(OSX swift_build_osx)
|
||||
if(swift_build_osx)
|
||||
configure_sdk_darwin(
|
||||
OSX "OS X" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX}"
|
||||
macosx macosx macos macOS "${SUPPORTED_OSX_ARCHS}")
|
||||
macosx macosx macos macOS "${SUPPORTED_OSX_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX}")
|
||||
configure_target_variant(OSX-DA "OS X Debug+Asserts" OSX DA "Debug+Asserts")
|
||||
configure_target_variant(OSX-RA "OS X Release+Asserts" OSX RA "Release+Asserts")
|
||||
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"))
|
||||
FREESTANDING "FREESTANDING" "${SWIFT_FREESTANDING_DEPLOYMENT_VERSION}"
|
||||
"${SWIFT_FREESTANDING_SDK}"
|
||||
"${SWIFT_FREESTANDING_TRIPLE_NAME}" "${SWIFT_FREESTANDING_MODULE_NAME}"
|
||||
"${SWIFT_FREESTANDING_AVAILABILITY_NAME}" "${SWIFT_FREESTANDING_ARCHS}")
|
||||
"${SWIFT_FREESTANDING_AVAILABILITY_NAME}" "${SWIFT_FREESTANDING_ARCHS}"
|
||||
"${SWIFT_FREESTANDING_DEPLOYMENT_VERSION}")
|
||||
set(SWIFT_SDK_FREESTANDING_LIB_SUBDIR "freestanding")
|
||||
configure_target_variant(FREESTANDING-DA "FREESTANDING Debug+Asserts" FREESTANDING DA "Debug+Asserts")
|
||||
configure_target_variant(FREESTANDING-RA "FREESTANDING Release+Asserts" FREESTANDING RA "Release+Asserts")
|
||||
@@ -54,7 +56,8 @@ is_sdk_requested(IOS swift_build_ios)
|
||||
if(swift_build_ios)
|
||||
configure_sdk_darwin(
|
||||
IOS "iOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS}"
|
||||
iphoneos ios ios iOS "${SUPPORTED_IOS_ARCHS}")
|
||||
iphoneos ios ios iOS "${SUPPORTED_IOS_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS}")
|
||||
configure_target_variant(IOS-DA "iOS Debug+Asserts" IOS DA "Debug+Asserts")
|
||||
configure_target_variant(IOS-RA "iOS Release+Asserts" IOS RA "Release+Asserts")
|
||||
configure_target_variant(IOS-R "iOS Release" IOS R "Release")
|
||||
@@ -65,7 +68,8 @@ if(swift_build_ios_simulator)
|
||||
configure_sdk_darwin(
|
||||
IOS_SIMULATOR "iOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS}"
|
||||
iphonesimulator ios ios-simulator iOS
|
||||
"${SUPPORTED_IOS_SIMULATOR_ARCHS}")
|
||||
"${SUPPORTED_IOS_SIMULATOR_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS}")
|
||||
configure_target_variant(
|
||||
IOS_SIMULATOR-DA "iOS Debug+Asserts" IOS_SIMULATOR DA "Debug+Asserts")
|
||||
configure_target_variant(
|
||||
@@ -78,7 +82,8 @@ is_sdk_requested(TVOS swift_build_tvos)
|
||||
if(swift_build_tvos)
|
||||
configure_sdk_darwin(
|
||||
TVOS "tvOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS}"
|
||||
appletvos tvos tvos tvOS "${SUPPORTED_TVOS_ARCHS}")
|
||||
appletvos tvos tvos tvOS "${SUPPORTED_TVOS_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS}")
|
||||
configure_target_variant(TVOS-DA "tvOS Debug+Asserts" TVOS DA "Debug+Asserts")
|
||||
configure_target_variant(TVOS-RA "tvOS Release+Asserts" TVOS RA "Release+Asserts")
|
||||
configure_target_variant(TVOS-R "tvOS Release" TVOS R "Release")
|
||||
@@ -89,7 +94,8 @@ if(swift_build_tvos_simulator)
|
||||
configure_sdk_darwin(
|
||||
TVOS_SIMULATOR "tvOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_TVOS}"
|
||||
appletvsimulator tvos tvos-simulator tvOS
|
||||
"${SUPPORTED_TVOS_SIMULATOR_ARCHS}")
|
||||
"${SUPPORTED_TVOS_SIMULATOR_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS}")
|
||||
configure_target_variant(
|
||||
TVOS_SIMULATOR-DA "tvOS Debug+Asserts" TVOS_SIMULATOR DA "Debug+Asserts")
|
||||
configure_target_variant(
|
||||
@@ -102,7 +108,8 @@ is_sdk_requested(WATCHOS swift_build_watchos)
|
||||
if(swift_build_watchos)
|
||||
configure_sdk_darwin(
|
||||
WATCHOS "watchOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
|
||||
watchos watchos watchos watchOS "${SUPPORTED_WATCHOS_ARCHS}")
|
||||
watchos watchos watchos watchOS "${SUPPORTED_WATCHOS_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS}")
|
||||
configure_target_variant(WATCHOS-DA "watchOS Debug+Asserts" WATCHOS DA "Debug+Asserts")
|
||||
configure_target_variant(WATCHOS-RA "watchOS Release+Asserts" WATCHOS RA "Release+Asserts")
|
||||
configure_target_variant(WATCHOS-R "watchOS Release" WATCHOS R "Release")
|
||||
@@ -113,7 +120,8 @@ if(swift_build_watchos_simulator)
|
||||
configure_sdk_darwin(
|
||||
WATCHOS_SIMULATOR "watchOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
|
||||
watchsimulator watchos watchos-simulator watchOS
|
||||
"${SUPPORTED_WATCHOS_SIMULATOR_ARCHS}")
|
||||
"${SUPPORTED_WATCHOS_SIMULATOR_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS}")
|
||||
configure_target_variant(WATCHOS_SIMULATOR-DA "watchOS Debug+Asserts" WATCHOS_SIMULATOR DA "Debug+Asserts")
|
||||
configure_target_variant(WATCHOS_SIMULATOR-RA "watchOS Release+Asserts" WATCHOS_SIMULATOR RA "Release+Asserts")
|
||||
configure_target_variant(WATCHOS_SIMULATOR-R "watchOS Release" WATCHOS_SIMULATOR R "Release")
|
||||
@@ -123,7 +131,8 @@ is_sdk_requested(XROS swift_build_xros)
|
||||
if(swift_build_xros)
|
||||
configure_sdk_darwin(
|
||||
XROS "xrOS" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_XROS}"
|
||||
xros xros xros visionOS "${SUPPORTED_XROS_ARCHS}")
|
||||
xros xros xros visionOS "${SUPPORTED_XROS_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS}")
|
||||
configure_target_variant(XROS-DA "xrOS Debug+Asserts" XROS DA "Debug+Asserts")
|
||||
configure_target_variant(XROS-RA "xrOS Release+Asserts" XROS RA "Release+Asserts")
|
||||
configure_target_variant(XROS-R "xrOS Release" XROS R "Release")
|
||||
@@ -134,7 +143,8 @@ if(swift_build_xros_simulator)
|
||||
configure_sdk_darwin(
|
||||
XROS_SIMULATOR "xrOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_XROS}"
|
||||
xrsimulator xros xros-simulator visionOS
|
||||
"${SUPPORTED_XROS_SIMULATOR_ARCHS}")
|
||||
"${SUPPORTED_XROS_SIMULATOR_ARCHS}"
|
||||
"${SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS}")
|
||||
|
||||
configure_target_variant(
|
||||
XROS_SIMULATOR-DA "xrOS Simulator Debug+Asserts" XROS_SIMULATOR DA "Debug+Asserts")
|
||||
|
||||
@@ -32,6 +32,7 @@ function(_report_sdk prefix)
|
||||
message(STATUS " Version: ${SWIFT_SDK_${prefix}_VERSION}")
|
||||
message(STATUS " Build number: ${SWIFT_SDK_${prefix}_BUILD_NUMBER}")
|
||||
message(STATUS " Deployment version: ${SWIFT_SDK_${prefix}_DEPLOYMENT_VERSION}")
|
||||
message(STATUS " Deployment version for tests: ${SWIFT_SDK_${prefix}_TEST_DEPLOYMENT_VERSION}")
|
||||
message(STATUS " Triple name: ${SWIFT_SDK_${prefix}_TRIPLE_NAME}")
|
||||
message(STATUS " Simulator: ${SWIFT_SDK_${prefix}_IS_SIMULATOR}")
|
||||
endif()
|
||||
@@ -138,6 +139,7 @@ endfunction()
|
||||
# triple_name # The name used in Swift's -triple
|
||||
# availability_name # The name used in Swift's @availability
|
||||
# architectures # A list of architectures this SDK supports
|
||||
# test_deployment_version # Deployment versions to be used for tests
|
||||
# )
|
||||
#
|
||||
# Sadly there are three OS naming conventions.
|
||||
@@ -170,7 +172,8 @@ endfunction()
|
||||
#
|
||||
macro(configure_sdk_darwin
|
||||
prefix name deployment_version xcrun_name
|
||||
triple_name module_name availability_name architectures)
|
||||
triple_name module_name availability_name architectures
|
||||
test_deployment_version)
|
||||
# Note: this has to be implemented as a macro because it sets global
|
||||
# variables.
|
||||
|
||||
@@ -202,6 +205,11 @@ macro(configure_sdk_darwin
|
||||
# Set other variables.
|
||||
set(SWIFT_SDK_${prefix}_NAME "${name}")
|
||||
set(SWIFT_SDK_${prefix}_DEPLOYMENT_VERSION "${deployment_version}")
|
||||
if(NOT "${test_deployment_version}" STREQUAL "")
|
||||
set(SWIFT_SDK_${prefix}_TEST_DEPLOYMENT_VERSION "${test_deployment_version}")
|
||||
else()
|
||||
set(SWIFT_SDK_${prefix}_TEST_DEPLOYMENT_VERSION "${deployment_version}")
|
||||
endif()
|
||||
set(SWIFT_SDK_${prefix}_LIB_SUBDIR "${xcrun_name}")
|
||||
set(SWIFT_SDK_${prefix}_TRIPLE_NAME "${triple_name}")
|
||||
set(SWIFT_SDK_${prefix}_AVAILABILITY_NAME "${availability_name}")
|
||||
|
||||
@@ -30,7 +30,7 @@ function(get_swift_test_versioned_target_triple variant_triple_out_var sdk arch
|
||||
# Use the macCatalyst target triple and compiler resources for the iOS-like build flavor.
|
||||
set(variant_triple "${arch}-apple-ios13.1-macabi")
|
||||
else()
|
||||
get_versioned_target_triple(variant_triple ${sdk} ${arch} "${SWIFT_SDK_${sdk}_DEPLOYMENT_VERSION}")
|
||||
get_versioned_target_triple(variant_triple ${sdk} ${arch} "${SWIFT_SDK_${sdk}_TEST_DEPLOYMENT_VERSION}")
|
||||
endif()
|
||||
|
||||
set(${variant_triple_out_var} "${variant_triple}" PARENT_SCOPE)
|
||||
|
||||
@@ -549,6 +549,27 @@ def create_argument_parser():
|
||||
metavar='MAJOR.MINOR',
|
||||
help='minimum deployment target version for xrOS')
|
||||
|
||||
option('--darwin-test-deployment-version-osx', store,
|
||||
default=defaults.DARWIN_DEPLOYMENT_VERSION_OSX,
|
||||
metavar='MAJOR.MINOR',
|
||||
help='deployment target version to use when building macOS tests')
|
||||
option('--darwin-test-deployment-version-ios', store,
|
||||
default=defaults.DARWIN_DEPLOYMENT_VERSION_IOS,
|
||||
metavar='MAJOR.MINOR',
|
||||
help='deployment target version to use when building iOS tests')
|
||||
option('--darwin-test-deployment-version-tvos', store,
|
||||
default=defaults.DARWIN_DEPLOYMENT_VERSION_TVOS,
|
||||
metavar='MAJOR.MINOR',
|
||||
help='deployment target version to use when building tvOS tests')
|
||||
option('--darwin-test-deployment-version-watchos', store,
|
||||
default=defaults.DARWIN_DEPLOYMENT_VERSION_WATCHOS,
|
||||
metavar='MAJOR.MINOR',
|
||||
help='deployment target version to use when building watchOS tests')
|
||||
option('--darwin-test-deployment-version-xros', store,
|
||||
default=defaults.DARWIN_DEPLOYMENT_VERSION_XROS,
|
||||
metavar='MAJOR.MINOR',
|
||||
help='deployment target version to use when building visionOS tests')
|
||||
|
||||
option('--extra-cmake-options', append,
|
||||
type=argparse.ShellSplitType(),
|
||||
help='Pass through extra options to CMake in the form of comma '
|
||||
|
||||
@@ -169,6 +169,16 @@ EXPECTED_DEFAULTS = {
|
||||
defaults.DARWIN_DEPLOYMENT_VERSION_WATCHOS,
|
||||
'darwin_deployment_version_xros':
|
||||
defaults.DARWIN_DEPLOYMENT_VERSION_XROS,
|
||||
'darwin_test_deployment_version_osx':
|
||||
defaults.DARWIN_DEPLOYMENT_VERSION_OSX,
|
||||
'darwin_test_deployment_version_ios':
|
||||
defaults.DARWIN_DEPLOYMENT_VERSION_IOS,
|
||||
'darwin_test_deployment_version_tvos':
|
||||
defaults.DARWIN_DEPLOYMENT_VERSION_TVOS,
|
||||
'darwin_test_deployment_version_watchos':
|
||||
defaults.DARWIN_DEPLOYMENT_VERSION_WATCHOS,
|
||||
'darwin_test_deployment_version_xros':
|
||||
defaults.DARWIN_DEPLOYMENT_VERSION_XROS,
|
||||
'darwin_symroot_path_filters': [],
|
||||
'darwin_xcrun_toolchain': None,
|
||||
'distcc': False,
|
||||
@@ -805,6 +815,11 @@ EXPECTED_OPTIONS = [
|
||||
StrOption('--darwin-deployment-version-tvos'),
|
||||
StrOption('--darwin-deployment-version-watchos'),
|
||||
StrOption('--darwin-deployment-version-xros'),
|
||||
StrOption('--darwin-test-deployment-version-osx'),
|
||||
StrOption('--darwin-test-deployment-version-ios'),
|
||||
StrOption('--darwin-test-deployment-version-tvos'),
|
||||
StrOption('--darwin-test-deployment-version-watchos'),
|
||||
StrOption('--darwin-test-deployment-version-xros'),
|
||||
DisableOption('--skip-test-xros-host', dest='test_xros_host'),
|
||||
DisableOption('--skip-test-xros', dest='test_xros'),
|
||||
DisableOption('--skip-test-xros-simulator', dest='test_xros_simulator'),
|
||||
|
||||
@@ -106,6 +106,9 @@ class Swift(product.Product):
|
||||
self.cmake_options.extend(
|
||||
self._enable_new_runtime_build)
|
||||
|
||||
self.cmake_options.extend(
|
||||
self._darwin_test_deployment_versions)
|
||||
|
||||
self.cmake_options.extend_raw(self.args.extra_swift_cmake_options)
|
||||
|
||||
@classmethod
|
||||
@@ -307,6 +310,19 @@ updated without updating swift.py?")
|
||||
return [('SWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL',
|
||||
self.args.enable_new_runtime_build)]
|
||||
|
||||
@property
|
||||
def _darwin_test_deployment_versions(self):
|
||||
return [('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX:STRING',
|
||||
self.args.darwin_test_deployment_version_osx),
|
||||
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS:STRING',
|
||||
self.args.darwin_test_deployment_version_ios),
|
||||
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS:STRING',
|
||||
self.args.darwin_test_deployment_version_tvos),
|
||||
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS:STRING',
|
||||
self.args.darwin_test_deployment_version_watchos),
|
||||
('SWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS:STRING',
|
||||
self.args.darwin_test_deployment_version_xros)]
|
||||
|
||||
def _handle_swift_debuginfo_non_lto_args(self):
|
||||
if ('swift_debuginfo_non_lto_args' not in self.args
|
||||
or self.args.swift_debuginfo_non_lto_args is None):
|
||||
|
||||
@@ -74,7 +74,12 @@ class SwiftTestCase(unittest.TestCase):
|
||||
build_swift_private_stdlib=True,
|
||||
swift_tools_ld64_lto_codegen_only_for_supporting_targets=False,
|
||||
build_stdlib_docs=False,
|
||||
enable_new_runtime_build=False)
|
||||
enable_new_runtime_build=False,
|
||||
darwin_test_deployment_version_osx="10.9",
|
||||
darwin_test_deployment_version_ios="15.0",
|
||||
darwin_test_deployment_version_tvos="14.0",
|
||||
darwin_test_deployment_version_watchos="6.0",
|
||||
darwin_test_deployment_version_xros="1.0")
|
||||
|
||||
# Setup shell
|
||||
shell.dry_run = True
|
||||
@@ -126,6 +131,11 @@ class SwiftTestCase(unittest.TestCase):
|
||||
'-USWIFT_DEBUGINFO_NON_LTO_ARGS',
|
||||
'-DSWIFT_STDLIB_BUILD_SYMBOL_GRAPHS:BOOL=FALSE',
|
||||
'-DSWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL=FALSE',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX:STRING=10.9',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS:STRING=15.0',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS:STRING=14.0',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS:STRING=6.0',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS:STRING=1.0',
|
||||
'-DHELLO=YES',
|
||||
]
|
||||
self.assertEqual(set(swift.cmake_options), set(expected))
|
||||
@@ -163,6 +173,11 @@ class SwiftTestCase(unittest.TestCase):
|
||||
'-USWIFT_DEBUGINFO_NON_LTO_ARGS',
|
||||
'-DSWIFT_STDLIB_BUILD_SYMBOL_GRAPHS:BOOL=FALSE',
|
||||
'-DSWIFT_ENABLE_NEW_RUNTIME_BUILD:BOOL=FALSE',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_OSX:STRING=10.9',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_IOS:STRING=15.0',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_TVOS:STRING=14.0',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_WATCHOS:STRING=6.0',
|
||||
'-DSWIFT_DARWIN_TEST_DEPLOYMENT_VERSION_XROS:STRING=1.0',
|
||||
'-DHELLO=YES',
|
||||
]
|
||||
self.assertEqual(set(swift.cmake_options), set(flags_set))
|
||||
|
||||
@@ -53,9 +53,8 @@ class ToolchainTestCase(unittest.TestCase):
|
||||
tc = host_toolchain()
|
||||
|
||||
# CMake
|
||||
self.assertIsNotNone(tc.cmake)
|
||||
self.assertTrue(
|
||||
os.path.basename(tc.cmake).startswith('cmake'))
|
||||
self.assertTrue(tc.cmake is None or
|
||||
os.path.basename(tc.cmake).startswith('cmake'))
|
||||
|
||||
# Ninja
|
||||
self.assertTrue(tc.ninja is None or
|
||||
|
||||
Reference in New Issue
Block a user