aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2019-08-27 15:49:09 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2019-08-27 15:49:09 +0200
commitc148d4c35419607354fd1cecd1aaa776e7b71569 (patch)
treeeeb9a94814a3fc56114454044e41b3ea4955556d
parentbe34c36f7b9ab7d2fd0d3a7bc2a0f5f62ff4fe67 (diff)
Force use of RPATH instead of RUNPATH on Linux
RUNPATH messes up our use of dlopen().
-rw-r--r--build2/buildfile13
-rw-r--r--libbuild2/buildfile10
2 files changed, 19 insertions, 4 deletions
diff --git a/build2/buildfile b/build2/buildfile
index a1b299d..196c485 100644
--- a/build2/buildfile
+++ b/build2/buildfile
@@ -56,13 +56,20 @@ if ($cxx.target == $build.host)
-DBUILD2_NATIVE_CXX=\"$regex.replace($recall($cxx.path), '\\', '\\\\')\"
}
-if ($cxx.target.class != "windows")
+if ($cxx.target.class != 'windows')
{
- # Make sure backtrace includes function names.
- #
if ($cxx.target.class == 'linux')
+ {
+ # Make sure backtrace includes function names.
+ #
cxx.loptions += -rdynamic
+ # Make sure we use RPATH and not RUNPATH since the latter messes up
+ # dlopen().
+ #
+ cxx.loptions += -Wl,--disable-new-dtags
+ }
+
cxx.libs += -lpthread
}
else
diff --git a/libbuild2/buildfile b/libbuild2/buildfile
index 881b6e8..b536eba 100644
--- a/libbuild2/buildfile
+++ b/libbuild2/buildfile
@@ -94,8 +94,16 @@ if! $cross
obja{context}: cxx.poptions += -DLIBBUILD2_STATIC_BUILD
objs{context}: cxx.poptions += -DLIBBUILD2_SHARED_BUILD
-if ($cxx.target.class != "windows")
+if ($cxx.target.class != 'windows')
{
+ if ($cxx.target.class == 'linux')
+ {
+ # Make sure we use RPATH and not RUNPATH since the latter messes up
+ # dlopen().
+ #
+ cxx.loptions += -Wl,--disable-new-dtags
+ }
+
cxx.libs += -lpthread
if ($cxx.target.class != "bsd")