Skip to content

Commit 8a6a934

Browse files
committed
CMake: add option to link Swift content from Darwin toolchain
This is needed in specific Apple internal configurations -- as a result of the limited applicability, this option is not exposed through `build-script` on purpose. Addresses rdar://127014753
1 parent ae14927 commit 8a6a934

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

CMakeLists.txt

+6
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,12 @@ set(SWIFT_DARWIN_STDLIB_INSTALL_NAME_DIR "/usr/lib/swift" CACHE STRING
532532
set(SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR "@rpath" CACHE STRING
533533
"The directory of the install_name for the private standard library dylibs")
534534

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

cmake/modules/AddSwift.cmake

+5
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 ${SWIFT_EXEC_FOR_SWIFT_MODULES} 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} 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

+6
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 ${SWIFT_EXEC_FOR_SWIFT_MODULES} 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} PUBLIC ${TOOLCHAIN_LIB_DIR})
181+
endif()
176182
endif()
177183

178184
set(RPATH_LIST ${RPATH_LIST} PARENT_SCOPE)

0 commit comments

Comments
 (0)