Skip to content

Commit a3ce5a9

Browse files
authored
Merge pull request #73670 from al45tair/eng/PR-128197532
[Build] Add compatibility library deps to target executables.
2 parents db9232f + 0302944 commit a3ce5a9

File tree

3 files changed

+38
-7
lines changed

3 files changed

+38
-7
lines changed

stdlib/cmake/modules/AddSwiftStdlib.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
include(AddSwift)
33
include(SwiftSource)
4+
include(CompatibilityLibs)
45

56
function(add_dependencies_multiple_targets)
67
cmake_parse_arguments(
@@ -2798,6 +2799,15 @@ function(_add_swift_target_executable_single name)
27982799
${SWIFTEXE_SINGLE_SOURCES}
27992800
${SWIFTEXE_SINGLE_EXTERNAL_SOURCES})
28002801

2802+
# Darwin may need the compatibility libraries
2803+
set(compatibility_libs)
2804+
if(SWIFTEXE_SINGLE_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
2805+
get_compatibility_libs(
2806+
"${SWIFTEXE_SINGLE_SDK}"
2807+
"${SWIFTEXE_SINGLE_ARCHITECTURE}"
2808+
compatibility_libs)
2809+
endif()
2810+
28012811
# ELF and COFF need swiftrt
28022812
if(("${SWIFT_SDK_${SWIFTEXE_SINGLE_SDK}_OBJECT_FORMAT}" STREQUAL "ELF" OR
28032813
"${SWIFT_SDK_${SWIFTEXE_SINGLE_SDK}_OBJECT_FORMAT}" STREQUAL "COFF")
@@ -2811,6 +2821,7 @@ function(_add_swift_target_executable_single name)
28112821
TARGETS "${name}"
28122822
DEPENDS
28132823
${dependency_target}
2824+
${compatibility_libs}
28142825
${LLVM_COMMON_DEPENDS}
28152826
${SWIFTEXE_SINGLE_DEPENDS})
28162827
llvm_update_compile_flags("${name}")
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generate a list of the compatibility library targets given an sdk and
2+
# architecture.
3+
function(get_compatibility_libs sdk arch result_var_name)
4+
set(compatibility_libs)
5+
6+
if(SWIFT_STDLIB_SUPPORT_BACK_DEPLOYMENT)
7+
set(vsuffix "-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
8+
9+
list(APPEND compatibility_libs
10+
swiftCompatibilityConcurrency${vsuffix}
11+
swiftCompatibilityDynamicReplacements${vsuffix}
12+
swiftCompatibilityPacks${vsuffix}
13+
swiftCompatibility50${vsuffix}
14+
swiftCompatibility51${vsuffix}
15+
swiftCompatibility56${vsuffix})
16+
endif()
17+
18+
set("${result_var_name}" "${compatibility_libs}" PARENT_SCOPE)
19+
endfunction()

stdlib/toolchain/CMakeLists.txt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/../cmake/modules)
44
include(StdlibOptions)
55
include(AddSwiftStdlib)
6+
include(CompatibilityLibs)
67

78
set(CXX_COMPILE_FLAGS)
89
set(CXX_LINK_FLAGS)
@@ -58,13 +59,13 @@ if(SWIFT_STDLIB_SUPPORT_BACK_DEPLOYMENT)
5859
# of all the compatibility libraries needed to build
5960
# host tools in a single place
6061
add_library(HostCompatibilityLibs INTERFACE)
61-
set(vsuffix "-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}")
62+
get_compatibility_libs(
63+
"${SWIFT_HOST_VARIANT_SDK}"
64+
"${SWIFT_HOST_VARIANT_ARCH}"
65+
compatibility_libs
66+
)
6267
target_link_libraries(HostCompatibilityLibs INTERFACE
63-
swiftCompatibilityConcurrency${vsuffix}
64-
swiftCompatibilityDynamicReplacements${vsuffix}
65-
swiftCompatibilityPacks${vsuffix}
66-
swiftCompatibility50${vsuffix}
67-
swiftCompatibility51${vsuffix}
68-
swiftCompatibility56${vsuffix})
68+
${compatibility_libs}
69+
)
6970
set_property(GLOBAL APPEND PROPERTY SWIFT_BUILDTREE_EXPORTS HostCompatibilityLibs)
7071
endif()

0 commit comments

Comments
 (0)