1PROGRAM	       = dsbdriverd
2DBFILE	       = drivers.db
3RCSCRIPT       = rc.d/${PROGRAM}
4MANFILE	       = man/${PROGRAM}.8
5LOGFILE	       = /var/log/${PROGRAM}.log
6PIDFILE	       = /var/run/${PROGRAM}.pid
7PREFIX	      ?= /usr/local
8CFGDIR         = ${PREFIX}/etc/${PROGRAM}
9BINDIR	       = ${PREFIX}/libexec
10MANDIR	       = ${PREFIX}/man/man8
11RCDIR	       = ${PREFIX}/etc/rc.d
12DBDIR	       = ${PREFIX}/share/${PROGRAM}
13USBDB	       = ${PREFIX}/share/usbids/usb.ids
14PCIDB0	       = ${PREFIX}/share/pciids/pci.ids
15PCIDB1	       = /usr/share/misc/pci_vendors
16CFGFILE        = config.lua
17CFGMODULES     = netif.lua
18SOURCES	       = ${PROGRAM}.c config.c device.c log.c
19INSTALL_TARGETS= ${PROGRAM} ${RCSCRIPT} ${CFGFILE} ${MANFILE}
20PROGRAM_FLAGS  = -Wall ${CFLAGS} ${CPPFLAGS} -DPROGRAM=\"${PROGRAM}\"
21PROGRAM_FLAGS += -DPATH_DRIVERS_DB=\"${DBDIR}/${DBFILE}\"
22PROGRAM_FLAGS += -DPATH_LOG=\"${LOGFILE}\"
23PROGRAM_FLAGS += -DPATH_PID_FILE=\"${PIDFILE}\"
24PROGRAM_FLAGS += -DPATH_CFG_FILE=\"${CFGDIR}/${CFGFILE}\"
25PROGRAM_FLAGS += -DPATH_PCIID_DB0=\"${PCIDB0}\"
26PROGRAM_FLAGS += -DPATH_PCIID_DB1=\"${PCIDB1}\"
27PROGRAM_FLAGS += -DPATH_USBID_DB=\"${USBDB}\"
28PROGRAM_FLAGS += -L${PREFIX}/lib -I${PREFIX}/include/lua52
29PROGRAM_LIBS   = -lusb -lutil -llua-5.2
30LUA_PROG      ?= lua52
31BSD_INSTALL_DATA    ?= install -m 0644
32BSD_INSTALL_SCRIPT  ?= install -m 555
33BSD_INSTALL_PROGRAM ?= install -s -m 555
34
35all: ${INSTALL_TARGETS}
36
37${PROGRAM}: ${SOURCES}
38	${CC} -o ${PROGRAM} ${PROGRAM_FLAGS} ${.ALLSRC} ${PROGRAM_LIBS}
39
40${RCSCRIPT}: ${RCSCRIPT}.tmpl
41	sed -e 's|@PATH_PROGRAM@|${BINDIR}/${PROGRAM}|g' \
42	    -e 's|@PATH_PIDFILE@|${PIDFILE}|g' \
43	< ${.ALLSRC} > ${RCSCRIPT}
44
45${CFGFILE}: ${CFGFILE}.in
46	sed -e 's|@MODULE_PATH@|${CFGDIR}|g' < ${.ALLSRC} > ${CFGFILE}
47
48${MANFILE}: ${MANFILE}.tmpl
49	sed -e 's|@PATH_DB@|${DBDIR}/${DBFILE}|g' \
50	    -e 's|@PATH_LOG@|${LOGFILE}|g' \
51	    -e 's|@PATH_CFG@|${CFGDIR}/${CFGFILE}|g' \
52	< ${.ALLSRC} > ${MANFILE}
53
54install: ${INSTALL_TARGETS}
55	${BSD_INSTALL_PROGRAM} ${PROGRAM} ${DESTDIR}${BINDIR}
56	${BSD_INSTALL_SCRIPT} ${RCSCRIPT} ${DESTDIR}${RCDIR}
57	if [ ! -d ${DESTDIR}${DBDIR} ]; then \
58		mkdir -p ${DESTDIR}${DBDIR}; \
59	fi
60	if [ ! -d ${DESTDIR}${CFGDIR} ]; then \
61		mkdir -p ${DESTDIR}${CFGDIR}; \
62	fi
63	${BSD_INSTALL_DATA} ${DBFILE} ${DESTDIR}${DBDIR}
64	${BSD_INSTALL_DATA} ${MANFILE} ${DESTDIR}${MANDIR}
65	if [ ! -f ${DESTDIR}${CFGDIR}/${CFGFILE} ]; then \
66		${BSD_INSTALL_DATA} ${CFGFILE} ${DESTDIR}${CFGDIR}; \
67	fi
68	${BSD_INSTALL_DATA} ${CFGFILE} ${DESTDIR}${CFGDIR}/${CFGFILE}.sample
69	${BSD_INSTALL_DATA} ${CFGMODULES} ${DESTDIR}${CFGDIR}
70
71readme: readme.mdoc
72	mandoc -mdoc readme.mdoc | perl -e 'foreach (<STDIN>) { \
73		$$_ =~ s/(.)\x08\1/$$1/g; $$_ =~ s/_\x08(.)/$$1/g; print $$_ \
74	}' | sed '1,1d' > README
75
76readmemd: readme.mdoc
77	mandoc -mdoc -Tmarkdown readme.mdoc | sed '1,1d; $$,$$d' > README.md
78
79tests/${PROGRAM}-test: ${SOURCES} tests/test.h
80	${CC} -o tests/${PROGRAM}-test ${PROGRAM_FLAGS} \
81		-Wno-unused-function -Itests -DTEST=1 \
82		${SOURCES} ${PROGRAM_LIBS} -latf-c
83
84test: tests/${PROGRAM}-test
85	kyua test -k tests/Kyuafile
86	${LUA_PROG} tests/netif_tests.lua
87
88clean:
89	-rm -f ${PROGRAM}
90	-rm -f ${RCSCRIPT}
91	-rm -f ${CFGFILE}
92	-rm -f ${MANFILE}
93	-rm -f tests/${PROGRAM}-test
94