From 415ddae6f52f160961fccebb3806534d81b47bea Mon Sep 17 00:00:00 2001 From: Egor Zhdan Date: Mon, 30 Oct 2023 19:19:04 +0000 Subject: [PATCH 1/3] [build] Respect `DEPLOYMENT_VERSION_OSX` for Swift-only targets The CMake flag `DEPLOYMENT_VERSION_OSX` is currently only passed to the C compiler. This change makes sure it is also passed to the Swift compiler, e.g. when building Swift-only targets like Cxx or CxxStdlib. rdar://117699474 (cherry picked from commit e192ee24d12d82e8b95bfc33e4303a893ec40606) --- stdlib/cmake/modules/AddSwiftStdlib.cmake | 1 + stdlib/cmake/modules/SwiftSource.cmake | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/stdlib/cmake/modules/AddSwiftStdlib.cmake b/stdlib/cmake/modules/AddSwiftStdlib.cmake index 0f7fb0fcd84ea..2c598ce8b10eb 100644 --- a/stdlib/cmake/modules/AddSwiftStdlib.cmake +++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake @@ -978,6 +978,7 @@ function(add_swift_target_library_single target name) ${SWIFTLIB_SINGLE_NO_LINK_NAME_keyword} ENABLE_LTO "${SWIFTLIB_SINGLE_ENABLE_LTO}" INSTALL_IN_COMPONENT "${install_in_component}" + DEPLOYMENT_VERSION_OSX ${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_OSX} MACCATALYST_BUILD_FLAVOR "${SWIFTLIB_SINGLE_MACCATALYST_BUILD_FLAVOR}" ${BOOTSTRAPPING_arg}) add_swift_source_group("${SWIFTLIB_SINGLE_EXTERNAL_SOURCES}") diff --git a/stdlib/cmake/modules/SwiftSource.cmake b/stdlib/cmake/modules/SwiftSource.cmake index 2f493925d92c6..9e13bb2127e0c 100644 --- a/stdlib/cmake/modules/SwiftSource.cmake +++ b/stdlib/cmake/modules/SwiftSource.cmake @@ -50,7 +50,7 @@ function(handle_swift_sources sourcesvar externalvar name) cmake_parse_arguments(SWIFTSOURCES "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE" - "SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" + "SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" "DEPENDS;COMPILE_FLAGS;MODULE_NAME;ENABLE_LTO" ${ARGN}) translate_flag(${SWIFTSOURCES_IS_MAIN} "IS_MAIN" IS_MAIN_arg) @@ -155,6 +155,7 @@ function(handle_swift_sources ${BOOTSTRAPPING_arg} ${IS_FRAGILE_arg} INSTALL_IN_COMPONENT "${SWIFTSOURCES_INSTALL_IN_COMPONENT}" + DEPLOYMENT_VERSION_OSX ${SWIFTSOURCES_DEPLOYMENT_VERSION_OSX} MACCATALYST_BUILD_FLAVOR "${SWIFTSOURCES_MACCATALYST_BUILD_FLAVOR}") set("${dependency_target_out_var_name}" "${dependency_target}" PARENT_SCOPE) set("${dependency_module_target_out_var_name}" "${module_dependency_target}" PARENT_SCOPE) @@ -222,7 +223,7 @@ function(_add_target_variant_swift_compile_flags cmake_parse_arguments( VARIANT # prefix "" # options - "MACCATALYST_BUILD_FLAVOR" # single-value args + "MACCATALYST_BUILD_FLAVOR;DEPLOYMENT_VERSION_OSX" # single-value args "" # multi-value args ${ARGN}) @@ -233,6 +234,10 @@ function(_add_target_variant_swift_compile_flags if("${sdk}" IN_LIST SWIFT_DARWIN_PLATFORMS) set(sdk_deployment_version "${SWIFT_SDK_${sdk}_DEPLOYMENT_VERSION}") + if("${sdk}" STREQUAL "OSX" AND DEFINED VARIANT_DEPLOYMENT_VERSION_OSX) + set(sdk_deployment_version ${VARIANT_DEPLOYMENT_VERSION_OSX}) + endif() + get_target_triple(target target_variant "${sdk}" "${arch}" MACCATALYST_BUILD_FLAVOR "${VARIANT_MACCATALYST_BUILD_FLAVOR}" DEPLOYMENT_VERSION "${sdk_deployment_version}") @@ -379,7 +384,7 @@ function(_compile_swift_files dependency_sibgen_target_out_var_name) cmake_parse_arguments(SWIFTFILE "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE" - "OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" + "OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" "SOURCES;FLAGS;DEPENDS;SDK;ARCHITECTURE;OPT_FLAGS;MODULE_DIR" ${ARGN}) @@ -452,6 +457,7 @@ function(_compile_swift_files "${SWIFT_STDLIB_BUILD_TYPE}" "${SWIFT_STDLIB_ASSERTIONS}" swift_flags + DEPLOYMENT_VERSION_OSX ${SWIFTFILE_DEPLOYMENT_VERSION_OSX} MACCATALYST_BUILD_FLAVOR "${maccatalyst_build_flavor}" ) From 2370cd89eca1dfbbcfe76e551a2fd2c40ff114ca Mon Sep 17 00:00:00 2001 From: Egor Zhdan Date: Mon, 30 Oct 2023 17:56:55 +0000 Subject: [PATCH 2/3] [cxx-interop] Lower macOS deployment target version for the Cxx module The Cxx module does not rely on any modern OS features. It can be deployed to older macOS versions. rdar://117699474 (cherry picked from commit 00cdb66d01549d9b861d2af2bd8c426b56fabfba) --- stdlib/public/Cxx/CMakeLists.txt | 2 ++ stdlib/public/Cxx/std/CMakeLists.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/stdlib/public/Cxx/CMakeLists.txt b/stdlib/public/Cxx/CMakeLists.txt index 08942a644d7b6..5f9fd1f5c160c 100644 --- a/stdlib/public/Cxx/CMakeLists.txt +++ b/stdlib/public/Cxx/CMakeLists.txt @@ -23,6 +23,8 @@ add_swift_target_library(swiftCxx STATIC NO_LINK_NAME IS_STDLIB IS_SWIFT_ONLY IS # For functionality that depends on the C++ stdlib, use C++ stdlib overlay (`swiftstd` module). -Xcc -nostdinc++ + DEPLOYMENT_VERSION_OSX ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_OSX} + LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}" DEPENDS ${SWIFT_CXX_DEPS} INSTALL_IN_COMPONENT compiler diff --git a/stdlib/public/Cxx/std/CMakeLists.txt b/stdlib/public/Cxx/std/CMakeLists.txt index 9731391bc6ca7..3ed04729d4eb8 100644 --- a/stdlib/public/Cxx/std/CMakeLists.txt +++ b/stdlib/public/Cxx/std/CMakeLists.txt @@ -49,6 +49,8 @@ add_swift_target_library(swiftCxxStdlib STATIC NO_LINK_NAME IS_STDLIB IS_SWIFT_O SWIFT_COMPILE_FLAGS_LINUX ${SWIFT_SDK_LINUX_CXX_OVERLAY_SWIFT_COMPILE_FLAGS} + DEPLOYMENT_VERSION_OSX ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_OSX} + LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}" TARGET_SDKS ALL_APPLE_PLATFORMS LINUX WINDOWS INSTALL_IN_COMPONENT compiler From 31943e1c6f7269d0b79b58632fc6b43d95700a5f Mon Sep 17 00:00:00 2001 From: Egor Zhdan Date: Mon, 6 Nov 2023 16:20:24 +0000 Subject: [PATCH 3/3] [build] Respect `DEPLOYMENT_VERSION_{IOS|TVOS|WATCHOS}` for Swift sources See https://github.com/apple/swift/pull/69512 rdar://117699474 (cherry picked from commit f8b51435732abfbdd01bc1aeb25a00475051fabd) --- stdlib/cmake/modules/AddSwiftStdlib.cmake | 3 +++ stdlib/cmake/modules/SwiftSource.cmake | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/stdlib/cmake/modules/AddSwiftStdlib.cmake b/stdlib/cmake/modules/AddSwiftStdlib.cmake index 2c598ce8b10eb..4854ed5134ab1 100644 --- a/stdlib/cmake/modules/AddSwiftStdlib.cmake +++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake @@ -979,6 +979,9 @@ function(add_swift_target_library_single target name) ENABLE_LTO "${SWIFTLIB_SINGLE_ENABLE_LTO}" INSTALL_IN_COMPONENT "${install_in_component}" DEPLOYMENT_VERSION_OSX ${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_OSX} + DEPLOYMENT_VERSION_IOS ${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_IOS} + DEPLOYMENT_VERSION_TVOS ${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_TVOS} + DEPLOYMENT_VERSION_WATCHOS ${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_WATCHOS} MACCATALYST_BUILD_FLAVOR "${SWIFTLIB_SINGLE_MACCATALYST_BUILD_FLAVOR}" ${BOOTSTRAPPING_arg}) add_swift_source_group("${SWIFTLIB_SINGLE_EXTERNAL_SOURCES}") diff --git a/stdlib/cmake/modules/SwiftSource.cmake b/stdlib/cmake/modules/SwiftSource.cmake index 9e13bb2127e0c..29ab72bf9a97e 100644 --- a/stdlib/cmake/modules/SwiftSource.cmake +++ b/stdlib/cmake/modules/SwiftSource.cmake @@ -50,7 +50,7 @@ function(handle_swift_sources sourcesvar externalvar name) cmake_parse_arguments(SWIFTSOURCES "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE" - "SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" + "SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" "DEPENDS;COMPILE_FLAGS;MODULE_NAME;ENABLE_LTO" ${ARGN}) translate_flag(${SWIFTSOURCES_IS_MAIN} "IS_MAIN" IS_MAIN_arg) @@ -156,6 +156,9 @@ function(handle_swift_sources ${IS_FRAGILE_arg} INSTALL_IN_COMPONENT "${SWIFTSOURCES_INSTALL_IN_COMPONENT}" DEPLOYMENT_VERSION_OSX ${SWIFTSOURCES_DEPLOYMENT_VERSION_OSX} + DEPLOYMENT_VERSION_IOS ${SWIFTSOURCES_DEPLOYMENT_VERSION_IOS} + DEPLOYMENT_VERSION_TVOS ${SWIFTSOURCES_DEPLOYMENT_VERSION_TVOS} + DEPLOYMENT_VERSION_WATCHOS ${SWIFTSOURCES_DEPLOYMENT_VERSION_WATCHOS} MACCATALYST_BUILD_FLAVOR "${SWIFTSOURCES_MACCATALYST_BUILD_FLAVOR}") set("${dependency_target_out_var_name}" "${dependency_target}" PARENT_SCOPE) set("${dependency_module_target_out_var_name}" "${module_dependency_target}" PARENT_SCOPE) @@ -223,7 +226,7 @@ function(_add_target_variant_swift_compile_flags cmake_parse_arguments( VARIANT # prefix "" # options - "MACCATALYST_BUILD_FLAVOR;DEPLOYMENT_VERSION_OSX" # single-value args + "MACCATALYST_BUILD_FLAVOR;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS" # single-value args "" # multi-value args ${ARGN}) @@ -237,6 +240,15 @@ function(_add_target_variant_swift_compile_flags if("${sdk}" STREQUAL "OSX" AND DEFINED VARIANT_DEPLOYMENT_VERSION_OSX) set(sdk_deployment_version ${VARIANT_DEPLOYMENT_VERSION_OSX}) endif() + if("${sdk}" STREQUAL "IOS" AND DEFINED VARIANT_DEPLOYMENT_VERSION_IOS) + set(sdk_deployment_version ${VARIANT_DEPLOYMENT_VERSION_IOS}) + endif() + if("${sdk}" STREQUAL "TVOS" AND DEFINED VARIANT_DEPLOYMENT_VERSION_TVOS) + set(sdk_deployment_version ${VARIANT_DEPLOYMENT_VERSION_TVOS}) + endif() + if("${sdk}" STREQUAL "WATCHOS" AND DEFINED VARIANT_DEPLOYMENT_VERSION_WATCHOS) + set(sdk_deployment_version ${VARIANT_DEPLOYMENT_VERSION_WATCHOS}) + endif() get_target_triple(target target_variant "${sdk}" "${arch}" MACCATALYST_BUILD_FLAVOR "${VARIANT_MACCATALYST_BUILD_FLAVOR}" @@ -384,7 +396,7 @@ function(_compile_swift_files dependency_sibgen_target_out_var_name) cmake_parse_arguments(SWIFTFILE "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE" - "OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" + "OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING" "SOURCES;FLAGS;DEPENDS;SDK;ARCHITECTURE;OPT_FLAGS;MODULE_DIR" ${ARGN}) @@ -458,6 +470,9 @@ function(_compile_swift_files "${SWIFT_STDLIB_ASSERTIONS}" swift_flags DEPLOYMENT_VERSION_OSX ${SWIFTFILE_DEPLOYMENT_VERSION_OSX} + DEPLOYMENT_VERSION_IOS ${SWIFTFILE_DEPLOYMENT_VERSION_IOS} + DEPLOYMENT_VERSION_TVOS ${SWIFTFILE_DEPLOYMENT_VERSION_TVOS} + DEPLOYMENT_VERSION_WATCHOS ${SWIFTFILE_DEPLOYMENT_VERSION_WATCHOS} MACCATALYST_BUILD_FLAVOR "${maccatalyst_build_flavor}" )