Opened 13 years ago

Closed 13 years ago

#3479 closed Bugs (fixed)

Cannot use $ORIGIN in <dll-path> when building boost

Reported by: Chris BeHanna <chris@…> 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 Vladimir Prus, 13 years ago

Owner: set to Vladimir Prus
Status: newassigned

comment:2 by Vladimir Prus, 13 years ago

Milestone: Boost 1.41.0Boost 1.42.0

comment:3 by Vladimir Prus, 13 years ago

Resolution: fixed
Status: assignedclosed

(In [59765]) Special case processing of RPATH, so that '$ORIGIN' can be used

Fixes #3479

Note: See TracTickets for help on using tickets.