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