+COMMON=common.o
+ifeq ($(COMPAT_GETOPT),yes)
+PCIINC+=compat/getopt.h
+COMMON+=compat/getopt.o
+endif
+
+lspci$(EXEEXT): lspci.o ls-vpd.o ls-caps.o ls-caps-vendor.o ls-ecaps.o ls-kernel.o ls-tree.o ls-map.o $(COMMON) lib/$(PCIIMPLIB)
+setpci$(EXEEXT): setpci.o $(COMMON) lib/$(PCIIMPLIB)
+
+LSPCIINC=lspci.h pciutils.h $(PCIINC)
+lspci.o: lspci.c $(LSPCIINC)
+ls-vpd.o: ls-vpd.c $(LSPCIINC)
+ls-caps.o: ls-caps.c $(LSPCIINC)
+ls-ecaps.o: ls-ecaps.c $(LSPCIINC)
+ls-kernel.o: ls-kernel.c $(LSPCIINC)
+ls-tree.o: ls-tree.c $(LSPCIINC)
+ls-map.o: ls-map.c $(LSPCIINC)
+
+setpci.o: setpci.c pciutils.h $(PCIINC)
+common.o: common.c pciutils.h $(PCIINC)
+compat/getopt.o: compat/getopt.c
+
+lspci$(EXEEXT): LDLIBS+=$(LIBKMOD_LIBS)
+ls-kernel.o: CFLAGS+=$(LIBKMOD_CFLAGS)
+
+update-pciids: update-pciids.sh
+ sed <$< >$@ "s@^DEST=.*@DEST=$(if $(IDSDIR),$(IDSDIR)/,)$(PCI_IDS)@;s@^PCI_COMPRESSED_IDS=.*@PCI_COMPRESSED_IDS=$(PCI_COMPRESSED_IDS)@;s@VERSION=.*@VERSION=$(VERSION)@"
+ chmod +x $@
+
+# The example of use of libpci
+example$(EXEEXT): example.o lib/$(PCIIMPLIB)
+example.o: example.c $(PCIINC)
+
+$(LMROBJS) pcilmr.o: CFLAGS+=-I .
+$(LMROBJS): %.o: %.c $(LMRINC) $(PCIINC) pciutils.h
+
+pcilmr: pcilmr.o lib/$(PCIIMPLIB) $(LMROBJS) $(COMMON)
+pcilmr.o: pcilmr.c $(LMRINC) $(PCIINC) pciutils.h
+
+%$(EXEEXT): %.o
+ $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
+
+ifdef PCI_OS_WINDOWS
+comma := ,
+%-rsrc.rc: lib/winrsrc.rc.in
+ sed <$< >$@ -e 's,@PCILIB_VERSION@,$(PCILIB_VERSION),' \
+ -e 's,@PCILIB_VERSION_WINRC@,$(subst .,\$(comma),$(PCILIB_VERSION).0),' \
+ -e 's,@FILENAME@,$(subst -rsrc.rc,$(EXEEXT),$@),' \
+ -e 's,@DESCRIPTION@,$(subst -rsrc.rc,,$@),' \
+ -e 's,@LIBRARY_BUILD@,0,' \
+ -e 's,@DEBUG_BUILD@,$(if $(findstring -g,$(CFLAGS)),1,0),'
+%-rsrc.o: %-rsrc.rc
+ $(WINDRES) --input=$< --output=$@ --input-format=rc --output-format=coff
+lspci$(EXEEXT): lspci-rsrc.o
+setpci$(EXEEXT): setpci-rsrc.o
+endif