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