diff --git a/CMakeLists.txt b/CMakeLists.txt index d181545c2ac58..34aeeb01d0265 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -530,6 +530,12 @@ set(SWIFT_DARWIN_STDLIB_INSTALL_NAME_DIR "/usr/lib/swift" CACHE STRING set(SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR "@rpath" CACHE STRING "The directory of the install_name for the private standard library dylibs") +option(SWIFT_ALLOW_LINKING_SWIFT_CONTENT_IN_DARWIN_TOOLCHAIN + "Adds search paths for libraries in the toolchain + when building Swift programs. + This is needed to support Apple internal configurations." + FALSE) + set(SWIFT_DARWIN_DEPLOYMENT_VERSION_OSX "10.13" CACHE STRING "Minimum deployment target version for OS X") diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake index 534110c80202c..8d2bfd0e037fe 100644 --- a/cmake/modules/AddSwift.cmake +++ b/cmake/modules/AddSwift.cmake @@ -611,6 +611,11 @@ function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping) endif() endif() endif() + if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS AND SWIFT_ALLOW_LINKING_SWIFT_CONTENT_IN_DARWIN_TOOLCHAIN) + get_filename_component(TOOLCHAIN_BIN_DIR ${CMAKE_Swift_COMPILER} DIRECTORY) + get_filename_component(TOOLCHAIN_LIB_DIR "${TOOLCHAIN_BIN_DIR}/../lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" ABSOLUTE) + target_link_directories(${target} BEFORE PUBLIC ${TOOLCHAIN_LIB_DIR}) + endif() if(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD" AND SWIFT_USE_LINKER STREQUAL "lld") target_link_options(${target} PRIVATE "SHELL:-Xlinker -z -Xlinker nostart-stop-gc") endif() diff --git a/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake b/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake index 328de29ebb2d8..3fabb4b510b27 100644 --- a/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake +++ b/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake @@ -173,6 +173,12 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) target_link_directories(${target} PUBLIC ${TOOLCHAIN_LIB_DIR}) endif() endif() + + if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS AND SWIFT_ALLOW_LINKING_SWIFT_CONTENT_IN_DARWIN_TOOLCHAIN) + get_filename_component(TOOLCHAIN_BIN_DIR ${CMAKE_Swift_COMPILER} DIRECTORY) + get_filename_component(TOOLCHAIN_LIB_DIR "${TOOLCHAIN_BIN_DIR}/../lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" ABSOLUTE) + target_link_directories(${target} BEFORE PUBLIC ${TOOLCHAIN_LIB_DIR}) + endif() endif() set(RPATH_LIST ${RPATH_LIST} PARENT_SCOPE)