# $Progeny$

prefix = /usr
datadir = $(prefix)/share
execdir = $(datadir)/tools
hwlistsdir = $(datadir)/discover

DESTDIR =

MAJOR=2
DATE=$(shell date +%Y.%m.%d)
VERSION=$(MAJOR).$(DATE)
DISTNAME=discover-data-$(VERSION)

KVERSION_24 = 2.4.27
KVERSION_26 = 2.6.17

discover_data_EXEC = lst2xml merge-lst-to-xml mkshorthwlist reduce-xml xml2lst \
	discover-updater.pl trim26lst
old_hwlists_DATA = pci.lst pci-26.lst pci-sparc.lst pci-hppa.lst pci-ia64.lst \
                   pcmcia.lst pcmcia-26.lst \
                   usb.lst usb-26.lst sbus.lst sbus-26.lst
hwlists_DATA = ata-busclass.xml \
               ata-device.xml \
               ata-vendor.xml \
               pci-busclass.xml \
               pci-device.xml \
               pci-device-deb.xml \
               pci-vendor.xml \
               pcmcia-busclass.xml \
               pcmcia-device.xml \
               pcmcia-vendor.xml \
               scsi-busclass.xml \
               scsi-device.xml \
               scsi-vendor.xml \
               usb-busclass.xml \
               usb-device.xml \
               usb-vendor.xml
GENERATED = list.xml
EXTRA_DIST = Makefile Makefile.update merged_vendor_list.xls \
	ChangeLog README list.xml.in di-kernel-list \
	merge-device-xml pci-ids2xml xml-device-sort.xsl
all: $(discover_data_EXEC) $(old_hwlists_DATA) $(hwlists_DATA) $(GENERATED)

list.xml: list.xml.in
	sed s,@HWLISTSDIR@,$(hwlistsdir),g < list.xml.in > list.xml

shorthwlists: $(old_hwlists_DATA)
#	Copy in limited autodetect databases to save space.
	for discoverdb in $(old_hwlists_DATA); do \
		discoverfn=`basename $$discoverdb`; \
		./mkshorthwlist < $$discoverdb > $$discoverfn-short ; \
	done

shortxmllists: $(hwlists_DATA)
	./reduce-xml --class-spec=linux:2.4 --class-spec=linux:2.6 \
		--module-list=./di-kernel-list \
		-i pci-vendor.xml -i pci-busclass.xml -i pci-device.xml \
		-o pci-device-short.xml
	./reduce-xml --class-spec=linux:2.4 --class-spec=linux:2.6 \
		--module-list=./di-kernel-list \
		-i usb-vendor.xml -i usb-busclass.xml -i usb-device.xml \
		-o usb-device-short.xml
	./reduce-xml --class-spec=linux:2.4 --class-spec=linux:2.6 \
		--module-list=./di-kernel-list \
		-i pci-vendor.xml -i pci-busclass.xml -i pci-device.xml \
		-o pci-vendor-short.xml --output-type=vendor
	./reduce-xml --class-spec=linux:2.4 --class-spec=linux:2.6 \
		--module-list=./di-kernel-list \
		-i usb-vendor.xml -i usb-busclass.xml -i usb-device.xml \
		-o usb-vendor-short.xml --output-type=vendor
	./reduce-xml --class-spec=linux:2.4 --class-spec=linux:2.6 \
		--module-list=./di-kernel-list \
		-i scsi-vendor.xml -i scsi-busclass.xml -i scsi-device.xml \
		-o scsi-vendor-short.xml --output-type=vendor

install: $(hwlists_DATA) $(GENERATED)
	install -m 755 -d $(DESTDIR)$(hwlistsdir)
	install -m 644 $(hwlists_DATA) $(GENERATED) $(DESTDIR)$(hwlistsdir)
	install -m 755 -d $(DESTDIR)$(execdir)
	install -m 755 $(discover_data_EXEC) $(DESTDIR)$(execdir)

install-old: $(old_hwlists_DATA)
	install -m 755 -d $(DESTDIR)$(hwlistsdir)
	install -m 644 $(old_hwlists_DATA) $(DESTDIR)$(hwlistsdir)

install-old-udeb: shorthwlists
	install -m 755 -d $(DESTDIR)$(hwlistsdir)
	for list in $(old_hwlists_DATA) ; do \
		install -m 644 $$list-short $(DESTDIR)$(hwlistsdir)/$$list ; \
	done

uninstall:
	for i in $(hwlists_DATA) $(GENERATED); do rm $(DESTDIR)$(hwlistsdir)/$$i; done
	for i in $(discover_data_EXEC); do rm $(DESTDIR)$(execdir)/$$i; done
	-rmdir $(DESTDIR)$(hwlistsdir)
	-rmdir $(DESTDIR)$(execdir)

uninstall-old:
	for i in $(old_hwlists_DATA); do rm $(DESTDIR)$(hwlistsdir)/$$i; done
	-rmdir $(DESTDIR)$(hwlistsdir)

dist: clean
	rm -rf $(DISTNAME)
	mkdir $(DISTNAME)
	cp $(old_hwlists_DATA) $(hwlists_DATA) \
		$(discover_data_EXEC) $(EXTRA_DIST) $(DISTNAME)
	tar cf - $(DISTNAME) | gzip -9 > $(DISTNAME).tar.gz
	md5sum $(DISTNAME).tar.gz > $(DISTNAME).tar.gz.md5sum
	rm -rf $(DISTNAME)

clean::
	rm -f *.lst-short
	rm -f *.xml-short
	rm -f list.xml
	rm -f *~

distclean: clean

.PHONY: all install uninstall dist
