Skip to content

Commit 58cc5fc

Browse files
authored
Merge pull request #6779 from finagolfin/swift/release/5.9
[5.9][lldb][cmake] Remove local rpaths from the build host on ELF platforms
2 parents 7c7884b + 2aaa14c commit 58cc5fc

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

compiler-rt/cmake/Modules/AddCompilerRT.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,8 @@ function(add_compiler_rt_runtime name type)
386386
target_link_libraries(${libname} PRIVATE ${builtins_${libname}})
387387
endif()
388388
if(${type} STREQUAL "SHARED")
389-
if(COMMAND llvm_setup_rpath)
390-
llvm_setup_rpath(${libname})
389+
if(APPLE OR WIN32)
390+
set_property(TARGET ${libname} PROPERTY BUILD_WITH_INSTALL_RPATH ON)
391391
endif()
392392
if(WIN32 AND NOT CYGWIN AND NOT MINGW)
393393
set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "")

lldb/cmake/modules/AddLLDB.cmake

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,25 +172,29 @@ function(add_properties_for_swift_modules target reldir)
172172
target_link_directories(${target} PRIVATE
173173
"${CMAKE_OSX_SYSROOT}/usr/lib/swift"
174174
"${LLDB_SWIFT_LIBS}/macosx")
175-
set(SWIFT_RPATH "/usr/lib/swift")
175+
set(SWIFT_BUILD_RPATH "/usr/lib/swift")
176+
set(SWIFT_INSTALL_RPATH "/usr/lib/swift")
176177
elseif(APSM_BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING")
177178
target_link_directories(${target} PRIVATE "${LLDB_SWIFT_LIBS}/macosx")
178-
set(SWIFT_RPATH "${LLDB_SWIFT_LIBS}/macosx")
179+
set(SWIFT_BUILD_RPATH "${LLDB_SWIFT_LIBS}/macosx")
180+
set(SWIFT_INSTALL_RPATH "${LLDB_SWIFT_LIBS}/macosx")
179181
else()
180182
message(FATAL_ERROR "Unknown APSM_BOOTSTRAPPING_MODE '${APSM_BOOTSTRAPPING_MODE}'")
181183
endif()
182184

183185
# Workaround for a linker crash related to autolinking: rdar://77839981
184186
set_property(TARGET ${target} APPEND_STRING PROPERTY
185187
LINK_FLAGS " -lobjc ")
186-
elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
188+
elseif (CMAKE_SYSTEM_NAME MATCHES "Linux|Android|OpenBSD|FreeBSD")
187189
string(REGEX MATCH "^[^-]*" arch ${LLVM_TARGET_TRIPLE})
188190
target_link_libraries(${target} PRIVATE swiftCore-linux-${arch})
189-
set(SWIFT_RPATH "${LLDB_SWIFT_LIBS}/linux;$ORIGIN/../lib/swift/linux")
191+
string(TOLOWER ${CMAKE_SYSTEM_NAME} platform)
192+
set(SWIFT_BUILD_RPATH "${LLDB_SWIFT_LIBS}/${platform}")
193+
set(SWIFT_INSTALL_RPATH "$ORIGIN/swift/${platform}")
190194
endif()
191195

192-
set_property(TARGET ${target} APPEND PROPERTY BUILD_RPATH "${SWIFT_RPATH}")
193-
set_property(TARGET ${target} APPEND PROPERTY INSTALL_RPATH "${SWIFT_RPATH}")
196+
set_property(TARGET ${target} APPEND PROPERTY BUILD_RPATH "${SWIFT_BUILD_RPATH}")
197+
set_property(TARGET ${target} APPEND PROPERTY INSTALL_RPATH "${SWIFT_INSTALL_RPATH}")
194198

195199
if (SWIFT_SWIFT_PARSER)
196200
set_property(TARGET ${target}

llvm/cmake/modules/AddLLVM.cmake

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2317,7 +2317,8 @@ function(llvm_setup_rpath name)
23172317
# FIXME: update this when there is better solution.
23182318
set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
23192319
elseif(UNIX)
2320-
set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
2320+
set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
2321+
set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")
23212322
if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
23222323
set_property(TARGET ${name} APPEND_STRING PROPERTY
23232324
LINK_FLAGS " -Wl,-z,origin ")
@@ -2331,9 +2332,16 @@ function(llvm_setup_rpath name)
23312332
return()
23322333
endif()
23332334

2334-
# Enable BUILD_WITH_INSTALL_RPATH unless CMAKE_BUILD_RPATH is set.
2335+
# Enable BUILD_WITH_INSTALL_RPATH unless CMAKE_BUILD_RPATH is set and not
2336+
# building for macOS or AIX, as those platforms seemingly require it.
2337+
# On AIX, the tool chain doesn't support modifying rpaths/libpaths for XCOFF
2338+
# on install at the moment, so BUILD_WITH_INSTALL_RPATH is required.
23352339
if("${CMAKE_BUILD_RPATH}" STREQUAL "")
2336-
set_property(TARGET ${name} PROPERTY BUILD_WITH_INSTALL_RPATH ON)
2340+
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin|AIX")
2341+
set_property(TARGET ${name} PROPERTY BUILD_WITH_INSTALL_RPATH ON)
2342+
else()
2343+
set_property(TARGET ${name} APPEND PROPERTY BUILD_RPATH "${_build_rpath}")
2344+
endif()
23372345
endif()
23382346

23392347
set_target_properties(${name} PROPERTIES

0 commit comments

Comments
 (0)