Skip to content

Commit de3e54a

Browse files
authored
Merge pull request #83398 from al45tair/eng/PR-155841439
[Build] Fix deployment version handling for StdlibDeploymentTarget.
2 parents 7768d54 + 857539f commit de3e54a

File tree

1 file changed

+69
-28
lines changed

1 file changed

+69
-28
lines changed

stdlib/cmake/modules/AddSwiftStdlib.cmake

Lines changed: 69 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,52 @@ function(add_dependencies_multiple_targets)
1919
endif()
2020
endfunction()
2121

22+
# Compute the deployment version
23+
function(deployment_version result_var_name)
24+
set(arguments
25+
SDK
26+
DEPLOYMENT_VERSION_OSX
27+
DEPLOYMENT_VERSION_IOS
28+
DEPLOYMENT_VERSION_TVOS
29+
DEPLOYMENT_VERSION_WATCHOS
30+
DEPLOYMENT_VERSION_XROS
31+
)
32+
cmake_parse_arguments(GETDEP
33+
""
34+
"${arguments}"
35+
""
36+
${ARGN})
37+
38+
if("${GETDEP_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
39+
# Check if there's a specific OS deployment version needed for this invocation
40+
if("${GETDEP_SDK}" STREQUAL "OSX")
41+
set(DEPLOYMENT_VERSION ${GETDEP_DEPLOYMENT_VERSION_OSX})
42+
elseif("${GETDEP_SDK}" STREQUAL "IOS" OR "${GETDEP_SDK}" STREQUAL "IOS_SIMULATOR")
43+
set(DEPLOYMENT_VERSION ${GETDEP_DEPLOYMENT_VERSION_IOS})
44+
elseif("${GETDEP_SDK}" STREQUAL "TVOS" OR "${GETDEP_SDK}" STREQUAL "TVOS_SIMULATOR")
45+
set(DEPLOYMENT_VERSION ${GETDEP_DEPLOYMENT_VERSION_TVOS})
46+
elseif("${GETDEP_SDK}" STREQUAL "WATCHOS" OR "${GETDEP_SDK}" STREQUAL "WATCHOS_SIMULATOR")
47+
set(DEPLOYMENT_VERSION ${GETDEP_DEPLOYMENT_VERSION_WATCHOS})
48+
elseif("${GETDEP_SDK}" STREQUAL "XROS" OR "${GETDEP_SDK}" STREQUAL "XROS_SIMULATOR")
49+
set(DEPLOYMENT_VERSION ${GETDEP_DEPLOYMENT_VERSION_XROS})
50+
endif()
51+
52+
if("${DEPLOYMENT_VERSION}" STREQUAL "")
53+
set(DEPLOYMENT_VERSION "${SWIFT_SDK_${GETDEP_SDK}_DEPLOYMENT_VERSION}")
54+
endif()
55+
endif()
56+
57+
if("${GETDEP_SDK}" STREQUAL "ANDROID")
58+
set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL})
59+
endif()
60+
61+
if("${GETDEP_SDK}" STREQUAL "FREESTANDING")
62+
set(DEPLOYMENT_VERSION "${SWIFT_SDK_${GETDEP_SDK}_DEPLOYMENT_VERSION}")
63+
endif()
64+
65+
set("${result_var_name}" "${DEPLOYMENT_VERSION}" PARENT_SCOPE)
66+
endfunction()
67+
2268
# Usage:
2369
# _add_target_variant_c_compile_link_flags(
2470
# SDK sdk
@@ -52,32 +98,19 @@ function(_add_target_variant_c_compile_link_flags)
5298

5399
set(result ${${CFLAGS_RESULT_VAR_NAME}})
54100

55-
if("${CFLAGS_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
56-
# Check if there's a specific OS deployment version needed for this invocation
57-
if("${CFLAGS_SDK}" STREQUAL "OSX")
58-
if(DEFINED maccatalyst_build_flavor AND DEFINED CFLAGS_DEPLOYMENT_VERSION_MACCATALYST)
59-
set(DEPLOYMENT_VERSION ${CFLAGS_DEPLOYMENT_VERSION_MACCATALYST})
60-
else()
61-
set(DEPLOYMENT_VERSION ${CFLAGS_DEPLOYMENT_VERSION_OSX})
62-
endif()
63-
elseif("${CFLAGS_SDK}" STREQUAL "IOS" OR "${CFLAGS_SDK}" STREQUAL "IOS_SIMULATOR")
64-
set(DEPLOYMENT_VERSION ${CFLAGS_DEPLOYMENT_VERSION_IOS})
65-
elseif("${CFLAGS_SDK}" STREQUAL "TVOS" OR "${CFLAGS_SDK}" STREQUAL "TVOS_SIMULATOR")
66-
set(DEPLOYMENT_VERSION ${CFLAGS_DEPLOYMENT_VERSION_TVOS})
67-
elseif("${CFLAGS_SDK}" STREQUAL "WATCHOS" OR "${CFLAGS_SDK}" STREQUAL "WATCHOS_SIMULATOR")
68-
set(DEPLOYMENT_VERSION ${CFLAGS_DEPLOYMENT_VERSION_WATCHOS})
69-
elseif("${CFLAGS_SDK}" STREQUAL "XROS" OR "${CFLAGS_SDK}" STREQUAL "XROS_SIMULATOR")
70-
set(DEPLOYMENT_VERSION ${CFLAGS_DEPLOYMENT_VERSION_XROS})
71-
endif()
72-
73-
if("${DEPLOYMENT_VERSION}" STREQUAL "")
74-
set(DEPLOYMENT_VERSION "${SWIFT_SDK_${CFLAGS_SDK}_DEPLOYMENT_VERSION}")
75-
endif()
101+
if(DEFINED maccatalyst_build_flavor AND DEFINED CFLAGS_DEPLOYMENT_VERSION_MACCATALYST)
102+
set(DEPLOYMENT_VERSION_OSX "${CFLAGS_DEPLOYMENT_VERSION_MACCATALYST}")
103+
else()
104+
set(DEPLOYMENT_VERSION_OSX "${CFLAGS_DEPLOYMENT_VERSION_OSX}")
76105
endif()
77106

78-
if("${CFLAGS_SDK}" STREQUAL "ANDROID")
79-
set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL})
80-
endif()
107+
deployment_version(DEPLOYMENT_VERSION
108+
SDK ${CFLAGS_SDK}
109+
DEPLOYMENT_VERSION_OSX "${DEPLOYMENT_VERSION_OSX}"
110+
DEPLOYMENT_VERSION_IOS "${CFLAGS_DEPLOYMENT_VERSION_IOS}"
111+
DEPLOYMENT_VERSION_TVOS "${CFLAGS_DEPLOYMENT_VERSION_TVOS}"
112+
DEPLOYMENT_VERSION_WATCHOS "${CFLAGS_DEPLOYMENT_VERSION_WATCHOS}"
113+
DEPLOYMENT_VERSION_XROS "${CFLAGS_DEPLOYMENT_VERSION_XROS}")
81114

