Opened 13 years ago
Closed 13 years ago
#3479 closed Bugs (fixed)
Cannot use $ORIGIN in <dll-path> when building boost
Reported by: | Owned by: | Vladimir Prus | |
---|---|---|---|
Milestone: | Boost 1.42.0 | Component: | Building Boost |
Version: | Boost 1.40.0 | Severity: | Problem |
Keywords: | Cc: |
Description
Boost 1.40.0 has internal library dependencies (e.g., libboost_filesystem.so depends upon libboost_system.so) that I wanted to be able to automatically satisfy at run-time via RPATH. The most straightforward way to do this would be to embed an RPATH of $ORIGIN/../lib in the shared libraries (or even, more simply, $ORIGIN).
Unfortunately, there is no way that I could discern to modify project-config.jam to escape $ORIGIN so that it would get passed through to the linker. I attempted to change the gcc toolset line to
if ! gcc in [ feature.values <toolset> ] {
using gcc : : : <dll-path>\$ORIGIN/../lib <linkoptions>-z origin ;
}
but no matter what combination of single quotes, backslashes, etc., that I tried, $ORIGIN got evaluated as an empty shell variable, and I'd end up with /../lib as my RPATH.
In desperation, to move forward with my project, I hacked gcc.jam directly, and that produced the desired effect, but obviously, this is not a production-quality solution.
Change History (3)
comment:1 by , 13 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
comment:2 by , 13 years ago
Milestone: | Boost 1.41.0 → Boost 1.42.0 |
---|
comment:3 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
(In [59765]) Special case processing of RPATH, so that '$ORIGIN' can be used
Fixes #3479