Brice

No, in this case I am not building with --static, and I am not passing --static to pkg-config either. However, there may be systems where I don't know whether the compiler (behind my back) uses --static, e.g. Cray or Blue Gene systems. Is it safe to always use --static with pkg-config?

I determine include paths, library paths, and libraries with the following shell code:

export PKG_CONFIG_PATH=${HWLOC_DIR}/lib/pkgconfig:${PCIUTILS_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH}

HWLOC_INC_DIRS="$(echo '' $(pkg-config hwloc --cflags) '' | sed -e 's+ -I/include + +g;s+ -I/usr/include + +g;s+ -I/usr/local/include + +g' | sed -e 's/ -I/ /g')"
HWLOC_LIB_DIRS="$(echo '' $(pkg-config hwloc --libs) '' | sed -e 's/ -l[^ ]*/ /g' | sed -e 's+ -L/lib + +g;s+ -L/lib64 + +g;s+ -L/usr/lib + +g;s+ -L/usr/lib64 + +g;s+ -L/usr/local/lib + +g;s+ -L/usr/local/lib64 + +g' | sed -e 's/ -L/ /g')"
HWLOC_LIBS="$(echo '' $(pkg-config hwloc --libs) '' | sed -e 's/ -[^l][^ ]*/ /g' | sed -e 's/ -l/ /g')"

The sed magic remove /usr/include and similar system paths if they are present, because having these present can lead to build problems. This does not affect whether -lnuma is present and not. The magic also removes the -I, -L, and -l prefixes that my build system insists on adding again (for historic reasons).

-erik



On Fri, Jan 4, 2013 at 5:30 PM, Brice Goglin <Brice.Goglin@inria.fr> wrote:
What's your compile line and how do you use package config?
Are you building with --static without passing --static to pkg-config?
@HWLOC_LIBS@ should only be needed for static linking so putting it in Libs.private should be fine (it's returned by "pkg-config --libs --static hwloc").

Brice



Le 04/01/2013 23:25, Erik Schnetter a écrit :
Brice

No, this did not actually work. I was confused. It seems that Libs.private is ignored.

Instead, I am now applying the following patch:

--- hwloc-1.6.orig/hwloc.pc.in 2012-11-12 06:33:14.000000000 -0500
+++ hwloc-1.6/hwloc.pc.in 2013-01-04 10:09:54.000000000 -0500
@@ -9,4 +9,4 @@
 Requires.private: @HWLOC_REQUIRES@
 Cflags: -I${includedir}
-Libs: -L${libdir} -lhwloc
+Libs: -L${libdir} -lhwloc @HWLOC_LIBS@
 Libs.private: @LIBS@

This seems to work.

-erik



On Fri, Jan 4, 2013 at 10:47 AM, Erik Schnetter <schnetter@gmail.com> wrote:
Brice

Yes, this did the trick. Thanks!

-erik


On Fri, Jan 4, 2013 at 1:33 AM, Brice Goglin <Brice.Goglin@inria.fr> wrote:
Hello Erik
I am not a pkgconfig expert but my feeling is that this has buggy for a long time. hwloc.pc.in should likely use HWLOC_LIBS instead of LIBS. On my machine, it makes Libs.private change from -dl to -lm -lnuma here (with -lpci -lxml2 depending on the config). We also need to check whether -ldl should be kept because of plugin support too.
Can you change LIBS instead HWLOC_LIBS in hwloc.pc.in, rerun configure, and try again?
Brice



Le 04/01/2013 04:50, Erik Schnetter a écrit :
I just installed hwloc 1.6 on a Linux Red Hat system. libnuma is required for linking -- I receive linker errors if I omit -lnuma, and I see that -lnuma is listed in libhwloc.la under "dependency_libs". However, pkgconfig/hwloc.pc does not mention libnuma. It does mention libpci, though.

Does this sound like an error when hwloc.pc is generated, or am I misunderstanding how pkg-config works? If you give me a pointer, I'd be happy to try an provide a patch.

-erik


--
Erik Schnetter <schnetter@gmail.com> http://www.perimeterinstitute.ca/personal/eschnetter/


_______________________________________________
hwloc-users mailing list
hwloc-users@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users




--
Erik Schnetter <schnetter@gmail.com> http://www.perimeterinstitute.ca/personal/eschnetter/



--
Erik Schnetter <schnetter@gmail.com> http://www.perimeterinstitute.ca/personal/eschnetter/




--
Erik Schnetter <schnetter@gmail.com> http://www.perimeterinstitute.ca/personal/eschnetter/