[CMake] cmake-2.8.4 on HP-UX runpath issues

Albert Chin cmake at mlists.thewrittenword.com
Sun Sep 25 20:54:57 EDT 2011


On Sat, May 07, 2011 at 08:09:52AM -0500, Peter O'Gorman wrote:
> We're running into problems with cmake on hp-ux, if we had used
> 2.6.x we would have seen the problems there too.
> 
> Building e.g. libproxy on hppa*-hp-hpux11.31 32 bit, in its own
> prefix /opt/TWWfsw/libproxy04 chatr shows us after install:
> 
> /opt/TWWfsw/libproxy04/lib/libproxy.sl: 
>          shared library 
>          shared library dynamic path search:
>              SHLIB_PATH     disabled  second 
>              embedded path  enabled   first  /opt/TWWfsw/libproxy04/lib:/usr/lib
>          internal name:
>              libproxy.sl.1
>          shared library list:
>              static    /opt/build/libproxy-0.4.6/libproxy/../libmodman/libmodman.sl.1
>              dynamic   /usr/lib/libnsl.1
>              dynamic   /usr/lib/libcma.2
> 
> As you can see the path to the build dir's libmodman.sl is encoded
> in the installed libproxy, worse, it's "static" so even if
> SHLIB_PATH were enabled, it will not override the static entry.
> Removing the builddir makes any application using libproxy abort()
> at start because the static entry for libmodman can not be found.
> 
> It is listed as "static" because cmake always uses a
> path/to/libmodman.sl when invoking the linker. So we hacked our
> cmake-2.8.4 to always use -L.. -l on hpux, this helps a little, the
> library is now listed as "dynamic" and because of that SHLIB_PATH
> and the embedded path can also be used. However, the full path to
> the build dir remains encoded in the output. We'd like to fix that,
> turn our hack into a usable patch and have it applied.
> 
> What we need to do to accomplish that: When relinking, currently
> cmake relinks libraries and executables prior to installing them.
> This accomplishes nothing on HP-UX, to change the path, the
> libraries must be found in the install directory. How can we change
> so that relinking happens after install, and replaces the installed
> shared libraries and executables? I have no idea which source files
> to even begin looking in.
> 
> Alternatively the HP-UX 11 linker has a +cdp option that allows
> replacing of build paths with install paths, to use this, instead of
> giving ./path/to/libfoo.sl on the link line, cmake would have to add
> -L./path/to -lfoo -Wl,+cdp,./path/to:/install/prefix/lib. This
> solution would only work for HP-UX 11 though, and we still support
> customers on HP-UX 10.20. We'd prefer to have relinking after
> install.

Any help with this?

-- 
albert chin (china at thewrittenword.com)


More information about the CMake mailing list