<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Nov 25, 2015 at 6:16 AM, Arne Morten Kvarving <span dir="ltr"><<a href="mailto:arne.morten.kvarving@sintef.no" target="_blank">arne.morten.kvarving@sintef.no</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">hi,<br>
<br>
a while back i was told to use the .pc file for petsc if i wanted pkgconfig style (duh) configuration.<br>
i used to use a (confusingly named) PETScConfig.cmake file for this, which was not intended for such use.<br>
<br>
problem now is that the pc file of petsc is a bit broken.<br>
<br>
in particular, i want to link petsc static, but not all the dependencies. if i build petsc (static or not),<br>
the lib entry is listed as<br>
<br>
Libs: -L<path-to-petsc-configuration>/lib  -lpetsc<br>
<br>
now, the dependencies are listed in<br>
<br>
Libs.private: /usr/lib/liblapack.a /usr/lib/libblas.a libX11.a libpthread.a libssl.a libcrypto.a libhwloc.a libm.a -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -L/usr/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -lgfortran -lm -lgfortran -lm -lquadmath -lm -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -L/usr/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -lstdc++ -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -L/usr/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -ldl -lgcc_s -ldl -ldl<br>
<br>
which are for a totally static link (you'd use --static with pkg-config to obtain it).<br>
<br>
the problem with a totally static link, however, is that pkg-config returns this:<br>
<br>
pkg-config --static --libs PETSc -><br>
<br>
/usr/lib/liblapack.a /usr/lib/libblas.a libX11.a libpthread.a libssl.a libcrypto.a libhwloc.a libm.a -L/home/akva/kode/petsc/current/linux-gnu-cxx-opt/lib -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -lpetsc -lgfortran -lquadmath -lm -lstdc++ -lgcc_s -ldl<br>
<br>
which breaks at linking because petsc won't see any of the symbols in those .a files before (static link is order dependent).<br></blockquote><div><br></div><div>I do not understand this explanation.</div><div><br></div><div>1) Why does the link fail? Please send the error.</div><div><br></div><div>2) Is pkgconfig changing/filtering the link line? That would seem like a bug in pkgconfig.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
so i cannot use this file to do a fully static build either (unless i add -Wl,--whole-archive or equivalent hacks).<br>
<br>
my suggested fix would be to always list the link dependencies in the Libs: line (and in the proper order - -lpetsc goes first). this works fine with dynamic links (even though -lpetsc would bring in the dependencies) and it works with petsc static.<br>
<br>
before i try to grok the petsc buildsystem i wanted to check if this would be welcome, or even better if i there is something i'm missing..<br>
<br>
arnem<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>