Link directly to lib/libpci.so.3.1.5 will hard code this versioned string into lspci and other utilities, which is not desirable and won't work. In the other hand, linking to a symbolic link lib/libpci.so doesn't have this issue. 7/30/2010 - created by Qing He diff --git a/Makefile b/Makefile index 1b48e18..21af4b3 100644 --- a/Makefile +++ b/Makefile @@ -51,9 +51,9 @@ PCIINC_INS=lib/config.h lib/header.h lib/pci.h lib/types.h export -all: lib/$(PCILIB) lspci setpci example lspci.8 setpci.8 pcilib.7 update-pciids update-pciids.8 $(PCI_IDS) pcimodules pcimodules.8 +all: lib/$(PCILIB_DEV) lspci setpci example lspci.8 setpci.8 pcilib.7 update-pciids update-pciids.8 $(PCI_IDS) pcimodules pcimodules.8 -lib/$(PCILIB): $(PCIINC) force +lib/$(PCILIB) lib/$(PCILIB_DEV): $(PCIINC) force $(MAKE) -C lib all force: @@ -61,9 +61,9 @@ force: lib/config.h lib/config.mk: cd lib && ./configure -pcimodules: pcimodules.o common.o lib/$(PCILIB) -lspci: lspci.o ls-vpd.o ls-caps.o ls-ecaps.o ls-kernel.o ls-tree.o ls-map.o common.o lib/$(PCILIB) -setpci: setpci.o common.o lib/$(PCILIB) +pcimodules: pcimodules.o common.o lib/$(PCILIB_DEV) +lspci: lspci.o ls-vpd.o ls-caps.o ls-ecaps.o ls-kernel.o ls-tree.o ls-map.o common.o lib/$(PCILIB_DEV) +setpci: setpci.o common.o lib/$(PCILIB_DEV) pcimodules.o: pcimodules.c pciutils.h LSPCIINC=lspci.h pciutils.h $(PCIINC) @@ -83,7 +83,7 @@ update-pciids: update-pciids.sh chmod +x $@ # The example of use of libpci -example: example.o lib/$(PCILIB) +example: example.o lib/$(PCILIB_DEV) example.o: example.c $(PCIINC) %: %.o diff --git a/lib/Makefile b/lib/Makefile index 1eb06a5..a8dab56 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -42,7 +42,7 @@ ifdef PCI_HAVE_PM_NBSD_LIBPCI OBJS += nbsd-libpci endif -all: $(PCILIB) $(PCILIBPC) +all: $(PCILIB_DEV) $(PCILIBPC) ifeq ($(SHARED),no) $(PCILIB): $(addsuffix .o,$(OBJS)) @@ -53,6 +53,9 @@ else CFLAGS += -fPIC -fvisibility=hidden $(PCILIB): $(addsuffix .o,$(OBJS)) $(CC) -shared $(LDFLAGS) $(SONAME) -Wl,--version-script=libpci.ver -o $@ $^ $(LIB_LDLIBS) + +$(PCILIB_DEV): $(PCILIB) + ln -s $< $@ endif $(PCILIBPC): libpci.pc.in diff --git a/lib/configure b/lib/configure index eec225a..4318b05 100755 --- a/lib/configure +++ b/lib/configure @@ -174,16 +193,18 @@ fi echo "Checking whether to build a shared library... $SHARED (set manually)" if [ "$SHARED" = no ] ; then echo >>$m 'PCILIB=$(LIBNAME).a' + echo >>$m 'PCILIB_DEV=$(LIBNAME).a' echo >>$m 'LDLIBS=$(WITH_LIBS)' echo >>$m 'LIB_LDLIBS=' else echo >>$m 'PCILIB=$(LIBNAME).so.$(VERSION)' + echo >>$m 'PCILIB_DEV=$(LIBNAME).so' # We link the dependencies _to_ the library, so we do not need explicit deps in .pc echo >>$m 'LDLIBS=' echo >>$m 'LIB_LDLIBS=$(WITH_LIBS)' echo >>$c '#define PCI_SHARED_LIB' if [ "$SHARED" = yes ] ; then - echo >>$m 'SONAME=-Wl,-soname,$(LIBNAME).so$(ABI_VERSION)' + echo >>$m 'SONAME=-Wl,-soname -Wl,$(LIBNAME).so$(ABI_VERSION)' fi fi echo >>$m 'PCILIBPC=$(LIBNAME).pc'