1# $Id: Makefile,v 1.31 2021/11/04 22:58:22 nanard Exp $
2# MiniUPnP project
3# author: Thomas Bernard
4# website: http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
5# for use with GNU Make (gmake)
6# install with :
7# $ DESTDIR=/tmp/dummylocation make install
8# or
9# $ INSTALLPREFIX=/usr/local make install
10# or
11# make install (miniupnpd will be put in /usr/sbin)
12#
13# install target is made for linux... sorry BSD users...
14#CFLAGS = -g -O0
15#CFLAGS += -ansi
16RM = rm -f
17INSTALL = install
18OS = $(shell $(CC) -dumpmachine)
19
20ifneq (, $(findstring linux, $(OS)))
21	LDLIBS += -lnfnetlink
22endif
23ifeq ($(DEB_HOST_ARCH_OS), kfreebsd)
24	LDLIBS += -lfreebsd-glue
25else
26ifneq (, $(findstring sun, $(OS)))
27	CFLAGS += -D_XOPEN_SOURCE
28	CFLAGS += -D_XOPEN_SOURCE_EXTENDED=1
29	CFLAGS += -D__EXTENSIONS__
30	LDFLAGS += -lsocket -lnsl -lresolv
31endif
32endif
33
34#EXECUTABLES = minissdpd testminissdpd listifaces
35EXECUTABLES = minissdpd testminissdpd testcodelength \
36              showminissdpdnotif
37MINISSDPDOBJS = minissdpd.o openssdpsocket.o daemonize.o upnputils.o \
38                ifacewatch.o getroute.o getifaddr.o asyncsendto.o
39TESTMINISSDPDOBJS = testminissdpd.o printresponse.o
40SHOWMINISSDPDNOTIFOBJS = showminissdpdnotif.o printresponse.o
41
42ALLOBJS = $(MINISSDPDOBJS) $(TESTMINISSDPDOBJS) \
43          $(SHOWMINISSDPDNOTIFOBJS) \
44          testcodelength.o
45
46# install directories
47ifeq ($(strip $(PREFIX)),)
48INSTALLPREFIX ?= /usr
49else
50INSTALLPREFIX ?= $(PREFIX)
51endif
52SBININSTALLDIR = $(INSTALLPREFIX)/sbin
53MANINSTALLDIR = $(INSTALLPREFIX)/share/man
54
55
56.PHONY:	all clean install depend check test
57
58all:	$(EXECUTABLES)
59
60test:	check
61
62clean:
63	$(RM) $(ALLOBJS) $(EXECUTABLES)
64
65install:	minissdpd
66	$(INSTALL) -d $(DESTDIR)$(SBININSTALLDIR)
67	$(INSTALL) minissdpd $(DESTDIR)$(SBININSTALLDIR)
68	$(INSTALL) -d $(DESTDIR)$(MANINSTALLDIR)/man1
69	$(INSTALL) minissdpd.1 $(DESTDIR)$(MANINSTALLDIR)/man1/minissdpd.1
70ifeq (, $(findstring darwin, $(OS)))
71	$(INSTALL) -d $(DESTDIR)/etc/init.d
72	$(INSTALL) minissdpd.init.d.script $(DESTDIR)/etc/init.d/minissdpd
73endif
74
75check:	validateminissdpd validatecodelength
76
77validateminissdpd:	testminissdpd minissdpd
78	./testminissdpd.sh
79	touch $@
80
81validatecodelength:	testcodelength
82	./testcodelength
83	touch $@
84
85minissdpd: $(MINISSDPDOBJS)
86
87testminissdpd:	$(TESTMINISSDPDOBJS)
88
89showminissdpdnotif:	$(SHOWMINISSDPDNOTIFOBJS)
90
91testcodelength:	testcodelength.o
92
93listifaces:	listifaces.o upnputils.o
94
95config.h:	VERSION
96	@tmp=`grep -n MINISSDPD_VERSION $@` ; \
97	line=`echo $$tmp | cut -d: -f1` ; \
98	old_version=`echo $$tmp | cut -d\\" -f2` ; \
99	new_version=`cat VERSION` ; \
100	if [ "$$new_version" != "$$old_version" ] ; then \
101		echo "updating VERSION in $@ from $$old_version to $$new_version"; \
102		sed "$${line}s/$${old_version}/$${new_version}/" $@ > $@.temp ; \
103		mv $@.temp $@ ; \
104	fi
105
106depend:
107	makedepend -f$(MAKEFILE_LIST) -Y \
108	$(ALLOBJS:.o=.c) 2>/dev/null
109
110# DO NOT DELETE
111
112minissdpd.o: config.h getifaddr.h upnputils.h openssdpsocket.h
113minissdpd.o: minissdpdtypes.h daemonize.h codelength.h ifacewatch.h
114minissdpd.o: asyncsendto.h
115openssdpsocket.o: config.h openssdpsocket.h minissdpdtypes.h upnputils.h
116daemonize.o: daemonize.h config.h
117upnputils.o: config.h upnputils.h getroute.h minissdpdtypes.h
118ifacewatch.o: config.h openssdpsocket.h minissdpdtypes.h upnputils.h
119getroute.o: getroute.h upnputils.h
120getifaddr.o: config.h getifaddr.h
121asyncsendto.o: asyncsendto.h upnputils.h
122testminissdpd.o: codelength.h printresponse.h
123printresponse.o: codelength.h
124showminissdpdnotif.o: codelength.h printresponse.h
125printresponse.o: codelength.h
126testcodelength.o: codelength.h
127