Skip to content

Commit 43c4e2f

Browse files
committed
[CMake] Fix RUNPATH of lib_InternalSwiftScan in Linux
libSwiftScan is built in 'lib' but installed in 'lib/swift/host' RUNPATH should have correct '$ORIGIN/../{platform}' to load 'swiftCore' runtime library. (cherry picked from commit 4ccc866) (cherry picked from commit 3badb3b)
1 parent 3c79ce5 commit 43c4e2f

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

tools/libSwiftScan/CMakeLists.txt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ set_target_properties(libSwiftScan
3030
PROPERTIES
3131
OUTPUT_NAME ${SWIFT_SCAN_LIB_NAME})
3232

33+
if(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD" AND BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS")
34+
# Runtime INSTALL_RPATH are set by 'add_swift_host_library', but that expects
35+
# libSwiftScan be installed in 'lib'. But since it's actually installed in 'lib/swift/host',
36+
# we need to have correct runtime path to 'lib/swift/{platform}'.
37+
# FIXME: BUILD_RPATH and INSTALL_PATH should be different
38+
# FIXME: add_swift_host_library should accept 'DESTINATION' and handle installation
39+
# FIXME: Build this library into 'lib/swift/host/' instead of 'lib/'
40+
set_property(
41+
TARGET libSwiftScan
42+
APPEND PROPERTY INSTALL_RPATH "$ORIGIN/../${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}"
43+
)
44+
endif()
45+
3346
if(SWIFT_SWIFT_PARSER)
3447
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
3548
# Ensure that we can find the host shared libraries.
@@ -39,7 +52,7 @@ if(SWIFT_SWIFT_PARSER)
3952
set_property(
4053
TARGET libSwiftScan
4154
APPEND PROPERTY INSTALL_RPATH "@loader_path/../host")
42-
elseif(SWIFT_HOST_VARIANT_SDK STREQUAL "LINUX")
55+
elseif(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD")
4356
set_property(
4457
TARGET libSwiftScan
4558
APPEND PROPERTY INSTALL_RPATH "$ORIGIN/swift/host")

0 commit comments

Comments
 (0)