Makefile revision 145519
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: head/contrib/ipfilter/Makefile 145519 2005-04-25 18:20:15Z darrenr $ 9# Id: Makefile,v 2.76.2.13 2004/11/08 18:42:40 darrenr Exp 10# 11SHELL=/bin/sh 12BINDEST=/usr/local/bin 13SBINDEST=/sbin 14MANDIR=/usr/local/man 15#To test prototyping 16#CC=gcc -Wstrict-prototypes -Wmissing-prototypes 17# -Wunused -Wuninitialized 18#CC=gcc 19#CC=cc -Dconst= 20DEBUG=-g 21# -O 22CFLAGS=-I$$(TOP) -D_BSD_SOURCE 23CPU=`uname -m` 24CPUDIR=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m` 25OBJ=. 26# 27# To enable this to work as a Loadable Kernel Module... 28# 29IPFLKM=-DIPFILTER_LKM 30# 31# To enable logging of blocked/passed packets... 32# 33IPFLOG=-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# 45LOOKUP=-DIPFILTER_LOOKUP -DIPFILTER_SCAN 46# 47# The facility you wish to log messages from ipmon to syslogd with. 48# 49LOGFAC=-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# 68LINUXKERNEL=/usr/src/linux 69LINUX=`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# 75ALLOPTS=-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# 104POLICY=-DIPF_DEFAULT_PASS=FR_PASS 105# 106MFLAGS1='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)' 114MFLAGS=$(MFLAGS1) "IPFLKM=$(IPFLKM)" 115MACHASSERT=`/bin/ls -1 /usr/sys/*/mach_assert.h | head -1` 116# 117SHELL=/bin/sh 118# 119########## ########## ########## ########## ########## ########## ########## 120# 121CP=/bin/cp 122RM=/bin/rm 123CHMOD=/bin/chmod 124INSTALL=install 125# 126 127all: 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 "bsd - compile for generic 4.4BSD systems" 139 @echo "bsdi - compile for BSD/OS" 140 @echo "irix - compile for SGI IRIX" 141 @echo "hpux - compile for HP-UX 11.00" 142 @echo "osf - compile for OSF/Tru64 5.1" 143 @echo "" 144 145tests: 146 @if [ -d test ]; then (cd test; make) \ 147 else echo test directory not present, sorry; fi 148 149retest: 150 @if [ -d test ]; then (cd test; make clean && make) \ 151 else echo test directory not present, sorry; fi 152 153include: 154 if [ ! -f netinet/done ] ; then \ 155 (cd netinet; ln -s ../*.h .; ln -s ../ip_*_pxy.c .;); \ 156 (cd netinet; ln -s ../ipsend/tcpip.h tcpip.h); \ 157 touch netinet/done; \ 158 fi 159 -(cd netinet; ln -s ../ip_rules.h ip_rules.h) 160 if [ ! -f net/done ] ; then \ 161 (cd net; ln -s ../radix_ipf.h .; ); \ 162 touch net/done; \ 163 fi 164 165sunos solaris: include 166 MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" BPFILTER=$(BPFILTER) \ 167 CC="$(CC)" DEBUG="$(DEBUG)" ./buildsunos 168 169freebsd22: include 170 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 171 -rm -f BSD/$(CPUDIR)/ioconf.h 172 -if [ x$(IPFILKERN) != x ] ; then \ 173 if [ -f /sys/compile/$(IPFILKERN)/ioconf.h ] ; then \ 174 ln -s /sys/compile/$(IPFILKERN)/ioconf.h BSD/$$y; \ 175 else \ 176 ln -s /sys/$(IPFILKERN)/ioconf.h BSD/$$y; \ 177 fi \ 178 else \ 179 x=`uname -v|sed -e 's@^.*:\(/[^: ]*\).*$$@\1/ioconf.h@'`; \ 180 y=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m`; \ 181 if [ ! -f $$x ] ; then \ 182 echo -n "Can't find ioconf.h at $$x "; \ 183 exit 1;\ 184 else \ 185 ln -s $$x BSD/$$y ; \ 186 fi \ 187 fi 188 make freebsd20 189 190freebsd5: include 191 if [ x$(INET6) = x ] ; then \ 192 echo "#undef INET6" > opt_inet6.h; \ 193 else \ 194 echo "#define INET6" > opt_inet6.h; \ 195 fi 196 if [ x$(ENABLE_PFIL) = x ] ; then \ 197 echo "#undef PFIL_HOOKS" > opt_pfil.h; \ 198 else \ 199 echo "#define PFIL_HOOKS" > opt_pfil.h; \ 200 fi 201 202 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 203 (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 ..) 204 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..) 205 206freebsd4 : include 207 if [ x$(INET6) = x ] ; then \ 208 echo "#undef INET6" > opt_inet6.h; \ 209 else \ 210 echo "#define INET6" > opt_inet6.h; \ 211 fi 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" "LKMR=ipfrule.ko" "DLKM=-DKLD_MODULE" "MLR=mlfk_rule.o"; cd ..) 214 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..) 215 216freebsd3 freebsd30: include 217 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 218 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS1) "ML=mlf_ipl.c" "MLR=mlf_rule.o" LKM= LKMR=; cd ..) 219 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..) 220 221netbsd: include 222 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 223 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c" LKMR= "MLR=mln_rule.o"; cd ..) 224 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 225 226openbsd: include 227 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 228 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mlo_ipl.c" LKMR= "MLR=mlo_rule.o"; cd ..) 229 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 230 231freebsd20 freebsd21: include 232 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 233 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlf_ipl.c" "MLR=mlf_rule.o"; cd ..) 234 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 235 236osf tru64: null include 237 make setup "TARGOS=OSF" "CPUDIR=`OSF/cpurev`" 238 (cd OSF/`OSF/cpurev`; make build TRU64=`uname -v` TOP=../.. "DEBUG=-g" $(MFLAGS) "MACHASSERT=$(MACHASSERT)" "OSREV=`../cpurev`"; cd ..) 239 (cd OSF/`OSF/cpurev`; make -f Makefile.ipsend build TRU64=`uname -v` TOP=../.. $(MFLAGS) "OSREV=`../cpurev`"; cd ..) 240 241bsd: include 242 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 243 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c" "MLR=mln_rule.o"; cd ..) 244 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 245 246bsdi bsdos: include 247 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 248 (cd BSD/$(CPUDIR); make build "CC=$(CC)" TOP=../.. $(MFLAGS) LKM= LKMR= ; cd ..) 249 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build "CC=$(CC)" TOP=../.. $(MFLAGS); cd ..) 250 251irix IRIX: include 252 make setup TARGOS=IRIX CPUDIR=`IRIX/cpurev` 253 if [ "x${SGIREV}" = "x" ] ; then \ 254 make irix "SGIREV=-D_KMEMUSER -DIRIX=`IRIX/getrev`"; \ 255 else \ 256 (cd IRIX/`IRIX/cpurev`; smake -l -J 1 build TOP=../.. $(DEST) $(MFLAGS) IRIX=`../getrev` SGI=$$(IRIX) CPUDIR=`../cpurev`; cd ..); \ 257 (cd IRIX/`IRIX/cpurev`; make -f Makefile.ipsend build TOP=../.. $(DEST) $(MFLAGS) IRIX=`../getrev` SGI=$$(IRIX) CPUDIR=`../cpurev`; cd ..); \ 258 fi 259 260setup: 261 -if [ ! -d $(TARGOS)/$(CPUDIR) ] ; then mkdir $(TARGOS)/$(CPUDIR); fi 262 -rm -f $(TARGOS)/$(CPUDIR)/Makefile $(TARGOS)/$(CPUDIR)/Makefile.ipsend 263 -ln -s ../Makefile $(TARGOS)/$(CPUDIR)/Makefile 264 -ln -s ../Makefile.ipsend $(TARGOS)/$(CPUDIR)/Makefile.ipsend 265 -if [ -f $(TARGOS)/Makefile.common ] ; then \ 266 rm -f $(TARGOS)/$(CPUDIR)/Makefile.common; \ 267 ln -s ../Makefile.common $(TARGOS)/$(CPUDIR)/Makefile.common;\ 268 fi 269 270clean: clean-include 271 /bin/rm -rf h y.output 272 ${RM} -f core *.o ipt fils ipf ipfstat ipftest ipmon if_ipl \ 273 vnode_if.h $(LKM) *~ 274 /bin/rm -rf sparcv7 sparcv9 mdbgen_build 275 (cd SunOS4; $(MAKE) TOP=.. clean) 276 -(cd SunOS5; $(MAKE) TOP=.. clean) 277 (cd BSD; $(MAKE) TOP=.. clean) 278 (cd HPUX; $(MAKE) BITS=32 TOP=.. clean) 279 (cd Linux; $(MAKE) TOP=.. clean) 280 (cd OSF; $(MAKE) TOP=.. clean) 281 if [ "`uname -s`" = "IRIX" ]; then (cd IRIX; $(MAKE) clean); fi 282 [ -d test ] && (cd test; $(MAKE) clean) 283 (cd ipsend; $(MAKE) clean) 284 285clean-include: 286 sh -c 'if [ -d netinet ] ; then cd netinet; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done fi' 287 sh -c 'if [ -d net ] ; then cd net; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done fi' 288 ${RM} -f netinet/done net/done 289 290clean-bsd: clean-include 291 (cd BSD; make TOP=.. clean) 292 293clean-hpux: clean-include 294 (cd HPUX; $(MAKE) BITS=32 clean) 295 296clean-osf: clean-include 297 (cd OSF; make clean) 298 299clean-linux: clean-include 300 (cd Linux; make clean) 301 302clean-sunos4: clean-include 303 (cd SunOS4; make clean) 304 305clean-sunos5: clean-include 306 (cd SunOS5; $(MAKE) clean) 307 /bin/rm -rf sparcv? 308 309clean-irix: clean-include 310 (cd IRIX; $(MAKE) clean) 311 312h/xti.h: 313 mkdir -p h 314 ln -s /usr/include/sys/xti.h h 315 316hpux: include h/xti.h 317 make setup CPUDIR=`HPUX/cpurev` TARGOS=HPUX 318 (cd HPUX/`HPUX/cpurev`; $(MAKE) build TOP=../.. $(DEST) $(MFLAGS) "BITS=`getconf KERNEL_BITS`" `../makeargs`; cd ..) 319 (cd HPUX/`HPUX/cpurev`; $(MAKE) -f Makefile.ipsend build TOP=../.. $(DEST) $(MFLAGS) "BITS=`getconf KERNEL_BITS`" `../makeargs`; cd ..) 320 321sunos4 solaris1: 322 (cd SunOS4; make build TOP=.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..) 323 (cd SunOS4; make -f Makefile.ipsend build "CC=$(CC)" TOP=.. $(DEST) $(MFLAGS); cd ..) 324 325sunos5 solaris2: null 326 (cd SunOS5/$(CPUDIR); $(MAKE) build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Dsparc -D__sparc__"; cd ..) 327 (cd SunOS5/$(CPUDIR); $(MAKE) -f Makefile.ipsend build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..) 328 329sunos5x86 solaris2x86: null 330 (cd SunOS5/$(CPUDIR); make build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Di86pc -Di386 -D__i386__"; cd ..) 331 (cd SunOS5/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..) 332 333linux: include 334 (cd Linux; make build LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) LINUXKERNEL=$(LINUXKERNEL); cd ..) 335 (cd Linux; make ipflkm LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) LINUXKERNEL=$(LINUXKERNEL) WORKDIR=`pwd`; cd ..) 336# (cd Linux; make -f Makefile.ipsend build LINUX=$(LINUX) TOP=.. "CC=$(CC)" $(MFLAGS); cd ..) 337 338install-linux: linux 339 (cd Linux/; make LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) install ; cd ..) 340 341install-bsd: 342 (cd BSD/$(CPUDIR); make install "TOP=../.." $(MFLAGS); cd ..) 343 (cd BSD/$(CPUDIR); make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..) 344 345install-sunos4: solaris 346 (cd SunOS4; $(MAKE) CPU=$(CPU) TOP=.. install) 347 348install-sunos5: solaris null 349 (cd SunOS5; $(MAKE) CPU=$(CPU) TOP=.. install) 350 351install-hpux: hpux 352 (cd HPUX/`HPUX/cpurev`; $(MAKE) CPU=$(CPU) TOP=../.. "BITS=`getconf KERNEL_BITS`" install) 353 354install-irix: irix 355 (cd IRIX; smake install CPU=$(CPU) TOP=.. $(DEST) $(MFLAGS) CPUDIR=`./cpurev`) 356 357install-osf install-tru64: 358 (cd OSF/`OSF/cpurev`; make install "TOP=../.." $(MFLAGS); cd ..) 359 (cd OSF/`OSF/cpurev`; make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..) 360 361do-cvs: 362 find . -type d -name CVS -print | xargs /bin/rm -rf 363 find . -type f -name .cvsignore -print | xargs /bin/rm -f 364 /bin/rm -f ip_msnrpc_pxy.c ip_sunrpc_pxy.c 365 366ip_rules.c ip_rules.h: rules/ip_rules tools/ipfcomp.c 367 -./ipf -n -cc -f rules/ip_rules 2>/dev/null 1>&2 368 369null: 370 @if [ "`$(MAKE) -v 2>&1 | sed -ne 's/GNU.*/GNU/p'`" = "GNU" ] ; then \ 371 echo 'Do not use GNU make (gmake) to compile IPFilter'; \ 372 exit 1; \ 373 fi 374 -@echo make ok 375 376mdb: 377 /bin/rm -rf mdbgen_build 378 mdbgen -D_KERNEL -DIPFILTER_LOG -DIPFILTER_LOOKUP -DSUNDDI \ 379 -DIPFILTER_SCAN -DIPFILTER_LKM -DSOLARIS2=10 -n ipf_mdb -k \ 380 -I/home/dr146992/pfil -I/home/dr146992/ipf -f \ 381 /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 382