]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ipfilter/Makefile
This commit was generated by cvs2svn to compensate for changes in r168616,
[FreeBSD/FreeBSD.git] / contrib / ipfilter / Makefile
1 #
2 # Copyright (C) 1993-2001 by Darren Reed.
3 #
4 # Redistribution and use in source and binary forms are permitted
5 # provided that this notice is preserved and due credit is given
6 # to the original author and the contributors.
7 #
8 # $FreeBSD$
9 # Id: Makefile,v 2.76.2.19 2006/03/17 10:38:38 darrenr Exp $
10 #
11 SHELL=/bin/sh
12 BINDEST=/usr/local/bin
13 SBINDEST=/sbin
14 MANDIR=/usr/local/man
15 #To test prototyping
16 #CC=gcc -Wstrict-prototypes -Wmissing-prototypes
17 # -Wunused -Wuninitialized
18 #CC=gcc
19 #CC=cc -Dconst=
20 DEBUG=-g
21 # -O
22 CFLAGS=-I$$(TOP) -D_BSD_SOURCE
23 CPU=`uname -m`
24 CPUDIR=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m`
25 OBJ=.
26 #
27 # To enable this to work as a Loadable Kernel Module...
28 #
29 IPFLKM=-DIPFILTER_LKM
30 #
31 # To enable logging of blocked/passed packets...
32 #
33 IPFLOG=-DIPFILTER_LOG
34 #
35 # To enable loading filter rules compiled to C code...
36 #
37 #COMPIPF=-DIPFILTER_COMPILED
38 #
39 # To enable synchronisation between IPFilter hosts
40 #
41 #SYNC=-DIPFILTER_SYNC
42 #
43 # To enable extended IPFilter functionality
44 #
45 LOOKUP=-DIPFILTER_LOOKUP -DIPFILTER_SCAN
46 #
47 # The facility you wish to log messages from ipmon to syslogd with.
48 #
49 LOGFAC=-DLOGFAC=LOG_SECURITY
50 #
51 # To enable rules to be written with BPF syntax, uncomment these two lines.
52 #
53 # WARNING: If you're building a commercial product based on IPFilter, using
54 #          this options *may* infringe at least one patent held by CheckPoint
55 #          (5,606,668.)
56 #
57 #IPFBPF=-DIPFILTER_BPF -I/usr/local/include
58 #LIBBPF=-L/usr/local/lib -lpcap
59 #
60 # HP-UX and Solaris require this uncommented for BPF.
61 #
62 #BPFILTER=bpf_filter.o
63 #
64 # LINUXKERNEL is the path to the top of your Linux kernel source tree.
65 # By default IPFilter looks for /usr/src/linux, but you may have to change
66 # it to /usr/src/linux-2.4 or similar.
67 #
68 LINUXKERNEL=/usr/src/linux
69 LINUX=`uname -r | awk -F. ' { printf"%d",$$1;for(i=1;i<NF&&i<3;i++){printf("%02d",$$(i+1));}}'`
70
71 #
72 # All of the compile-time options are here, used for compiling the userland
73 # tools for regression testing.  Well, all except for IPFILTER_LKM, of course.
74 #
75 ALLOPTS=-DIPFILTER_LOG -DIPFILTER_LOOKUP \
76         -DIPFILTER_SCAN -DIPFILTER_SYNC -DIPFILTER_CKSUM
77
78 #
79 # Uncomment the next 3 lines if you want to view the state table a la top(1)
80 # (requires that you have installed ncurses).
81 #STATETOP_CFLAGS=-DSTATETOP
82 #
83 # Where to find the ncurses include files (if not in default path), 
84 #
85 #STATETOP_INC=
86 #STATETOP_INC=-I/usr/local/include
87 #
88 # How to link the ncurses library
89 #
90 #STATETOP_LIB=-lncurses
91 #STATETOP_LIB=-L/usr/local/lib -lncurses
92
93 #
94 # Uncomment this when building IPv6 capability.
95 #
96 #INET6=-DUSE_INET6
97 #
98 # For packets which don't match any pass rules or any block rules, set either
99 # FR_PASS or FR_BLOCK (respectively).  It defaults to FR_PASS if left
100 # undefined.  This is ignored for ipftest, which can thus return three
101 # results: pass, block and nomatch.  This is the sort of "block unless
102 # explicitly allowed" type #define switch.
103 #
104 POLICY=-DIPF_DEFAULT_PASS=FR_PASS
105 #
106 MFLAGS1='CFLAGS=$(CFLAGS) $(ARCHINC) $(SOLARIS2) $(SGIREV) $(INET6)' \
107         "IPFLOG=$(IPFLOG)" "LOGFAC=$(LOGFAC)" "POLICY=$(POLICY)" \
108         "SOLARIS2=$(SOLARIS2)" "DEBUG=$(DEBUG)" "DCPU=$(CPU)" \
109         "LIBBPF=$(LIBBPF)" "CPUDIR=$(CPUDIR)" "IPFBPF=$(IPFBPF)" \
110         'STATETOP_CFLAGS=$(STATETOP_CFLAGS)' "BPFILTER=$(BPFILTER)" \
111         'STATETOP_INC=$(STATETOP_INC)' 'STATETOP_LIB=$(STATETOP_LIB)' \
112         "BITS=$(BITS)" "OBJ=$(OBJ)" "LOOKUP=$(LOOKUP)" "COMPIPF=$(COMPIPF)" \
113         'SYNC=$(SYNC)' 'ALLOPTS=$(ALLOPTS)' 'LIBBPF=$(LIBBPF)'
114 MFLAGS=$(MFLAGS1) "IPFLKM=$(IPFLKM)"
115 MACHASSERT=`/bin/ls -1 /usr/sys/*/mach_assert.h | head -1`
116 #
117 SHELL=/bin/sh
118 #
119 ########## ########## ########## ########## ########## ########## ##########
120 #
121 CP=/bin/cp
122 RM=/bin/rm
123 CHMOD=/bin/chmod
124 INSTALL=install
125 #
126
127 all:
128         @echo "Chose one of the following targets for making IP filter:"
129         @echo ""
130         @echo "solaris  - auto-selects SunOS4.1.x/Solaris 2.3-6/Solaris2.4-6x86"
131         @echo "netbsd   - compile for NetBSD"
132         @echo "openbsd  - compile for OpenBSD"
133         @echo "freebsd20        - compile for FreeBSD 2.0, 2.1 or earlier"
134         @echo "freebsd22        - compile for FreeBSD-2.2 or greater"
135         @echo "freebsd3 - compile for FreeBSD-3.x"
136         @echo "freebsd4 - compile for FreeBSD-4.x"
137         @echo "freebsd5 - compile for FreeBSD-5.x"
138         @echo "freebsd6 - compile for FreeBSD-6.x"
139         @echo "bsd      - compile for generic 4.4BSD systems"
140         @echo "bsdi     - compile for BSD/OS"
141         @echo "irix     - compile for SGI IRIX"
142         @echo "hpux     - compile for HP-UX 11.00"
143         @echo "osf      - compile for OSF/Tru64 5.1"
144         @echo ""
145
146 tests:
147         @if [ -d test ]; then (cd test; make) \
148         else echo test directory not present, sorry; fi
149
150 retest:
151         @if [ -d test ]; then (cd test; make clean && make) \
152         else echo test directory not present, sorry; fi
153
154 include:
155         if [ ! -f netinet/done ] ; then \
156                 (cd netinet; ln -s ../*.h .; ln -s ../ip_*_pxy.c .;); \
157                 (cd netinet; ln -s ../ipsend/tcpip.h tcpip.h); \
158                 touch netinet/done; \
159         fi
160         -(cd netinet; ln -s ../ip_rules.h ip_rules.h)
161         if [ ! -f net/done ] ; then \
162                 (cd net; ln -s ../radix_ipf.h .; ); \
163                 touch net/done; \
164         fi
165
166 sunos solaris: include
167         MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" BPFILTER=$(BPFILTER) \
168                 CC="$(CC)" DEBUG="$(DEBUG)" ./buildsunos
169
170 freebsd22: include
171         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
172         -rm -f BSD/$(CPUDIR)/ioconf.h
173         -if [ x$(IPFILKERN) != x ] ; then \
174                 if [ -f /sys/compile/$(IPFILKERN)/ioconf.h ] ; then \
175                         ln -s /sys/compile/$(IPFILKERN)/ioconf.h BSD/$$y; \
176                 else \
177                         ln -s /sys/$(IPFILKERN)/ioconf.h BSD/$$y; \
178                 fi \
179         else \
180                 x=`uname -v|sed -e 's@^.*:\(/[^: ]*\).*$$@\1/ioconf.h@'`; \
181                 y=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m`; \
182                 if [ ! -f $$x ] ; then \
183                         echo -n "Can't find ioconf.h at $$x "; \
184                         exit 1;\
185                 else \
186                         ln -s $$x BSD/$$y ; \
187                 fi \
188         fi
189         make freebsd20
190
191 freebsd5 freebsd6: include
192         if [ x$(INET6) = x ] ; then \
193                 echo "#undef INET6" > opt_inet6.h; \
194         else \
195                 echo "#define INET6" > opt_inet6.h; \
196         fi
197         if [ "x$(IPFBPF)" = "x" ] ; then \
198                 echo "#undef NBPF" > opt_bpf.h; \
199                 echo "#undef NBPFILTER" > opt_bpf.h; \
200                 echo "#undef DEV_BPF" > opt_bpf.h; \
201         else \
202                 echo "#define NBPF" > opt_bpf.h; \
203                 echo "#define NBPFILTER" > opt_bpf.h; \
204                 echo "#define DEV_BPF" > opt_bpf.h; \
205         fi
206         if [ x$(ENABLE_PFIL) = x ] ; then \
207                 echo "#undef PFIL_HOOKS" > opt_pfil.h; \
208         else \
209                 echo "#define PFIL_HOOKS" > opt_pfil.h; \
210         fi
211
212         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
213         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlfk_ipl.c" "MLD=mlfk_ipl.c" "LKM=ipf.ko.5" "LKMR=ipfrule.ko.5" "DLKM=-DKLD_MODULE" "MLR=mlfk_rule.o"; cd ..)
214         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..)
215
216 freebsd4 : include
217         if [ x$(INET6) = x ] ; then \
218                 echo "#undef INET6" > opt_inet6.h; \
219         else \
220                 echo "#define INET6" > opt_inet6.h; \
221         fi
222         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
223         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlfk_ipl.c" "MLD=mlfk_ipl.c" "LKM=ipf.ko" "LKMR=ipfrule.ko" "DLKM=-DKLD_MODULE" "MLR=mlfk_rule.o"; cd ..)
224         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..)
225
226 freebsd3 freebsd30: include
227         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
228         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS1) "ML=mlf_ipl.c" "MLR=mlf_rule.o" LKM= LKMR=; cd ..)
229         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..)
230
231 netbsd: include
232         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
233         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c" LKMR= "MLR=mln_rule.o"; cd ..)
234         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..)
235
236 openbsd: include
237         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
238         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mlo_ipl.c" LKMR= "MLR=mlo_rule.o"; cd ..)
239         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..)
240
241 freebsd20 freebsd21: include
242         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
243         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlf_ipl.c" "MLR=mlf_rule.o"; cd ..)
244         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..)
245
246 osf tru64: null include
247         make setup "TARGOS=OSF" "CPUDIR=`OSF/cpurev`"
248         (cd OSF/`OSF/cpurev`; make build TRU64=`uname -v` TOP=../.. "DEBUG=-g" $(MFLAGS) "MACHASSERT=$(MACHASSERT)" "OSREV=`../cpurev`"; cd ..)
249         (cd OSF/`OSF/cpurev`; make -f Makefile.ipsend build TRU64=`uname -v` TOP=../.. $(MFLAGS) "OSREV=`../cpurev`"; cd ..)
250
251 aix: null include
252         make setup "TARGOS=AIX" "CPUDIR=`AIX/cpurev`"
253         (cd AIX/`AIX/cpurev`; make build AIX=`uname -v` TOP=../.. "DEBUG=-g" $(MFLAGS) "OSREV=`../cpurev`" BITS=`../bootbits.sh`; cd ..)
254 #       (cd AIX/`AIX/cpurev`; make -f Makefile.ipsend build AIX=`uname -v` TOP=../.. $(MFLAGS) "OSREV=`../cpurev`"; cd ..)
255
256 bsd: include
257         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
258         (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c" "MLR=mln_rule.o"; cd ..)
259         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..)
260
261 bsdi bsdos: include
262         make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
263         (cd BSD/$(CPUDIR); make build "CC=$(CC)" TOP=../.. $(MFLAGS) LKM= LKMR= ; cd ..)
264         (cd BSD/$(CPUDIR); make -f Makefile.ipsend build "CC=$(CC)" TOP=../.. $(MFLAGS); cd ..)
265
266 irix IRIX: include
267         make setup TARGOS=IRIX CPUDIR=`IRIX/cpurev`
268         if [ "x${SGIREV}" = "x" ] ; then \
269                 make irix "SGIREV=-D_KMEMUSER -DIRIX=`IRIX/getrev`"; \
270         else \
271                 (cd IRIX/`IRIX/cpurev`; smake -l -J 1 build TOP=../.. $(DEST) $(MFLAGS) IRIX=`../getrev` SGI=$$(IRIX) CPUDIR=`../cpurev`; cd ..); \
272                 (cd IRIX/`IRIX/cpurev`; make -f Makefile.ipsend build TOP=../.. $(DEST) $(MFLAGS) IRIX=`../getrev` SGI=$$(IRIX) CPUDIR=`../cpurev`; cd ..); \
273         fi
274
275 setup:
276         -if [ ! -d $(TARGOS)/$(CPUDIR) ] ; then mkdir $(TARGOS)/$(CPUDIR); fi
277         -rm -f $(TARGOS)/$(CPUDIR)/Makefile $(TARGOS)/$(CPUDIR)/Makefile.ipsend
278         -ln -s ../Makefile $(TARGOS)/$(CPUDIR)/Makefile
279         -ln -s ../Makefile.ipsend $(TARGOS)/$(CPUDIR)/Makefile.ipsend
280         -if [ -f $(TARGOS)/Makefile.common ] ; then \
281                 rm -f $(TARGOS)/$(CPUDIR)/Makefile.common; \
282                 ln -s ../Makefile.common $(TARGOS)/$(CPUDIR)/Makefile.common;\
283         fi
284
285 clean: clean-include
286         /bin/rm -rf h y.output
287         ${RM} -f core *.o ipt fils ipf ipfstat ipftest ipmon if_ipl \
288         vnode_if.h $(LKM) *~
289         /bin/rm -rf sparcv7 sparcv9 mdbgen_build
290         (cd SunOS4; $(MAKE) TOP=.. clean)
291         -(cd SunOS5; $(MAKE) TOP=.. clean)
292         (cd BSD; $(MAKE) TOP=.. clean)
293         (cd HPUX; $(MAKE) BITS=32 TOP=.. clean)
294         (cd Linux; $(MAKE) TOP=.. clean)
295         (cd OSF; $(MAKE) TOP=.. clean)
296         (cd AIX; $(MAKE) TOP=.. clean)
297         if [ "`uname -s`" = "IRIX" ]; then (cd IRIX; $(MAKE) clean); fi
298         [ -d test ] && (cd test; $(MAKE) clean)
299         (cd ipsend; $(MAKE) clean)
300
301 clean-include:
302         sh -c 'if [ -d netinet ] ; then cd netinet; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done fi'
303         sh -c 'if [ -d net ] ; then cd net; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done fi'
304         ${RM} -f netinet/done net/done
305
306 clean-bsd: clean-include
307         (cd BSD; make TOP=.. clean)
308
309 clean-hpux: clean-include
310         (cd HPUX; $(MAKE) BITS=32 clean)
311
312 clean-osf: clean-include
313         (cd OSF; make clean)
314
315 clean-aix: clean-include
316         (cd AIX; make clean)
317
318 clean-linux: clean-include
319         (cd Linux; make clean)
320
321 clean-sunos4: clean-include
322         (cd SunOS4; make clean)
323
324 clean-sunos5: clean-include
325         (cd SunOS5; $(MAKE) clean)
326         /bin/rm -rf sparcv?
327
328 clean-irix: clean-include
329         (cd IRIX; $(MAKE) clean)
330
331 h/xti.h:
332         mkdir -p h
333         ln -s /usr/include/sys/xti.h h
334
335 hpux: include h/xti.h
336         make setup CPUDIR=`HPUX/cpurev` TARGOS=HPUX
337         (cd HPUX/`HPUX/cpurev`; $(MAKE) build TOP=../.. $(DEST) $(MFLAGS) "BITS=`getconf KERNEL_BITS`" `../makeargs`; cd ..)
338         (cd HPUX/`HPUX/cpurev`; $(MAKE) -f Makefile.ipsend build TOP=../.. $(DEST) $(MFLAGS) "BITS=`getconf KERNEL_BITS`" `../makeargs`; cd ..)
339
340 sunos4 solaris1:
341         (cd SunOS4; make build TOP=.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
342         (cd SunOS4; make -f Makefile.ipsend build "CC=$(CC)" TOP=.. $(DEST) $(MFLAGS); cd ..)
343
344 sunos5 solaris2: null
345         (cd SunOS5/$(CPUDIR); $(MAKE) build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Dsparc -D__sparc__"; cd ..)
346         (cd SunOS5/$(CPUDIR); $(MAKE) -f Makefile.ipsend build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
347
348 sunos5x86 solaris2x86: null
349         (cd SunOS5/$(CPUDIR); make build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Di86pc -Di386 -D__i386__"; cd ..)
350         (cd SunOS5/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
351
352 linux: include
353         (cd Linux; make build LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) LINUXKERNEL=$(LINUXKERNEL); cd ..)
354         (cd Linux; make ipflkm LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) LINUXKERNEL=$(LINUXKERNEL) WORKDIR=`pwd`; cd ..)
355 #       (cd Linux; make -f Makefile.ipsend build LINUX=$(LINUX) TOP=.. "CC=$(CC)" $(MFLAGS); cd ..)
356
357 install-linux: linux
358         (cd Linux/; make LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) install ; cd ..)
359
360 install-bsd:
361         (cd BSD/$(CPUDIR); make install "TOP=../.." $(MFLAGS); cd ..)
362         (cd BSD/$(CPUDIR); make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..)
363
364 install-sunos4: solaris
365         (cd SunOS4; $(MAKE) CPU=$(CPU) TOP=.. install)
366
367 install-sunos5: solaris null
368         (cd SunOS5; $(MAKE) CPU=$(CPU) TOP=.. install)
369
370 install-aix:
371         (cd AIX/`AIX/cpurev`; make install "TOP=../.." $(MFLAGS); cd ..)
372 #       (cd AIX/`AIX/cpurev`; make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..)
373
374 install-hpux: hpux
375         (cd HPUX/`HPUX/cpurev`; $(MAKE) CPU=$(CPU) TOP=../.. "BITS=`getconf KERNEL_BITS`" install)
376
377 install-irix: irix
378         (cd IRIX; smake install CPU=$(CPU) TOP=.. $(DEST) $(MFLAGS) CPUDIR=`./cpurev`)
379
380 install-osf install-tru64:
381         (cd OSF/`OSF/cpurev`; make install "TOP=../.." $(MFLAGS); cd ..)
382
383 do-cvs:
384         find . -type d -name CVS -print | xargs /bin/rm -rf
385         find . -type f -name .cvsignore -print | xargs /bin/rm -f
386         /bin/rm -f ip_msnrpc_pxy.c ip_sunrpc_pxy.c
387
388 ip_rules.c ip_rules.h: rules/ip_rules tools/ipfcomp.c
389         -./ipf -n -cc -f rules/ip_rules 2>/dev/null 1>&2
390
391 null:
392         @if [ "`$(MAKE) -v 2>&1 | sed -ne 's/GNU.*/GNU/p'`" = "GNU" ] ; then \
393                 echo 'Do not use GNU make (gmake) to compile IPFilter'; \
394                 exit 1; \
395         fi
396         -@echo make ok
397
398 mdb:
399         /bin/rm -rf mdbgen_build
400         mdbgen -D_KERNEL -DIPFILTER_LOG -DIPFILTER_LOOKUP -DSUNDDI \
401                -DIPFILTER_SCAN -DIPFILTER_LKM -DSOLARIS2=10 -n ipf_mdb -k \
402                -I/home/dr146992/pfil -I/home/dr146992/ipf -f \
403                /usr/include/netinet/in_systm.h,/usr/include/sys/ethernet.h,/usr/include/netinet/in.h,/usr/include/netinet/ip.h,/usr/include/netinet/ip_var.h,/usr/include/netinet/tcp.h,/usr/include/netinet/tcpip.h,/usr/include/netinet/ip_icmp.h,/usr/include/netinet/udp.h,ip_compat.h,ip_fil.h,ip_nat.h,ip_state.h,ip_proxy.h,ip_scan.h
404