1 # $Id: Makefile,v 1.71 2012/09/20 12:45:59 nanard Exp $
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
19 #CFLAGS = -pipe -O -g -DDEBUG
23 CFLAGS
+= -Wstrict-prototypes
24 #CFLAGS += -Wdeclaration-after-statement
25 #CFLAGS += -Wno-missing-field-initializers
33 # OSNAME and FWNAME are used for building OS or FW dependent code.
37 .if exists
(/usr
/include/net
/pfvar.h
)
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
52 .if
$(OSNAME
) == "NetBSD"
53 FWNAME
!= .
/etc
/rc.subr
; .
/etc
/rc.conf
; \
54 if checkyesno ipfilter
; then \
55 echo
"ipf"; else echo
"pf"; fi
58 .if
$(OSNAME
) == "DragonFly"
59 FWNAME
!= .
/etc
/rc.subr
; .
/etc
/rc.conf
; \
60 if chechyesno ipfilter
; then \
61 echo
"ipf"; else echo
"pf"; fi
65 .if
$(OSNAME
) == "Darwin"
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
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 \
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"
98 TESTGETIFSTATSOBJS
= testgetifstats.o mac
/getifstats.o
100 ALLOBJS
+= $(BSDOBJS
)
101 TESTGETIFSTATSOBJS
= testgetifstats.o bsd
/getifstats.o
104 .if
$(FWNAME
) == "pf"
106 .elif
$(FWNAME
) == "ipfw"
107 ALLOBJS
+= $(IPFWOBJS
)
109 ALLOBJS
+= $(IPFOBJS
)
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 \
120 .if
$(OSNAME
) == "Darwin"
125 .if
$(OSNAME
) == "SunOS"
126 LIBS
+= -lsocket
-lnsl
-lkstat
-lresolv
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
139 $(RM
) $(STDOBJS
) $(BSDOBJS
) $(SUNOSOBJS
) $(MACOBJS
) $(EXECUTABLES
) \
141 $(MISCOBJS
) config.h testgetifstats.o testupnppermissions.o \
142 miniupnpdctl.o testgetifaddr.o \
143 $(PFOBJS
) $(IPFOBJS
) $(IPFWOBJS
)
145 install: miniupnpd genuuid
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 \
160 elif which uuid
2>&1 > /dev
/null
; then \
162 else echo
"00000000-0000-0000-0000-000000000000"; \
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
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
)
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
)
196 # $(CC) $(CFLAGS) -o $@ $^
198 # $(CC) $(CFLAGS) -o $@ $>
200 config.h
: genconfig.sh VERSION
201 .
/genconfig.sh
$(CONFIG_OPTIONS
)
205 $(CC
) $(CFLAGS
) -c
-o
$@
$<
207 # $(CC) $(CFLAGS) -c -o $(.TARGET) $(.IMPSRC)