Tomato 1.24
[tomato.git] / release / src / router / miniupnpd / Makefile
bloba7c7562d0a1726bf9a8d03729c5d9c68e18717fa
1 # $Id: Makefile,v 1.49 2009/01/29 18:21:05 nanard Exp $
2 # MiniUPnP project
3 # http://miniupnp.free.fr/
4 # Author: Thomas Bernard
5 # This Makefile should work for *BSD and SunOS/Solaris
6 # Linux users, please use Makefile.linux
7 CFLAGS ?= -Wall -Os
8 #CFLAGS = -Wall -O -g -DDEBUG
9 CC ?= gcc
10 RM = rm -f
11 MV = mv
12 INSTALL = install
13 STRIP = strip
15 # OSNAME and FWNAME are used for building OS or FW dependent code.
16 OSNAME != uname -s
17 ARCH != uname -m
18 .ifndef FWNAME
19 .if exists(/usr/include/net/pfvar.h)
20 FWNAME = pf
21 .else
22 FWNAME = ipf
23 .endif
24 .endif
26 # better way to find if we are using ipf or pf
27 .if $(OSNAME) == "FreeBSD"
28 FWNAME != . /etc/rc.subr; . /etc/rc.conf; \
29 if checkyesno ipfilter_enable; then \
30 echo "ipf"; else echo "pf"; fi
31 .endif
33 # Solaris specific CFLAGS
34 .if $(OSNAME) == "SunOS"
35 CFLAGS += -DSOLARIS2=`uname -r | cut -d. -f2`
36 .if $(ARCH) == "amd64"
37 CFLAGS += -m64 -mcmodel=kernel -mno-red-zone -ffreestanding
38 .elif $(ARCH) == "sparc64"
39 CFLAGS += -m64 -mcmodel=medlow
40 .endif
41 .endif
43 STDOBJS = miniupnpd.o upnphttp.o upnpdescgen.o upnpsoap.o \
44 upnpredirect.o getifaddr.o daemonize.o upnpglobalvars.o \
45 options.o upnppermissions.o minissdp.o natpmp.o \
46 upnpevents.o
47 BSDOBJS = bsd/getifstats.o
48 SUNOSOBJS = solaris/getifstats.o
49 PFOBJS = pf/obsdrdr.o
50 IPFOBJS = ipf/ipfrdr.o
51 MISCOBJS = upnpreplyparse.o minixml.o
53 ALLOBJS = $(STDOBJS) $(MISCOBJS)
54 .if $(OSNAME) == "SunOS"
55 ALLOBJS += $(SUNOSOBJS)
56 .else
57 ALLOBJS += $(BSDOBJS)
58 .endif
60 .if $(FWNAME) == "pf"
61 ALLOBJS += $(PFOBJS)
62 .else
63 ALLOBJS += $(IPFOBJS)
64 .endif
66 TESTUPNPDESCGENOBJS = testupnpdescgen.o upnpdescgen.o
67 .if $(OSNAME) == "SunOS"
68 TESTGETIFSTATSOBJS = testgetifstats.o solaris/getifstats.o
69 .else
70 TESTGETIFSTATSOBJS = testgetifstats.o bsd/getifstats.o
71 .endif
72 TESTUPNPPERMISSIONSOBJS = testupnppermissions.o upnppermissions.o
73 TESTGETIFADDROBJS = testgetifaddr.o getifaddr.o
74 MINIUPNPDCTLOBJS = miniupnpdctl.o
76 EXECUTABLES = miniupnpd testupnpdescgen testgetifstats \
77 testupnppermissions miniupnpdctl \
78 testgetifaddr
80 LIBS = -lkvm
81 .if $(OSNAME) == "SunOS"
82 LIBS += -lsocket -lnsl -lkstat -lresolv
83 .endif
85 # set PREFIX variable to install in the wanted place
87 INSTALLBINDIR = $(PREFIX)/sbin
88 INSTALLETCDIR = $(PREFIX)/etc
89 # INSTALLMANDIR = $(PREFIX)/man
90 INSTALLMANDIR = /usr/share/man
92 all: $(EXECUTABLES)
94 clean:
95 $(RM) $(STDOBJS) $(BSDOBJS) $(SUNOSOBJS) $(EXECUTABLES) \
96 testupnpdescgen.o \
97 $(MISCOBJS) config.h testgetifstats.o testupnppermissions.o \
98 miniupnpdctl.o testgetifaddr.o \
99 $(PFOBJS) $(IPFOBJS)
101 install: miniupnpd genuuid
102 $(STRIP) miniupnpd
103 $(INSTALL) -m 555 miniupnpd $(INSTALLBINDIR)
104 $(INSTALL) -b miniupnpd.conf $(INSTALLETCDIR)
105 $(INSTALL) miniupnpd.1 $(INSTALLMANDIR)
107 # genuuid is using the uuid cli tool available under OpenBSD 4.0 in
108 # the uuid-1.5.0 package
109 # any other cli tool returning a uuid on stdout should work.
110 UUID != if which uuidgen 2>&1 > /dev/null; then \
111 echo `uuidgen` ; \
112 elif which uuid 2>&1 > /dev/null; then \
113 echo `uuid` ; \
114 else echo "00000000-0000-0000-0000-000000000000"; \
117 genuuid:
118 $(MV) miniupnpd.conf miniupnpd.conf.before
119 sed -e "s/^uuid=[-0-9a-f]*/uuid=$(UUID)/" miniupnpd.conf.before > miniupnpd.conf
120 $(RM) miniupnpd.conf.before
122 depend: config.h
123 mkdep $(ALLOBJS:.o=.c) testupnpdescgen.c testgetifstats.c \
124 testupnppermissions.c miniupnpdctl.c testgetifaddr.c
126 miniupnpd: config.h $(ALLOBJS)
127 $(CC) $(CFLAGS) -o $@ $(ALLOBJS) $(LIBS)
129 # BSDmake :
130 # $(CC) $(CFLAGS) -o $@ $> $(LIBS)
132 miniupnpdctl: config.h $(MINIUPNPDCTLOBJS)
133 $(CC) $(CFLAGS) -o $@ $(MINIUPNPDCTLOBJS)
135 testupnpdescgen: config.h $(TESTUPNPDESCGENOBJS)
136 $(CC) $(CFLAGS) -o $@ $(TESTUPNPDESCGENOBJS)
138 testgetifstats: config.h $(TESTGETIFSTATSOBJS)
139 $(CC) $(CFLAGS) -o $@ $(TESTGETIFSTATSOBJS) $(LIBS)
141 testgetifaddr: config.h $(TESTGETIFADDROBJS)
142 $(CC) $(CFLAGS) -o $@ $(TESTGETIFADDROBJS)
144 testupnppermissions: config.h $(TESTUPNPPERMISSIONSOBJS)
145 $(CC) $(CFLAGS) -o $@ $(TESTUPNPPERMISSIONSOBJS)
147 # gmake :
148 # $(CC) $(CFLAGS) -o $@ $^
149 # BSDmake :
150 # $(CC) $(CFLAGS) -o $@ $>
152 config.h: genconfig.sh
153 ./genconfig.sh
155 .SUFFIXES: .o .c
156 .c.o:
157 $(CC) $(CFLAGS) -c -o $@ $<
159 # $(CC) $(CFLAGS) -c -o $(.TARGET) $(.IMPSRC)