aboutsummaryrefslogtreecommitdiff
path: root/depends
diff options
context:
space:
mode:
authorRussell Yanofsky <russ@yanofsky.org>2020-09-22 14:31:35 -0400
committerRussell Yanofsky <russ@yanofsky.org>2020-09-30 10:03:02 -0400
commit7d0271b5c30f86e4af175a5ab7df5e593cd85195 (patch)
treea1099d37b035a54043b3b997d3f5b2a4d890a1a2 /depends
parent72affcb16cad45bd9e08ca163b2147fd01b84b70 (diff)
downloadbitcoin-7d0271b5c30f86e4af175a5ab7df5e593cd85195.tar.xz
depends: Set CMAKE_INSTALL_RPATH for native packages
After #19685 started setting LDFLAGS, the INSTALL_RPATH_USE_LINK_PATH cmake option used in the libmultiprocess build no longer works, so it is neccessary to set CMAKE_INSTALL_RPATH as a fallback. It's unclear currently whether the bad interaction between INSTALL_RPATH_USE_LINK_PATH and LDFLAGS is a bug, but the issue is reported: https://github.com/bitcoin/bitcoin/issues/19981#issuecomment-696680877 https://discourse.cmake.org/t/install-rpath-use-link-path-not-working-when-cmake-exe-linker-flags-ldflags-is-set/1892 Commands useful for building / testing this change make -C depends MULTIPROCESS=1 print-libmultiprocess_cmake make -C depends MULTIPROCESS=1 print-native_libmultiprocess_cmake make -C depends MULTIPROCESS=1 HOST=x86_64-apple-darwin16 print-libmultiprocess_cmake rm -rvf depends/x86_64-pc-linux-gnu/native depends/work/staging depends/work/build make -C depends MULTIPROCESS=1 V=1 native_libmultiprocess_staged for f in `find -name mpgen`; do echo == $f ==; readelf -d $f | grep -i path; done make -C depends MULTIPROCESS=1 V=1 native_libmultiprocess_built find -name CMakeCache.txt Fixes #19981
Diffstat (limited to 'depends')
-rw-r--r--depends/funcs.mk4
1 files changed, 3 insertions, 1 deletions
diff --git a/depends/funcs.mk b/depends/funcs.mk
index 58d882eb05..5697bd6f15 100644
--- a/depends/funcs.mk
+++ b/depends/funcs.mk
@@ -163,7 +163,9 @@ $(1)_cmake=env CC="$$($(1)_cc)" \
CXXFLAGS="$$($(1)_cppflags) $$($(1)_cxxflags)" \
LDFLAGS="$$($(1)_ldflags)" \
cmake -DCMAKE_INSTALL_PREFIX:PATH="$$($($(1)_type)_prefix)"
-ifneq ($($(1)_type),build)
+ifeq ($($(1)_type),build)
+$(1)_cmake += -DCMAKE_INSTALL_RPATH:PATH="$$($($(1)_type)_prefix)/lib"
+else
ifneq ($(host),$(build))
$(1)_cmake += -DCMAKE_SYSTEM_NAME=$($(host_os)_cmake_system)
$(1)_cmake += -DCMAKE_C_COMPILER_TARGET=$(host)