Re: CMake build system progress

Felix Salfelder <[email protected]>
Newsgroups gmane.comp.gnu.gnucap.devel
Message-ID <[email protected]>
Hi Kevin.

On Sat, May 24, 2014 at 09:24:29AM -0500, Kevin Zheng wrote:
> Thanks for taking a careful look. There were some details I missed. In
> short, the concerns you addressed should have been fixed in fc349da.
> Please test and send me more complaints.

it looks more straightforward now, even -ui is gone :)
but there's still something wrong...

$ cmake --version
cmake version 2.8.12.1
$ mkdir cmake_build; cd cmake_build
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/tmp/cgc ..
$ make

first, the situation before "make install".

$ chrpath main/gnucap
main/gnucap: RPATH=/home/felix/extern/gnucap-upstream/cmake_build/lib:

this looks good, apparently cmake knows that gnucap is linked against
something within lib/*

$ chrpath lib/libgnucap.so
lib/libgnucap.so: no rpath or runpath tag found.

this is suboptimal, libgnucap.so should know where to load plugins from.
as a consequence, i get

$ main/gnucap
[..]
load libgnucap-default-plugins.so
     ^ ? libgnucap-default-plugins.so: cannot open shared object file:
[..]

it's important that gnucap ran-from-builddir explicitly and forcefully
picks up plugins from builddir (by default). anything else will cause
trouble.

now the situation after "make install", prefix is /tmp/cgc.
$ chrpath /tmp/cgc/bin/gnucap
/tmp/cgc/bin/gnucap: no rpath or runpath tag found.

suboptimal and gives

$ ldd /tmp/cgc/bin/gnucap
        linux-vdso.so.1 (0x00007fff82bff000)
        libgnucap.so => not found
        [..]

and
$ chrpath /tmp/cgc/lib/x86_64-linux-gnu/libgnucap.so
/tmp/cgc/lib/x86_64-linux-gnu/libgnucap.so: no rpath or runpath tag found.

is suboptimal, leads to

$ LD_LIBRARY_PATH=/tmp/cgc/lib/x86_64-linux-gnu /tmp/cgc/bin/gnucap
[..]
load libgnucap-default-plugins.so
     ^ ? libgnucap-default-plugins.so: cannot open shared object file: No such file or directory
[..]

as it seems, automake adds more runpaths by default. but not all.
particularly i had to add RUNPATH for libgnucap.so manually. somehow
this makes sense, as long as the build system does not know about
plugins and what is supposed to dlopen them. i am curious if cmake has
better support for this.

cheers
felix
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.