Skip to content

Commit b42e726

Browse files
authored
Merge pull request #73283 from edymtt/edymtt/allow-linking-swift-content-from-darwin-toolchain-6.0
[6.0] CMake: add option to link Swift content from Darwin toolchain
2 parents 6a1eed7 + 3e7d212 commit b42e726

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,12 @@ set(SWIFT_DARWIN_STDLIB_INSTALL_NAME_DIR "/usr/lib/swift" CACHE STRING
530530
set(SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR "@rpath" CACHE STRING
531531
"The directory of the install_name for the private standard library dylibs")
532532

533+
option(SWIFT_ALLOW_LINKING_SWIFT_CONTENT_IN_DARWIN_TOOLCHAIN
534+
"Adds search paths for libraries in the toolchain
535+
when building Swift programs.
536+
This is needed to support Apple internal configurations."
537+
FALSE)
538+
533539
set(SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX "10.13" CACHE STRING
534540
"Minimum deployment target version for OS X")
535541

cmake/modules/AddSwift.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,11 @@ function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping)
611611
endif()
612612
endif()
613613
endif()
614+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS AND SWIFT_ALLOW_LINKING_SWIFT_CONTENT_IN_DARWIN_TOOLCHAIN)
615+
get_filename_component(TOOLCHAIN_BIN_DIR ${CMAKE_Swift_COMPILER} DIRECTORY)
616+
get_filename_component(TOOLCHAIN_LIB_DIR "${TOOLCHAIN_BIN_DIR}/../lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" ABSOLUTE)
617+
target_link_directories(${target} BEFORE PUBLIC ${TOOLCHAIN_LIB_DIR})
618+
endif()
614619
if(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD" AND SWIFT_USE_LINKER STREQUAL "lld")
615620
target_link_options(${target} PRIVATE "SHELL:-Xlinker -z -Xlinker nostart-stop-gc")
616621
endif()

tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES)
173173
target_link_directories(${target} PUBLIC ${TOOLCHAIN_LIB_DIR})
174174
endif()
175175
endif()
176+
177+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS AND SWIFT_ALLOW_LINKING_SWIFT_CONTENT_IN_DARWIN_TOOLCHAIN)
178+
get_filename_component(TOOLCHAIN_BIN_DIR ${CMAKE_Swift_COMPILER} DIRECTORY)
179+
get_filename_component(TOOLCHAIN_LIB_DIR "${TOOLCHAIN_BIN_DIR}/../lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" ABSOLUTE)
180+
target_link_directories(${target} BEFORE PUBLIC ${TOOLCHAIN_LIB_DIR})
181+
endif()
176182
endif()
177183

178184
set(RPATH_LIST ${RPATH_LIST} PARENT_SCOPE)

0 commit comments

Comments
 (0)