82115
# MSVC, clang-cl, gcc don't understand -target.
83116
if(CMAKE_C_COMPILER_ID MATCHES "^Clang|AppleClang$" AND
@@ -1001,6 +1034,14 @@ function(add_swift_target_library_single target name)
10011034
endif()
10021035

10031036
# Define availability macros.
1037+
deployment_version(DEPLOYMENT_VERSION
1038+
SDK "${SWIFTLIB_SINGLE_SDK}"
1039+
DEPLOYMENT_VERSION_OSX "${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_OSX}"
1040+
DEPLOYMENT_VERSION_IOS "${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_IOS}"
1041+
DEPLOYMENT_VERSION_TVOS "${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_TVOS}"
1042+
DEPLOYMENT_VERSION_WATCHOS "${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_WATCHOS}"
1043+
DEPLOYMENT_VERSION_XROS "${SWIFTLIB_SINGLE_DEPLOYMENT_VERSION_XROS}")
1044+
10041045
foreach(def ${SWIFT_STDLIB_AVAILABILITY_DEFINITIONS})
10051046
list(APPEND SWIFTLIB_SINGLE_SWIFT_COMPILE_FLAGS "-Xfrontend" "-define-availability" "-Xfrontend" "${def}")
10061047

@@ -1024,14 +1065,14 @@ function(add_swift_target_library_single target name)
10241065
string(REGEX MATCH "[0-9]+(\.[0-9]+)+" ios_version "${ios_platform_version}")
10251066
string(REGEX MATCH "macOS ([0-9]+(\.[0-9]+)+)" macos_platform_version "${def}")
10261067
string(REGEX MATCH "[0-9]+(\.[0-9]+)+" macos_version "${macos_platform_version}")
1027-
if((NOT macos_version STREQUAL "9999" OR NOT ios_version STREQUAL "9999") AND (macos_version VERSION_GREATER "${SWIFT_SDK_OSX_DEPLOYMENT_VERSION}" OR ios_version VERSION_GREATER "${SWIFT_DARWIN_DEPLOYMENT_VERSION_MACCATALYST}"))
1028-
string(REGEX REPLACE ":.*" ": macOS ${SWIFT_SDK_OSX_DEPLOYMENT_VERSION}, iOS ${SWIFT_DARWIN_DEPLOYMENT_VERSION_MACCATALYST}" current "${current}")
1068+
if((NOT macos_version STREQUAL "9999" OR NOT ios_version STREQUAL "9999") AND (macos_version VERSION_GREATER "${DEPLOYMENT_VERSION}" OR ios_version VERSION_GREATER "${SWIFT_DARWIN_DEPLOYMENT_VERSION_MACCATALYST}"))
1069+
string(REGEX REPLACE ":.*" ": macOS ${DEPLOYMENT_VERSION}, iOS ${SWIFT_DARWIN_DEPLOYMENT_VERSION_MACCATALYST}" current "${current}")
10291070
endif()
10301071
else()
10311072
string(REGEX MATCH "${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_AVAILABILITY_NAME} ([0-9]+(\.[0-9]+)+)" platform_version "${def}")
10321073
string(REGEX MATCH "[0-9]+(\.[0-9]+)+" version "${platform_version}")
1033-
if(NOT version STREQUAL "9999" AND version VERSION_GREATER "${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_DEPLOYMENT_VERSION}")
1034-
string(REGEX REPLACE ":.*" ":${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_AVAILABILITY_NAME} ${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_DEPLOYMENT_VERSION}" current "${current}")
1074+
if(NOT version STREQUAL "9999" AND version VERSION_GREATER "${DEPLOYMENT_VERSION}")
1075+
string(REGEX REPLACE ":.*" ":${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_AVAILABILITY_NAME} ${DEPLOYMENT_VERSION}" current "${current}")
10351076
endif()
10361077
endif()
10371078
endif()

0 commit comments

Comments
 (0)