Skip to content

Commit 235a22c

Browse files
authored
Merge pull request #68388 from rintaro/cmake-unittest-rpath
[CMake] Use explicit RPATHs for unit test executables
2 parents e28e0d5 + 891d7b7 commit 235a22c

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

cmake/modules/AddSwiftUnittests.cmake

+23-2
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)