[PATCH] D80534: [build] Add LLVM_LOCAL_RPATH which can set an rpath on just unit test binaries
Nico Weber via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue May 26 03:45:08 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG5229dd1366ab: [build] Add LLVM_LOCAL_RPATH which can set an rpath on just unit test binaries (authored by thakis).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D80534/new/
https://reviews.llvm.org/D80534
Files:
llvm/CMakeLists.txt
llvm/cmake/modules/AddLLVM.cmake
llvm/docs/GettingStarted.rst
Index: llvm/docs/GettingStarted.rst
===================================================================
--- llvm/docs/GettingStarted.rst
+++ llvm/docs/GettingStarted.rst
@@ -340,6 +340,16 @@
from the loader similar to ``libstdc++.so.6: version `GLIBCXX_3.4.20' not
found``. This means you need to tweak the -rpath linker flag.
+This method will add an absolute path to the rpath of all executables. That's
+fine for local development. If you want to distribute the binaries you build
+so that they can run on older systems, copy ``libstdc++.so.6`` into the
+``lib/`` directory. All of LLVM's shipping binaries have an rpath pointing at
+``$ORIGIN/../lib``, so they will find ``libstdc++.so.6`` there. Non-distributed
+binaries don't have an rpath set and won't find ``libstdc++.so.6``. Pass
+``-DLLVM_LOCAL_RPATH="$HOME/toolchains/lib64"`` to cmake to add an absolute
+path to ``libstdc++.so.6`` as above. Since these binaries are not distributed,
+having an absolute local path is fine for them.
+
When you build Clang, you will need to give *it* access to modern C++
standard library in order to use it as your new host in part of a bootstrap.
There are two easy ways to do this, either build (and install) libc++ along
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -821,6 +821,10 @@
if(NOT ARG_NO_INSTALL_RPATH)
llvm_setup_rpath(${name})
+ elseif (LLVM_LOCAL_RPATH)
+ set_target_properties(${name} PROPERTIES
+ BUILD_WITH_INSTALL_RPATH On
+ INSTALL_RPATH "${LLVM_LOCAL_RPATH}")
endif()
if(DEFINED windows_resource_file)
Index: llvm/CMakeLists.txt
===================================================================
--- llvm/CMakeLists.txt
+++ llvm/CMakeLists.txt
@@ -439,6 +439,9 @@
option(LLVM_FORCE_USE_OLD_TOOLCHAIN
"Set to ON to force using an old, unsupported host toolchain." OFF)
+set(LLVM_LOCAL_RPATH "" CACHE FILEPATH
+ "If set, an absolute path added as rpath on binaries that do not already contain an executable-relative rpath.")
+
option(LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN
"Set to ON to only warn when using a toolchain which is about to be deprecated, instead of emitting an error." OFF)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D80534.266153.patch
Type: text/x-patch
Size: 2350 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200526/44e5f30e/attachment.bin>
More information about the llvm-commits
mailing list