Fix gcc 3.4 build.
[dragonfly.git] / contrib / ipfilter / Makefile
1 #
2 # Copyright (C) 1993-2001 by Darren Reed.
3 #
4 # See the IPFILTER.LICENCE file for details on licencing.
5 #
6 # $Id: Makefile,v 2.11.2.15 2002/12/02 04:22:56 darrenr Exp $
7 #
8 .PATH: ${.CURDIR}../../contrib/ipfilter ${.CURDIR}/../../sys/contrib/ipfilter
9
10 BINDEST=/usr/local/bin
11 SBINDEST=/sbin
12 MANDIR=/usr/local/man
13 #To test prototyping
14 CC=gcc -Wstrict-prototypes -Wmissing-prototypes
15 #CC=gcc
16 #CC=cc -Dconst=
17 DEBUG=-g
18 TOP=../..
19 CFLAGS=-I$$(TOP)
20 CPU=`uname -m`
21 CPUDIR=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m`
22 IPFILKERN=`/bin/ls -1tr /usr/src/sys/compile | grep -v .bak | tail -1`
23 #
24 # To enable this to work as a Loadable Kernel Module...
25 #
26 IPFLKM=-DIPFILTER_LKM
27 #
28 # To enable logging of blocked/passed packets...
29 #
30 IPFLOG=-DIPFILTER_LOG
31 #
32 # The facility you wish to log messages from ipmon to syslogd with.
33 #
34 LOGFAC=-DLOGFAC=LOG_LOCAL0
35
36 #
37 # Uncomment the next 3 lines if you want to view the state table a la top(1)
38 # (requires that you have installed ncurses).
39 STATETOP_CFLAGS=-DSTATETOP
40 #
41 # Where to find the ncurses include files (if not in default path), 
42 #
43 #STATETOP_INC=
44 #STATETOP_INC=-I/usr/local/include
45 #
46 # How to link the ncurses library
47 #
48 STATETOP_LIB=-lcurses
49 #STATETOP_LIB=-L/usr/local/lib -lncurses
50
51 #
52 # Uncomment this when building IPv6 capability.
53 #
54 #INET6=-DUSE_INET6
55 #
56 # For packets which don't match any pass rules or any block rules, set either
57 # FR_PASS or FR_BLOCK (respectively).  It defaults to FR_PASS if left
58 # undefined.  This is ignored for ipftest, which can thus return three
59 # results: pass, block and nomatch.  This is the sort of "block unless
60 # explicitly allowed" type #define switch.
61 #
62 POLICY=-DIPF_DEFAULT_PASS=FR_PASS
63 #
64 MFLAGS1='CFLAGS=$(CFLAGS) $(ARCHINC) $(SOLARIS2) $(INET6) $(IPFLOG)' \
65         "IPFLOG=$(IPFLOG)" "LOGFAC=$(LOGFAC)" "POLICY=$(POLICY)" \
66         "SOLARIS2=$(SOLARIS2)" "DEBUG=$(DEBUG)" "DCPU=$(CPU)" \
67         "CPUDIR=$(CPUDIR)" 'STATETOP_CFLAGS=$(STATETOP_CFLAGS)' \
68         'STATETOP_INC=$(STATETOP_INC)' 'STATETOP_LIB=$(STATETOP_LIB)' \
69         "BITS=$(BITS)" "OBJ=$(OBJ)"
70 DEST="BINDEST=$(BINDEST)" "SBINDEST=$(SBINDEST)" "MANDIR=$(MANDIR)"
71 MFLAGS=$(MFLAGS1) "IPFLKM=$(IPFLKM)"
72 #
73 SHELL=/bin/sh
74 #
75 ########## ########## ########## ########## ########## ########## ##########
76 #
77 CP=/bin/cp
78 RM=/bin/rm
79 CHMOD=/bin/chmod
80 INSTALL=install
81 #
82
83 all:
84         @echo "Chose one of the following targets for making IP filter:"
85         @echo ""
86         @echo "solaris  - auto-selects SunOS4.1.x/Solaris 2.3-6/Solaris2.4-6x86"
87         @echo "netbsd   - compile for NetBSD"
88         @echo "openbsd  - compile for OpenBSD"
89         @echo "freebsd20        - compile for FreeBSD 2.0, 2.1 or earlier"
90         @echo "freebsd22        - compile for FreeBSD-2.2 or greater"
91         @echo "freebsd3 - compile for FreeBSD-3.x"
92         @echo "freebsd4 - compile for FreeBSD-4.x"
93         @echo "bsd      - compile for generic 4.4BSD systems"
94         @echo "bsdi     - compile for BSD/OS"
95         @echo "irix     - compile for SGI IRIX"
96         @echo ""
97
98 tests:
99         @if [ -d test ]; then (cd test; make) \
100         else echo test directory not present, sorry; fi
101
102 include:
103         if [ ! -f netinet/done ] ; then \
104                 (cd netinet; ln -s ../*.h .; ln -s ../ip_*_pxy.c .; ); \
105                 (cd netinet; ln -s ../ipsend/tcpip.h tcpip.h); \
106                 touch netinet/done; \
107         fi
108
109 sunos solaris: include
110         CC="$(CC)" ./buildsunos
111
112 freebsd22: include
113         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
114         -rm -f BSD/$(CPUDIR)/ioconf.h
115         @if [ -n $(IPFILKERN) ] ; then \
116                 if [ -f /sys/compile/$(IPFILKERN)/ioconf.h ] ; then \
117                 ln -s /sys/compile/$(IPFILKERN)/ioconf.h BSD/$(CPUDIR); \
118                 else \
119                 ln -s /sys/$(IPFILKERN)/ioconf.h BSD/$(CPUDIR); \
120                 fi \
121         elif [ ! -f `uname -v|sed -e 's@^.*:\(/[^: ]*\).*@\1@'`/ioconf.h ] ; then \
122                 echo -n "Can't find ioconf.h in "; \
123                 echo `uname -v|sed -e 's@^.*:\(/[^: ]*\).*@\1@'`; \
124                 exit 1;\
125         else \
126                 ln -s `uname -v|sed -e 's@^.*:\(/[^: ]*\).*@\1@'`/ioconf.h BSD/$(CPU) ; \
127         fi
128         make freebsd20
129
130 freebsd4: include
131         if [ x$INET6 = x ] ; then \
132                 echo "#undef INET6" > opt_inet6.h; \
133         else \
134                 echo "#define INET6" > opt_inet6.h; \
135         fi
136         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
137         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlfk_ipl.c" "MLD=mlfk_ipl.c" "LKM=ipf.ko" "DLKM=-DKLD_MODULE -I/sys"; cd ..)
138         (cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS1); cd ..)
139
140 freebsd3 freebsd30: include
141         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
142         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS1) "ML=mlf_ipl.c" LKM= ; cd ..)
143         (cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS1); cd ..)
144
145 netbsd: include
146         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
147         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c"; cd ..)
148         (cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
149
150 openbsd openbsd21: include
151         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
152         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c"; cd ..)
153         (cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
154
155 freebsd20 freebsd21: include
156         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
157         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlf_ipl.c"; cd ..)
158         (cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
159
160 bsd: include
161         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
162         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS); cd ..)
163         (cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
164
165 bsdi bsdos: include
166         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
167         (cd BSD/$(CPUDIR); make build "CC=$(CC)" TOP=../.. $(MFLAGS) LKM= ; cd ..)
168         (cd BSD/$(CPUDIR); make -f Makefile.ipsend "CC=$(CC)" TOP=../.. $(MFLAGS); cd ..)
169
170 irix IRIX: include
171         make setup "TARGOS=IRIX" "CPUDIR=$(CPUDIR)"
172         -(cd IRIX/$(CPUDIR); if [ $(MAKE) = make ] ; then make -f Makefile.std build TOP=../.. $(DEST) SGI=`../getrev` $(MFLAGS); else smake build SGI=`../getrev` TOP=../.. $(DEST) $(MFLAGS); fi;)
173         -(cd IRIX/$(CPUDIR); if [ $(MAKE) = make ] ; then make -f Makefile.ipsend.std SGI=`../getrev` TOP=../.. $(DEST) $(MFLAGS); else smake -f Makefile.ipsend SGI=`../getrev` TOP=../.. $(DEST) $(MFLAGS); fi)
174
175 linux: include
176         make setup "TARGOS=Linux" "CPUDIR=$(CPUDIR)"
177         ./buildlinux
178
179 linuxrev:
180         (cd Linux/$(CPUDIR); make build TOP=../.. $(DEST) $(MFLAGS) LKM= ; cd ..)
181         (cd Linux/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(DEST) $(MFLAGS); cd ..)
182
183 setup:
184         -if [ ! -d $(TARGOS)/$(CPUDIR) ] ; then mkdir $(TARGOS)/$(CPUDIR); fi
185         -rm -f $(TARGOS)/$(CPUDIR)/Makefile $(TARGOS)/$(CPUDIR)/Makefile.ipsend
186         -ln -s ../Makefile $(TARGOS)/$(CPUDIR)/Makefile
187         -if [ ! -f $(TARGOS)/$(CPUDIR)/Makefile.std -a \
188                 -f $(TARGOS)/Makefile.std ] ; then \
189             ln -s ../Makefile.std $(TARGOS)/$(CPUDIR)/Makefile.std; \
190          fi
191         -if [ ! -f $(TARGOS)/$(CPUDIR)/Makefile.ipsend.std -a \
192                 -f $(TARGOS)/Makefile.ipsend.std ] ; then \
193             ln -s ../Makefile.ipsend.std $(TARGOS)/$(CPUDIR)/Makefile.ipsend.std; \
194          fi
195         -ln -s ../Makefile.ipsend $(TARGOS)/$(CPUDIR)/Makefile.ipsend
196
197 clean: clean-include
198         ${RM} -f core *.o ipt fils ipf ipfstat ipftest ipmon if_ipl \
199         vnode_if.h $(LKM) *~
200         ${RM} -rf sparcv7 sparcv9
201         (cd SunOS4; make clean)
202         (cd SunOS5; make clean)
203         (cd BSD; make clean)
204         (cd Linux; make clean)
205         if [ "`uname -s`" = "IRIX" ]; then (cd IRIX; make clean); fi
206         [ -d test ] && (cd test; make clean)
207         (cd ipsend; make clean)
208
209 clean-include:
210         sh -c 'cd netinet; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done'
211         ${RM} -f netinet/done
212
213 clean-bsd: clean-include
214         (cd BSD; make clean)
215
216 clean-sunos4: clean-include
217         (cd SunOS4; make clean)
218
219 clean-sunos5: clean-include
220         (cd SunOS5; make clean)
221
222 clean-irix: clean-include
223         (cd IRIX; make clean)
224
225 clean-linux: clean-include
226         (cd Linux; make clean)
227
228 get:
229         -@for i in ipf.c ipt.h solaris.c ipf.h kmem.c ipft_ef.c linux.h \
230                 ipft_pc.c fil.c ipft_sn.c mln_ipl.c fils.c ipft_td.c \
231                 mls_ipl.c ip_compat.h ipl.h opt.c ip_fil.c ipl_ldev.c \
232                 parse.c ip_fil.h ipmon.c pcap.h ip_sfil.c ipt.c snoop.h \
233                 ip_state.c ip_state.h ip_nat.c ip_nat.h ip_frag.c \
234                 ip_frag.h ip_sfil.c misc.c; do \
235                 if [ ! -f $$i ] ; then \
236                         echo "getting $$i"; \
237                         sccs get $$i; \
238                 fi \
239         done
240
241 sunos4 solaris1: null
242         (cd SunOS4; make build TOP=.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
243         (cd SunOS4; make -f Makefile.ipsend "CC=$(CC)" TOP=.. $(DEST) $(MFLAGS); cd ..)
244
245 sunos5 solaris2: null
246         (cd SunOS5/$(CPUDIR); make build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Dsparc -D__sparc__"; cd ..)
247         (cd SunOS5/$(CPUDIR); make -f Makefile.ipsend TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
248
249 sunos5x86 solaris2x86: null
250         (cd SunOS5/$(CPUDIR); make build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Di86pc -Di386 -D__i386__"; cd ..)
251         (cd SunOS5/$(CPUDIR); make -f Makefile.ipsend TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
252
253 install-linux:
254         (cd Linux/$(CPUDIR); make install "TOP=../.." $(DEST) $(MFLAGS); cd ..)
255         (cd Linux/$(CPUDIR); make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(DEST) $(MFLAGS); cd ..)
256
257 install-bsd:
258         (cd BSD/$(CPUDIR); make install "TOP=../.." $(MFLAGS); cd ..)
259         (cd BSD/$(CPUDIR); make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..)
260
261 install-sunos4: solaris
262         (cd SunOS4; $(MAKE) "CPU=$(CPU)" "TOP=.." install)
263
264 install-sunos5: solaris
265         (cd SunOS5; $(MAKE) "CPUDIR=`uname -p`-`uname -r`" "CPU=$(CPU) TOP=.." install)
266
267 install-irix: irix
268         (cd IRIX; smake install "CPU=$(CPU) TOP=.." $(DEST) $(MFLAGS))
269
270 rcsget:
271         -@for i in ipf.c ipt.h solaris.c ipf.h kmem.c ipft_ef.c linux.h \
272                 ipft_pc.c fil.c ipft_sn.c mln_ipl.c fils.c ipft_td.c \
273                 mls_ipl.c ip_compat.h ipl.h opt.c ip_fil.c ipl_ldev.c \
274                 parse.c ip_fil.h ipmon.c pcap.h ip_sfil.c ipt.c snoop.h \
275                 ip_state.c ip_state.h ip_nat.c ip_nat.h ip_frag.c \
276                 ip_frag.h ip_sfil.c misc.c; do \
277                 if [ ! -f $$i ] ; then \
278                         echo "getting $$i"; \
279                         co $$i; \
280                 fi \
281         done
282
283 do-cvs:
284         find . -type d -name CVS -print | xargs /bin/rm -rf
285         find . -type f -name .cvsignore -print | xargs /bin/rm -f
286
287 null:
288         -@if [ "`$(MAKE) -v 2>&1 | sed -ne 's/GNU.*/GNU/p'`" = "GNU" ] ; then \
289                 echo 'Do not use GNU make (gmake) to compile IPFilter'; \
290                 exit 1; \
291         fi
292         -@echo make ok
293
294 test-solaris test-sunos4 test-sunos5: solaris
295         (cd test && make clean && make)
296
297 test-freebsd: freebsd
298         (cd test && make clean && make)
299
300 test-freebsd22: freebsd22
301         (cd test && make clean && make)
302
303 test-freebsd3: freebsd3
304         (cd test && make clean && make)
305
306 test-freebsd4: freebsd4
307         (cd test && make clean && make)
308
309 test-netbsd: netbsd
310         (cd test && make clean && make)
311
312 test-openbsd: openbsd
313         (cd test && make clean && make)
314
315 test-irix: irix
316         (cd test && make clean && make)