summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kundrát <jan.kundrat@cesnet.cz>2018-03-12 19:41:00 +0100
committerPeter Korsgaard <peter@korsgaard.com>2018-04-06 16:27:05 +0200
commit2e11d0ef9bc2b3bde948844fbe1331f9caef97ee (patch)
tree1e8993d58fc9d840cc71ba291aa959b85de253aa
parenteae2c250f21574791b679d19398ffa59413f3df7 (diff)
downloadbuildroot-2e11d0ef9bc2b3bde948844fbe1331f9caef97ee.tar.gz
buildroot-2e11d0ef9bc2b3bde948844fbe1331f9caef97ee.zip
cmake: Fix RPATH for host libraries built by CMake
The host shared libraries produced by CMake were missing a proper DT_RPATH. That became a problem because the DT_RPATH handling is not transitive by design. Consider the following scenario: - pkg-a provides a library (`liba`) which links to `libpcre` - pkg-b provides a binary (`foo`) and a shared library (`libb`) which is needed by that binary - `libb` links to `liba` - pkg-a and pkg-b are both built by CMake In this scenario, `foo` is correctly marked with DT_RPATH pointing to host/lib/, but that path is not used when (recursively) resolving PCRE's symbols in `liba`. When attempting to run the `foo` binary, the linker correctly finds both `liba` and `libb`, but it cannot find the libpcre.so as built by Buildroot for host. Signed-off-by: Jan Kundrát <jan.kundrat@cesnet.cz> Reviewed-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com> (cherry picked from commit 7d43534625ac06ae01987113e912ffaf1aec2302) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--package/pkg-cmake.mk1
1 files changed, 1 insertions, 0 deletions
diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk
index 14ffe4a88f..9b07798a1e 100644
--- a/package/pkg-cmake.mk
+++ b/package/pkg-cmake.mk
@@ -132,6 +132,7 @@ define $(2)_CONFIGURE_CMDS
-DCMAKE_C_FLAGS="$$(HOST_CFLAGS)" \
-DCMAKE_CXX_FLAGS="$$(HOST_CXXFLAGS)" \
-DCMAKE_EXE_LINKER_FLAGS="$$(HOST_LDFLAGS)" \
+ -DCMAKE_SHARED_LINKER_FLAGS="$$(HOST_LDFLAGS)" \
-DCMAKE_ASM_COMPILER="$$(HOSTAS)" \
-DCMAKE_C_COMPILER="$$(CMAKE_HOST_C_COMPILER)" \
-DCMAKE_CXX_COMPILER="$$(CMAKE_HOST_CXX_COMPILER)" \
OpenPOWER on IntegriCloud