[libcxx-commits] [PATCH] D91099: [runtimes] Avoid overwriting the rpath unconditionally
Louis Dionne via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Nov 9 13:18:54 PST 2020
ldionne created this revision.
ldionne added a reviewer: hintonda.
Herald added subscribers: libcxx-commits, jkorous, mgorny.
Herald added projects: libc++, libc++abi, libunwind.
Herald added a reviewer: libc++.
Herald added a reviewer: libc++abi.
Herald added a reviewer: libunwind.
ldionne requested review of this revision.
When building the runtimes, it's very important not to add rpaths unless
the user explicitly asks for them (the standard way being CMAKE_INSTALL_RPATH),
or to change the install name dir unless the user requests it (via
CMAKE_INSTALL_NAME_DIR).
llvm_setup_rpath() would override the install_name_dir of the runtimes
even if CMAKE_INSTALL_NAME_DIR was specified to something, which is wrong
and in fact even "dangerous" for the runtimes.
This issue was discovered when trying to build libc++ and libc++abi as
system libraries for Apple, where we set the install name dir to /usr/lib
explicitly. llvm_setup_rpath() would cause libc++ to have the wrong install
name dir, and for basically everything on the system to fail to load.
This was discovered just now because we previously used something closer
to a standalone build, where llvm_setup_rpath() wouldn't exist, and hence
not be used.
This is a revert of the following commits:
libunwind: 3a667b9bd8b741f5ac1d8d47857140a3d70737fb
libc++abi: 4877063e195dfcc128451bbf3dd7b03d04d2562f
libc++: 88434fe05fdb112a33052c4d8a91c9e989cb032d
Those added llvm_setup_rpath() for consistency, so it seems reasonable
to revert.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D91099
Files:
libcxx/src/CMakeLists.txt
libcxxabi/src/CMakeLists.txt
libunwind/src/CMakeLists.txt
Index: libunwind/src/CMakeLists.txt
===================================================================
--- libunwind/src/CMakeLists.txt
+++ libunwind/src/CMakeLists.txt
@@ -125,9 +125,6 @@
else()
target_compile_options(unwind_shared PRIVATE -fno-rtti)
endif()
- if(COMMAND llvm_setup_rpath)
- llvm_setup_rpath(unwind_shared)
- endif()
target_link_libraries(unwind_shared PRIVATE ${LIBUNWIND_LIBRARIES})
set_target_properties(unwind_shared PROPERTIES
CXX_EXTENSIONS OFF
Index: libcxxabi/src/CMakeLists.txt
===================================================================
--- libcxxabi/src/CMakeLists.txt
+++ libcxxabi/src/CMakeLists.txt
@@ -165,9 +165,6 @@
# Build the shared library.
if (LIBCXXABI_ENABLE_SHARED)
add_library(cxxabi_shared SHARED ${LIBCXXABI_SOURCES} ${LIBCXXABI_HEADERS})
- if(COMMAND llvm_setup_rpath)
- llvm_setup_rpath(cxxabi_shared)
- endif()
target_link_libraries(cxxabi_shared PRIVATE ${LIBCXXABI_SHARED_LIBRARIES} ${LIBCXXABI_LIBRARIES})
if (TARGET pstl::ParallelSTL)
target_link_libraries(cxxabi_shared PUBLIC pstl::ParallelSTL)
Index: libcxx/src/CMakeLists.txt
===================================================================
--- libcxx/src/CMakeLists.txt
+++ libcxx/src/CMakeLists.txt
@@ -176,9 +176,6 @@
# Build the shared library.
if (LIBCXX_ENABLE_SHARED)
add_library(cxx_shared SHARED ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS})
- if(COMMAND llvm_setup_rpath)
- llvm_setup_rpath(cxx_shared)
- endif()
target_link_libraries(cxx_shared PUBLIC cxx-headers
PRIVATE ${LIBCXX_LIBRARIES})
set_target_properties(cxx_shared
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D91099.303969.patch
Type: text/x-patch
Size: 1666 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201109/940aa9e9/attachment.bin>
More information about the libcxx-commits
mailing list