#2822: support full paths to libraries in LIBS variables
Reporter:Roland Haas
Status:open
Milestone:
Version:
Type:bug
Priority:minor
Component:

Changes (by Roland Haas):

On macOS using Homebrew pkg-config for HDF5 returns full library paths instead of -lLIBNAME stanzas:

rhaas@gdd6l52n-ofc Cactus % pkg-config --libs-only-l --static hdf5
-lhdf5 -lm -ldl -l/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/lib/libz.tbd -l/opt/homebrew/lib/libsz.dylib

This happens only for static linking. This causes g++ to fail at link time:

rhaas@gdd6l52n-ofc Cactus % g++-14 `pkg-config --libs-only-L hdf5` `pkg-config --libs-only-l --static hdf5` dummy.c
ld: library '/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/lib/libz.tbd' not found
collect2: error: ld returned 1 exit status

This seems like bug in the pkg-config file (`/opt/homebrew/Cellar/hdf5/1.14.3_1/lib/pkgconfig/hdf5.pc`) supplied by HomeBrew:

rhaas@gdd6l52n-ofc Cactus % cat /opt/homebrew/Cellar/hdf5/1.14.3_1/lib/pkgconfig/hdf5.pc
prefix=/opt/homebrew/Cellar/hdf5/1.14.3_1
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: hdf5
Description: HDF5 (Hierarchical Data Format 5) Software Library
Version: 1.14.3

Cflags: -I${includedir}
Libs: -L${libdir}  -lhdf5
Requires:
Libs.private:  -lhdf5  -lm -ldl -l/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/lib/libz.tbd -l/opt/homebrew/lib/libsz.dylib -l/opt/homebrew/lib/libsz.dylib
Requires.private:

Correct would be to not use -l with t

--
Ticket URL: https://bitbucket.org/einsteintoolkit/tickets/issues/2822/support-full-paths-to-libraries-in-libs