Stealth Mode script
[tomato.git] / release / src / router / miniupnpd / Makefile
bloba82e5e39d3cc429f6ce8619140b76ae552617e97
1 # $Id: Makefile,v 1.71 2012/09/20 12:45:59 nanard Exp $
2 # MiniUPnP project
3 # http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
4 # Author: Thomas Bernard
6 # Makefile for miniupnpd (MiniUPnP daemon)
8 # This Makefile should work for *BSD and SunOS/Solaris.
9 # On Mac OS X, use "bsdmake" to build.
10 # This Makefile is NOT compatible with GNU Make.
11 # Linux users, please use Makefile.linux :
12 # make -f Makefile.linux
14 # options can be passed to genconfig.sh through CONFIG_OPTIONS :
15 # $ CONFIG_OPTIONS="--ipv6 --igd2" make
18 CFLAGS ?= -pipe -Os
19 #CFLAGS = -pipe -O -g -DDEBUG
20 CFLAGS += -ansi
21 CFLAGS += -Wall
22 CFLAGS += -W
23 CFLAGS += -Wstrict-prototypes
24 #CFLAGS += -Wdeclaration-after-statement
25 #CFLAGS += -Wno-missing-field-initializers
26 CFLAGS += -fno-common
27 CC ?= gcc
28 RM = rm -f
29 MV = mv
30 INSTALL = install
31 STRIP = strip
33 # OSNAME and FWNAME are used for building OS or FW dependent code.
34 OSNAME != uname -s
35 ARCH != uname -m
36 .ifndef FWNAME
37 .if exists(/usr/include/net/pfvar.h)
38 FWNAME = pf
39 .else
40 FWNAME = ipf
41 .endif
42 .endif
44 # better way to find if we are using ipf or pf
45 .if defined(/etc/rc.subr) && defined(/etc/rc.conf)
46 .if $(OSNAME) == "FreeBSD"
47 FWNAME != . /etc/rc.subr; . /etc/rc.conf; \
48 if checkyesno ipfilter_enable; then \
49 echo "ipf"; else echo "pf"; fi
50 .endif
52 .if $(OSNAME) == "NetBSD"
53 FWNAME != . /etc/rc.subr; . /etc/rc.conf; \
54 if checkyesno ipfilter; then \
55 echo "ipf"; else echo "pf"; fi
56 .endif
58 .if $(OSNAME) == "DragonFly"
59 FWNAME != . /etc/rc.subr; . /etc/rc.conf; \
60 if chechyesno ipfilter; then \
61 echo "ipf"; else echo "pf"; fi
62 .endif
63 .endif
65 .if $(OSNAME) == "Darwin"
66 FWNAME = ipfw
67 .endif
69 # Solaris specific CFLAGS
70 .if $(OSNAME) == "SunOS"
71 CFLAGS += -DSOLARIS2=`uname -r | cut -d. -f2`
72 .if $(ARCH) == "amd64"
73 CFLAGS += -m64 -mcmodel=kernel -mno-red-zone -ffreestanding
74 .elif $(ARCH) == "sparc64"
75 CFLAGS += -m64 -mcmodel=medlow
76 .endif
77 .endif
79 STDOBJS = miniupnpd.o upnphttp.o upnpdescgen.o upnpsoap.o \
80 upnpredirect.o getifaddr.o daemonize.o upnpglobalvars.o \
81 options.o upnppermissions.o minissdp.o natpmp.o \
82 upnpevents.o upnputils.o getconnstatus.o \
83 upnppinhole.o
84 BSDOBJS = bsd/getifstats.o bsd/ifacewatcher.o
85 SUNOSOBJS = solaris/getifstats.o bsd/ifacewatcher.o
86 MACOBJS = mac/getifstats.o bsd/ifacewatcher.o
87 PFOBJS = pf/obsdrdr.o pf/pfpinhole.o
88 IPFOBJS = ipf/ipfrdr.o
89 IPFWOBJS = ipfw/ipfwrdr.o ipfw/ipfwaux.o
90 MISCOBJS = upnpreplyparse.o minixml.o
92 ALLOBJS = $(STDOBJS) $(MISCOBJS)
93 .if $(OSNAME) == "SunOS"
94 ALLOBJS += $(SUNOSOBJS)
95 TESTGETIFSTATSOBJS = testgetifstats.o solaris/getifstats.o
96 .elif $(OSNAME) == "Darwin"
97 ALLOBJS += $(MACOBJS)
98 TESTGETIFSTATSOBJS = testgetifstats.o mac/getifstats.o
99 .else
100 ALLOBJS += $(BSDOBJS)
101 TESTGETIFSTATSOBJS = testgetifstats.o bsd/getifstats.o
102 .endif
104 .if $(FWNAME) == "pf"
105 ALLOBJS += $(PFOBJS)
106 .elif $(FWNAME) == "ipfw"
107 ALLOBJS += $(IPFWOBJS)
108 .else
109 ALLOBJS += $(IPFOBJS)
110 .endif
112 TESTUPNPDESCGENOBJS = testupnpdescgen.o upnpdescgen.o
113 TESTUPNPPERMISSIONSOBJS = testupnppermissions.o upnppermissions.o
114 TESTGETIFADDROBJS = testgetifaddr.o getifaddr.o
115 MINIUPNPDCTLOBJS = miniupnpdctl.o
117 EXECUTABLES = miniupnpd testupnpdescgen testgetifstats \
118 testupnppermissions miniupnpdctl \
119 testgetifaddr
120 .if $(OSNAME) == "Darwin"
121 LIBS =
122 .else
123 LIBS = -lkvm
124 .endif
125 .if $(OSNAME) == "SunOS"
126 LIBS += -lsocket -lnsl -lkstat -lresolv
127 .endif
129 # set PREFIX variable to install in the wanted place
131 INSTALLBINDIR = $(PREFIX)/sbin
132 INSTALLETCDIR = $(PREFIX)/etc
133 # INSTALLMANDIR = $(PREFIX)/man
134 INSTALLMANDIR = /usr/share/man
136 all: $(EXECUTABLES)
138 clean:
139 $(RM) $(STDOBJS) $(BSDOBJS) $(SUNOSOBJS) $(MACOBJS) $(EXECUTABLES) \
140 testupnpdescgen.o \
141 $(MISCOBJS) config.h testgetifstats.o testupnppermissions.o \
142 miniupnpdctl.o testgetifaddr.o \
143 $(PFOBJS) $(IPFOBJS) $(IPFWOBJS)
145 install: miniupnpd genuuid
146 $(STRIP) miniupnpd
147 $(INSTALL) -d $(DESTDIR)$(INSTALLBINDIR)
148 $(INSTALL) -m 555 miniupnpd $(DESTDIR)$(INSTALLBINDIR)
149 $(INSTALL) -d $(DESTDIR)$(INSTALLETCDIR)
150 $(INSTALL) -b miniupnpd.conf $(DESTDIR)$(INSTALLETCDIR)
151 # TODO : install man page correctly
152 # $(INSTALL) -d $(INSTALLMANDIR)
153 # $(INSTALL) miniupnpd.8 $(INSTALLMANDIR)/cat8/miniupnpd.0
155 # genuuid is using the uuid cli tool available under OpenBSD 4.0 in
156 # the uuid-1.5.0 package
157 # any other cli tool returning a uuid on stdout should work.
158 UUID != if which uuidgen 2>&1 > /dev/null; then \
159 echo `uuidgen` ; \
160 elif which uuid 2>&1 > /dev/null; then \
161 echo `uuid` ; \
162 else echo "00000000-0000-0000-0000-000000000000"; \
165 genuuid:
166 $(MV) miniupnpd.conf miniupnpd.conf.before
167 sed -e "s/^uuid=[-0-9a-fA-F]*/uuid=$(UUID)/" miniupnpd.conf.before > miniupnpd.conf
168 $(RM) miniupnpd.conf.before
170 depend: config.h
171 mkdep $(ALLOBJS:.o=.c) testupnpdescgen.c testgetifstats.c \
172 testupnppermissions.c miniupnpdctl.c testgetifaddr.c
174 miniupnpd: config.h $(ALLOBJS)
175 $(CC) $(CFLAGS) -o $@ $(ALLOBJS) $(LIBS)
177 # BSDmake :
178 # $(CC) $(CFLAGS) -o $@ $> $(LIBS)
180 miniupnpdctl: config.h $(MINIUPNPDCTLOBJS)
181 $(CC) $(CFLAGS) -o $@ $(MINIUPNPDCTLOBJS)
183 testupnpdescgen: config.h $(TESTUPNPDESCGENOBJS)
184 $(CC) $(CFLAGS) -o $@ $(TESTUPNPDESCGENOBJS)
186 testgetifstats: config.h $(TESTGETIFSTATSOBJS)
187 $(CC) $(CFLAGS) -o $@ $(TESTGETIFSTATSOBJS) $(LIBS)
189 testgetifaddr: config.h $(TESTGETIFADDROBJS)
190 $(CC) $(CFLAGS) -o $@ $(TESTGETIFADDROBJS)
192 testupnppermissions: config.h $(TESTUPNPPERMISSIONSOBJS)
193 $(CC) $(CFLAGS) -o $@ $(TESTUPNPPERMISSIONSOBJS)
195 # gmake :
196 # $(CC) $(CFLAGS) -o $@ $^
197 # BSDmake :
198 # $(CC) $(CFLAGS) -o $@ $>
200 config.h: genconfig.sh VERSION
201 ./genconfig.sh $(CONFIG_OPTIONS)
203 .SUFFIXES: .o .c
204 .c.o:
205 $(CC) $(CFLAGS) -c -o $@ $<
207 # $(CC) $(CFLAGS) -c -o $(.TARGET) $(.IMPSRC)