Skip to content

Commit 312cce0

Browse files
committed
6.0 CMake: do not assume target SDKs are provided when evaluting NOT
... operator in `add_swift_target_library` and `add_swift_target_executable` This can be the case when building the stdlib for embedded on its own (i.e. without the compiler or other platforms). Addresses rdar://128819523 (cherry picked from commit 99a4a0d)
1 parent f73b5ed commit 312cce0

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

stdlib/cmake/modules/AddSwiftStdlib.cmake

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1934,11 +1934,14 @@ function(add_swift_target_library name)
19341934
list_replace(SWIFTLIB_TARGET_SDKS ALL_APPLE_PLATFORMS "${SWIFT_DARWIN_PLATFORMS}")
19351935

19361936
# Support adding a "NOT" on the front to mean all SDKs except the following
1937-
list(GET SWIFTLIB_TARGET_SDKS 0 first_sdk)
1938-
if("${first_sdk}" STREQUAL "NOT")
1939-
list(REMOVE_AT SWIFTLIB_TARGET_SDKS 0)
1940-
list_subtract("${SWIFT_SDKS}" "${SWIFTLIB_TARGET_SDKS}"
1941-
"SWIFTLIB_TARGET_SDKS")
1937+
list(LENGTH SWIFTLIB_TARGET_SDKS number_of_target_sdks)
1938+
if(number_of_target_sdks GREATER_EQUAL "1")
1939+
list(GET SWIFTLIB_TARGET_SDKS 0 first_sdk)
1940+
if("${first_sdk}" STREQUAL "NOT")
1941+
list(REMOVE_AT SWIFTLIB_TARGET_SDKS 0)
1942+
list_subtract("${SWIFT_SDKS}" "${SWIFTLIB_TARGET_SDKS}"
1943+
"SWIFTLIB_TARGET_SDKS")
1944+
endif()
19421945
endif()
19431946

19441947
list_intersect(
@@ -2974,11 +2977,14 @@ function(add_swift_target_executable name)
29742977
list_replace(SWIFTEXE_TARGET_TARGET_SDKS ALL_APPLE_PLATFORMS "${SWIFT_DARWIN_PLATFORMS}")
29752978

29762979
# Support adding a "NOT" on the front to mean all SDKs except the following
2977-
list(GET SWIFTEXE_TARGET_TARGET_SDKS 0 first_sdk)
2978-
if("${first_sdk}" STREQUAL "NOT")
2979-
list(REMOVE_AT SWIFTEXE_TARGET_TARGET_SDKS 0)
2980-
list_subtract("${SWIFT_SDKS}" "${SWIFTEXE_TARGET_TARGET_SDKS}"
2981-
"SWIFTEXE_TARGET_TARGET_SDKS")
2980+
list(LENGTH SWIFTEXE_TARGET_TARGET_SDKS number_of_target_sdks)
2981+
if(number_of_target_sdks GREATER_EQUAL "1")
2982+
list(GET SWIFTEXE_TARGET_TARGET_SDKS 0 first_sdk)
2983+
if("${first_sdk}" STREQUAL "NOT")
2984+
list(REMOVE_AT SWIFTEXE_TARGET_TARGET_SDKS 0)
2985+
list_subtract("${SWIFT_SDKS}" "${SWIFTEXE_TARGET_TARGET_SDKS}"
2986+
"SWIFTEXE_TARGET_TARGET_SDKS")
2987+
endif()
29822988
endif()
29832989

29842990
list_intersect(

0 commit comments

Comments
 (0)