Skip to content

Commit 891d7b7

Browse files
committed
[CMake] Use explicit RPATHs for unit test executables
Instead of letting CMake set RPATH of the test executables, use INSTALL_RPATH and BUILD_WITH_INSTALL_RPATH just like other executable and shared libraries. Previously when a swift module link with exported swift-syntax targets e.g. 'SwiftSyntax::SwiftParser', the libraries in earlyswiftsyntax were used instead of the copied libraries in the swift build directory. That wasn't ideal.
1 parent 7c72e7d commit 891d7b7

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

cmake/modules/AddSwiftUnittests.cmake

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,31 @@ function(add_swift_unittest test_dirname)
111111
endif()
112112
endif()
113113

114+
file(RELATIVE_PATH relative_lib_path "${CMAKE_CURRENT_BINARY_DIR}" "${SWIFT_LIBRARY_OUTPUT_INTDIR}")
115+
116+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
117+
set_property(
118+
TARGET ${test_dirname}
119+
APPEND PROPERTY INSTALL_RPATH "@executable_path/${relative_lib_path}")
120+
elseif(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD")
121+
set_property(
122+
TARGET ${test_dirname}
123+
APPEND PROPERTY INSTALL_RPATH "$ORIGIN/${relative_lib_path}")
124+
endif()
125+
114126
if (SWIFT_SWIFT_PARSER AND NOT ASU_IS_TARGET_TEST)
115127
# Link to stdlib the compiler uses.
116-
_add_swift_runtime_link_flags(${test_dirname} "../../lib" "")
117-
set_property(TARGET ${test_dirname} PROPERTY BUILD_WITH_INSTALL_RPATH OFF)
128+
_add_swift_runtime_link_flags(${test_dirname} "${relative_lib_path}" "")
129+
130+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
131+
set_property(
132+
TARGET ${test_dirname}
133+
APPEND PROPERTY INSTALL_RPATH "@executable_path/${relative_lib_path}/swift/host")
134+
elseif(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD")
135+
set_property(
136+
TARGET ${test_dirname}
137+
APPEND PROPERTY INSTALL_RPATH "$ORIGIN/${relative_lib_path}/swift/host")
138+
endif()
118139
endif()
119140
endfunction()
120141

0 commit comments

Comments
 (0)