diff --git a/CMakeLists.txt b/CMakeLists.txt index e76ce7d0f9f..3143251bb08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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. # diff --git a/cmake/modules/DarwinSDKs.cmake b/cmake/modules/DarwinSDKs.cmake index 7441403a36b..5d4d1ea59e8 100644 --- a/cmake/modules/DarwinSDKs.cmake +++ b/cmake/modules/DarwinSDKs.cmake @@ -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") diff --git a/cmake/modules/SwiftConfigureSDK.cmake b/cmake/modules/SwiftConfigureSDK.cmake index 7e87711feac..bdc9f9fb272 100644 --- a/cmake/modules/SwiftConfigureSDK.cmake +++ b/cmake/modules/SwiftConfigureSDK.cmake @@ -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}") diff --git a/test/cmake/modules/SwiftTestUtils.cmake b/test/cmake/modules/SwiftTestUtils.cmake index 746c25d416d..1bdbab8cc61 100644 --- a/test/cmake/modules/SwiftTestUtils.cmake +++ b/test/cmake/modules/SwiftTestUtils.cmake @@ -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) diff --git a/utils/build_swift/build_swift/driver_arguments.py b/utils/build_swift/build_swift/driver_arguments.py index e47fd450231..6a62e11b47b 100644 --- a/utils/build_swift/build_swift/driver_arguments.py +++ b/utils/build_swift/build_swift/driver_arguments.py @@ -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 ' diff --git a/utils/build_swift/tests/expected_options.py b/utils/build_swift/tests/expected_options.py index dddb505174e..be2939b7e34 100644 --- a/utils/build_swift/tests/expected_options.py +++ b/utils/build_swift/tests/expected_options.py @@ -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'), diff --git a/utils/swift_build_support/swift_build_support/products/swift.py b/utils/swift_build_support/swift_build_support/products/swift.py index 97cac9b3924..80fb099da8b 100644 --- a/utils/swift_build_support/swift_build_support/products/swift.py +++ b/utils/swift_build_support/swift_build_support/products/swift.py @@ -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): diff --git a/utils/swift_build_support/tests/products/test_swift.py b/utils/swift_build_support/tests/products/test_swift.py index 9cb4e70a85c..5d4c9def758 100644 --- a/utils/swift_build_support/tests/products/test_swift.py +++ b/utils/swift_build_support/tests/products/test_swift.py @@ -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))