Makefile revision 113109
122514Sdarrenr#
280486Sdarrenr# Copyright (C) 1993-2001 by Darren Reed.
322514Sdarrenr#
480486Sdarrenr# See the IPFILTER.LICENCE file for details on licencing.
522514Sdarrenr#
6113109Sdarrenr# $FreeBSD: head/contrib/ipfilter/Makefile 113109 2003-04-05 09:25:19Z darrenr $
7110917Sdarrenr# $Id: Makefile,v 2.11.2.15 2002/12/02 04:22:56 darrenr Exp $
822514Sdarrenr#
926119SdarrenrBINDEST=/usr/local/bin
1026119SdarrenrSBINDEST=/sbin
1126119SdarrenrMANDIR=/usr/local/man
1224583Sdarrenr#To test prototyping
1353024SguidoCC=gcc -Wstrict-prototypes -Wmissing-prototypes
1453024Sguido#CC=gcc
1534739Speter#CC=cc -Dconst=
1622514SdarrenrDEBUG=-g
1764588SdarrenrTOP=../..
1867615SdarrenrCFLAGS=-I$$(TOP)
1924583SdarrenrCPU=`uname -m`
2031183SpeterCPUDIR=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m`
2180486SdarrenrIPFILKERN=`/bin/ls -1tr /usr/src/sys/compile | grep -v .bak | tail -1`
2222514Sdarrenr#
2322514Sdarrenr# To enable this to work as a Loadable Kernel Module...
2422514Sdarrenr#
2522514SdarrenrIPFLKM=-DIPFILTER_LKM
2622514Sdarrenr#
2722514Sdarrenr# To enable logging of blocked/passed packets...
2822514Sdarrenr#
2922514SdarrenrIPFLOG=-DIPFILTER_LOG
3022514Sdarrenr#
3122514Sdarrenr# The facility you wish to log messages from ipmon to syslogd with.
3222514Sdarrenr#
33113109SdarrenrLOGFAC=-DLOGFAC=LOG_SECURITY
3460841Sdarrenr
3522514Sdarrenr#
3660841Sdarrenr# Uncomment the next 3 lines if you want to view the state table a la top(1)
3760841Sdarrenr# (requires that you have installed ncurses).
3892686SdarrenrSTATETOP_CFLAGS=-DSTATETOP
3960841Sdarrenr#
4060841Sdarrenr# Where to find the ncurses include files (if not in default path), 
4160841Sdarrenr#
4260841Sdarrenr#STATETOP_INC=
4360841Sdarrenr#STATETOP_INC=-I/usr/local/include
4460841Sdarrenr#
4560841Sdarrenr# How to link the ncurses library
4660841Sdarrenr#
4792686SdarrenrSTATETOP_LIB=-lcurses
4860841Sdarrenr#STATETOP_LIB=-L/usr/local/lib -lncurses
4960841Sdarrenr
5060841Sdarrenr#
5160841Sdarrenr# Uncomment this when building IPv6 capability.
5260841Sdarrenr#
5360841Sdarrenr#INET6=-DUSE_INET6
5460841Sdarrenr#
5522514Sdarrenr# For packets which don't match any pass rules or any block rules, set either
5622514Sdarrenr# FR_PASS or FR_BLOCK (respectively).  It defaults to FR_PASS if left
5722514Sdarrenr# undefined.  This is ignored for ipftest, which can thus return three
5822514Sdarrenr# results: pass, block and nomatch.  This is the sort of "block unless
5922514Sdarrenr# explicitly allowed" type #define switch.
6022514Sdarrenr#
6123279SpeterPOLICY=-DIPF_DEFAULT_PASS=FR_PASS
6222514Sdarrenr#
6392686SdarrenrMFLAGS1='CFLAGS=$(CFLAGS) $(ARCHINC) $(SOLARIS2) $(INET6) $(IPFLOG)' \
6422514Sdarrenr	"IPFLOG=$(IPFLOG)" "LOGFAC=$(LOGFAC)" "POLICY=$(POLICY)" \
6531183Speter	"SOLARIS2=$(SOLARIS2)" "DEBUG=$(DEBUG)" "DCPU=$(CPU)" \
6660841Sdarrenr	"CPUDIR=$(CPUDIR)" 'STATETOP_CFLAGS=$(STATETOP_CFLAGS)' \
6764588Sdarrenr        'STATETOP_INC=$(STATETOP_INC)' 'STATETOP_LIB=$(STATETOP_LIB)' \
6864588Sdarrenr	"BITS=$(BITS)" "OBJ=$(OBJ)"
6960841SdarrenrDEST="BINDEST=$(BINDEST)" "SBINDEST=$(SBINDEST)" "MANDIR=$(MANDIR)"
7053024SguidoMFLAGS=$(MFLAGS1) "IPFLKM=$(IPFLKM)"
7122514Sdarrenr#
7231183SpeterSHELL=/bin/sh
7331183Speter#
7422514Sdarrenr########## ########## ########## ########## ########## ########## ##########
7522514Sdarrenr#
7622514SdarrenrCP=/bin/cp
7722514SdarrenrRM=/bin/rm
7822514SdarrenrCHMOD=/bin/chmod
7922514SdarrenrINSTALL=install
8022514Sdarrenr#
8122514Sdarrenr
8222514Sdarrenrall:
8322514Sdarrenr	@echo "Chose one of the following targets for making IP filter:"
8422514Sdarrenr	@echo ""
8553024Sguido	@echo "solaris	- auto-selects SunOS4.1.x/Solaris 2.3-6/Solaris2.4-6x86"
8631183Speter	@echo "netbsd	- compile for NetBSD"
8731183Speter	@echo "openbsd	- compile for OpenBSD"
8831183Speter	@echo "freebsd	- compile for FreeBSD 2.0, 2.1 or earlier"
8931183Speter	@echo "freebsd22	- compile for FreeBSD-2.2 or greater"
9053024Sguido	@echo "freebsd3	- compile for FreeBSD-3.x"
9160841Sdarrenr	@echo "freebsd4	- compile for FreeBSD-4.x"
9231183Speter	@echo "bsd	- compile for generic 4.4BSD systems"
9322514Sdarrenr	@echo "bsdi	- compile for BSD/OS"
9431183Speter	@echo "irix	- compile for SGI IRIX"
9522514Sdarrenr	@echo ""
9622514Sdarrenr
9722514Sdarrenrtests:
9822514Sdarrenr	@if [ -d test ]; then (cd test; make) \
9922514Sdarrenr	else echo test directory not present, sorry; fi
10022514Sdarrenr
10126119Sdarrenrinclude:
10253024Sguido	if [ ! -f netinet/done ] ; then \
10392686Sdarrenr		(cd netinet; ln -s ../*.h .; ln -s ../ip_*_pxy.c .; ); \
10431183Speter		(cd netinet; ln -s ../ipsend/tcpip.h tcpip.h); \
10531183Speter		touch netinet/done; \
10631183Speter	fi
10726119Sdarrenr
10826119Sdarrenrsunos solaris: include
10972003Sdarrenr	CC="$(CC)" ./buildsunos
11022514Sdarrenr
11153024Sguidofreebsd22: include
11231183Speter	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
11331183Speter	-rm -f BSD/$(CPUDIR)/ioconf.h
11426119Sdarrenr	@if [ -n $(IPFILKERN) ] ; then \
11553024Sguido		if [ -f /sys/compile/$(IPFILKERN)/ioconf.h ] ; then \
11653024Sguido		ln -s /sys/compile/$(IPFILKERN)/ioconf.h BSD/$(CPUDIR); \
11737074Speter		else \
11831183Speter		ln -s /sys/$(IPFILKERN)/ioconf.h BSD/$(CPUDIR); \
11937074Speter		fi \
12026119Sdarrenr	elif [ ! -f `uname -v|sed -e 's@^.*:\(/[^: ]*\).*@\1@'`/ioconf.h ] ; then \
12126119Sdarrenr		echo -n "Can't find ioconf.h in "; \
12226119Sdarrenr		echo `uname -v|sed -e 's@^.*:\(/[^: ]*\).*@\1@'`; \
12324583Sdarrenr		exit 1;\
12426119Sdarrenr	else \
12526119Sdarrenr		ln -s `uname -v|sed -e 's@^.*:\(/[^: ]*\).*@\1@'`/ioconf.h BSD/$(CPU) ; \
12624583Sdarrenr	fi
12726119Sdarrenr	make freebsd
12822514Sdarrenr
12960841Sdarrenrfreebsd4: include
13063516Sdarrenr	if [ x$INET6 = x ] ; then \
13163516Sdarrenr		echo "#undef INET6" > opt_inet6.h; \
13263516Sdarrenr	else \
13363516Sdarrenr		echo "#define INET6" > opt_inet6.h; \
13463516Sdarrenr	fi
13560841Sdarrenr	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
13664588Sdarrenr	(cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlfk_ipl.c" "MLD=mlfk_ipl.c" "LKM=ipf.ko" "DLKM=-DKLD_MODULE -I/sys"; cd ..)
13760841Sdarrenr	(cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS1); cd ..)
13860841Sdarrenr
13953024Sguidofreebsd3 freebsd30: include
14053024Sguido	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
14153024Sguido	(cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS1) "ML=mlf_ipl.c" LKM= ; cd ..)
14253024Sguido	(cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS1); cd ..)
14353024Sguido
14426119Sdarrenrnetbsd: include
14531183Speter	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
14637074Speter	(cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c"; cd ..)
14737074Speter	(cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
14826119Sdarrenr
14931183Speteropenbsd openbsd21: include
15031183Speter	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
15137074Speter	(cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c"; cd ..)
15237074Speter	(cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
15331183Speter
15426119Sdarrenrfreebsd freebsd20 freebsd21: include
15531183Speter	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
15637074Speter	(cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlf_ipl.c"; cd ..)
15737074Speter	(cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
15826119Sdarrenr
15926119Sdarrenrbsd: include
16031183Speter	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
16137074Speter	(cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS); cd ..)
16237074Speter	(cd BSD/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(MFLAGS); cd ..)
16322514Sdarrenr
16426119Sdarrenrbsdi bsdos: include
16531183Speter	make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)"
16637074Speter	(cd BSD/$(CPUDIR); make build "CC=$(CC)" TOP=../.. $(MFLAGS) LKM= ; cd ..)
16737074Speter	(cd BSD/$(CPUDIR); make -f Makefile.ipsend "CC=$(CC)" TOP=../.. $(MFLAGS); cd ..)
16822514Sdarrenr
16931183Speteririx IRIX: include
17031183Speter	make setup "TARGOS=IRIX" "CPUDIR=$(CPUDIR)"
17192686Sdarrenr	-(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;)
17292686Sdarrenr	-(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)
17331183Speter
17431183Speterlinux: include
17531183Speter	make setup "TARGOS=Linux" "CPUDIR=$(CPUDIR)"
17631183Speter	./buildlinux
17731183Speter
17831183Speterlinuxrev:
17960841Sdarrenr	(cd Linux/$(CPUDIR); make build TOP=../.. $(DEST) $(MFLAGS) LKM= ; cd ..)
18060841Sdarrenr	(cd Linux/$(CPUDIR); make -f Makefile.ipsend TOP=../.. $(DEST) $(MFLAGS); cd ..)
18131183Speter
18231183Spetersetup:
18331183Speter	-if [ ! -d $(TARGOS)/$(CPUDIR) ] ; then mkdir $(TARGOS)/$(CPUDIR); fi
18431183Speter	-rm -f $(TARGOS)/$(CPUDIR)/Makefile $(TARGOS)/$(CPUDIR)/Makefile.ipsend
18531183Speter	-ln -s ../Makefile $(TARGOS)/$(CPUDIR)/Makefile
18667615Sdarrenr	-if [ ! -f $(TARGOS)/$(CPUDIR)/Makefile.std -a \
18767615Sdarrenr		-f $(TARGOS)/Makefile.std ] ; then \
18867615Sdarrenr	    ln -s ../Makefile.std $(TARGOS)/$(CPUDIR)/Makefile.std; \
18967615Sdarrenr	 fi
19067615Sdarrenr	-if [ ! -f $(TARGOS)/$(CPUDIR)/Makefile.ipsend.std -a \
19167615Sdarrenr		-f $(TARGOS)/Makefile.ipsend.std ] ; then \
19267615Sdarrenr	    ln -s ../Makefile.ipsend.std $(TARGOS)/$(CPUDIR)/Makefile.ipsend.std; \
19367615Sdarrenr	 fi
19431183Speter	-ln -s ../Makefile.ipsend $(TARGOS)/$(CPUDIR)/Makefile.ipsend
19531183Speter
19653024Sguidoclean: clean-include
19722514Sdarrenr	${RM} -f core *.o ipt fils ipf ipfstat ipftest ipmon if_ipl \
19864588Sdarrenr	vnode_if.h $(LKM) *~
19964588Sdarrenr	${RM} -rf sparcv7 sparcv9
20060841Sdarrenr	(cd SunOS4; make clean)
20160841Sdarrenr	(cd SunOS5; make clean)
20222514Sdarrenr	(cd BSD; make clean)
20331183Speter	(cd Linux; make clean)
20431183Speter	if [ "`uname -s`" = "IRIX" ]; then (cd IRIX; make clean); fi
20522514Sdarrenr	[ -d test ] && (cd test; make clean)
20622514Sdarrenr	(cd ipsend; make clean)
20722514Sdarrenr
20853024Sguidoclean-include:
20953024Sguido	sh -c 'cd netinet; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done'
21053024Sguido	${RM} -f netinet/done
21153024Sguido
21253024Sguidoclean-bsd: clean-include
21322514Sdarrenr	(cd BSD; make clean)
21422514Sdarrenr
21553024Sguidoclean-sunos4: clean-include
21622514Sdarrenr	(cd SunOS4; make clean)
21722514Sdarrenr
21853024Sguidoclean-sunos5: clean-include
21922514Sdarrenr	(cd SunOS5; make clean)
22022514Sdarrenr
22153024Sguidoclean-irix: clean-include
22231183Speter	(cd IRIX; make clean)
22331183Speter
22453024Sguidoclean-linux: clean-include
22531183Speter	(cd Linux; make clean)
22631183Speter
22722514Sdarrenrget:
22822514Sdarrenr	-@for i in ipf.c ipt.h solaris.c ipf.h kmem.c ipft_ef.c linux.h \
22922514Sdarrenr		ipft_pc.c fil.c ipft_sn.c mln_ipl.c fils.c ipft_td.c \
23022514Sdarrenr		mls_ipl.c ip_compat.h ipl.h opt.c ip_fil.c ipl_ldev.c \
23122514Sdarrenr		parse.c ip_fil.h ipmon.c pcap.h ip_sfil.c ipt.c snoop.h \
23222514Sdarrenr		ip_state.c ip_state.h ip_nat.c ip_nat.h ip_frag.c \
23322514Sdarrenr		ip_frag.h ip_sfil.c misc.c; do \
23422514Sdarrenr		if [ ! -f $$i ] ; then \
23522514Sdarrenr			echo "getting $$i"; \
23622514Sdarrenr			sccs get $$i; \
23722514Sdarrenr		fi \
23822514Sdarrenr	done
23922514Sdarrenr
240110917Sdarrenrsunos4 solaris1: null
24160841Sdarrenr	(cd SunOS4; make build TOP=.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
24260841Sdarrenr	(cd SunOS4; make -f Makefile.ipsend "CC=$(CC)" TOP=.. $(DEST) $(MFLAGS); cd ..)
24324583Sdarrenr
244110917Sdarrenrsunos5 solaris2: null
24560841Sdarrenr	(cd SunOS5/$(CPUDIR); make build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Dsparc -D__sparc__"; cd ..)
24660841Sdarrenr	(cd SunOS5/$(CPUDIR); make -f Makefile.ipsend TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
24724583Sdarrenr
248110917Sdarrenrsunos5x86 solaris2x86: null
24960841Sdarrenr	(cd SunOS5/$(CPUDIR); make build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" "CPU=-Di86pc -Di386 -D__i386__"; cd ..)
25060841Sdarrenr	(cd SunOS5/$(CPUDIR); make -f Makefile.ipsend TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..)
25124583Sdarrenr
25237074Speterinstall-linux:
25360841Sdarrenr	(cd Linux/$(CPUDIR); make install "TOP=../.." $(DEST) $(MFLAGS); cd ..)
25460841Sdarrenr	(cd Linux/$(CPUDIR); make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(DEST) $(MFLAGS); cd ..)
25537074Speter
25631183Speterinstall-bsd:
25731183Speter	(cd BSD/$(CPUDIR); make install "TOP=../.." $(MFLAGS); cd ..)
25831183Speter	(cd BSD/$(CPUDIR); make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..)
25926119Sdarrenr
26022514Sdarrenrinstall-sunos4: solaris
26192686Sdarrenr	(cd SunOS4; $(MAKE) "CPU=$(CPU)" "TOP=.." install)
26226119Sdarrenr
26322514Sdarrenrinstall-sunos5: solaris
26480486Sdarrenr	(cd SunOS5; $(MAKE) "CPUDIR=`uname -p`-`uname -r`" "CPU=$(CPU) TOP=.." install)
26522514Sdarrenr
26631183Speterinstall-irix: irix
26760841Sdarrenr	(cd IRIX; smake install "CPU=$(CPU) TOP=.." $(DEST) $(MFLAGS))
26831183Speter
26922514Sdarrenrrcsget:
27022514Sdarrenr	-@for i in ipf.c ipt.h solaris.c ipf.h kmem.c ipft_ef.c linux.h \
27122514Sdarrenr		ipft_pc.c fil.c ipft_sn.c mln_ipl.c fils.c ipft_td.c \
27222514Sdarrenr		mls_ipl.c ip_compat.h ipl.h opt.c ip_fil.c ipl_ldev.c \
27322514Sdarrenr		parse.c ip_fil.h ipmon.c pcap.h ip_sfil.c ipt.c snoop.h \
27422514Sdarrenr		ip_state.c ip_state.h ip_nat.c ip_nat.h ip_frag.c \
27522514Sdarrenr		ip_frag.h ip_sfil.c misc.c; do \
27622514Sdarrenr		if [ ! -f $$i ] ; then \
27722514Sdarrenr			echo "getting $$i"; \
27822514Sdarrenr			co $$i; \
27922514Sdarrenr		fi \
28022514Sdarrenr	done
28122514Sdarrenr
28222514Sdarrenrdo-cvs:
28322514Sdarrenr	find . -type d -name CVS -print | xargs /bin/rm -rf
28422514Sdarrenr	find . -type f -name .cvsignore -print | xargs /bin/rm -f
285110917Sdarrenr
286110917Sdarrenrnull:
287110917Sdarrenr	-@if [ "`$(MAKE) -v 2>&1 | sed -ne 's/GNU.*/GNU/p'`" = "GNU" ] ; then \
288110917Sdarrenr		echo 'Do not use GNU make (gmake) to compile IPFilter'; \
289110917Sdarrenr		exit 1; \
290110917Sdarrenr	fi
291110917Sdarrenr	-@echo make ok
292