Makefile revision 267654
1#
2# Copyright (C) 1993-1998 by Darren Reed.
3#
4# See the IPFILTER.LICENCE file for details on licencing.
5#
6TOP=../..
7BINDEST=/usr/sbin
8SBINDEST=/sbin
9MANDIR=/usr/share/man
10SEARCHDIRS!=echo $(BINDEST) $(SBINDEST) /bin /usr/bin /sbin /usr/sbin /usr/local/bin /usr/local/sbin | awk '{for(i=1;i<NF;i++){print $$i;}}' - | sort -u
11
12CC=gcc -Wall -Wuninitialized -Wstrict-prototypes -O -Wmissing-prototypes -Wpointer-arith -Wno-sign-compare -Wno-traditional -Werror
13#UFLAGS=-fprofile-arcs -ftest-coverage
14CFLAGS=-g -I$(TOP)
15#
16# For NetBSD/FreeBSD
17#
18DEVFS!=/usr/bin/lsvfs 2>&1 | sed -n 's/.*devfs.*/-DDEVFS/p'
19CPU!=uname -m
20INC=-I/usr/include -I/sys -I/sys/sys -I/sys/arch
21DEF=-D$(CPU) -D__$(CPU)__ -DINET -DKERNEL -D_KERNEL $(INC) $(DEVFS) -fno-builtin
22IPDEF=$(DEF) -DGATEWAY -DDIRECTED_BROADCAST
23VNODESHDIR=/sys/kern
24MLD=$(ML)
25ML=mln_ipl.c
26LKM=if_ipl.o
27LKMR=ipfrule.o
28DLKM=
29OBJ=.
30DEST=$(OBJ)
31MFLAGS="BINDEST=$(BINDEST)" "SBINDEST=$(SBINDEST)" "MANDIR=$(MANDIR)" \
32	'CFLAGS=$(CFLAGS) $(SOLARIS2)' "IPFLKM=$(IPFLKM)" \
33	"IPFLOG=$(IPFLOG)" "LOGFAC=$(LOGFAC)" "POLICY=$(POLICY)" \
34	"SOLARIS2=$(SOLARIS2)" "DEBUG=$(DEBUG)" "DCPU=$(CPU)" \
35	"CPUDIR=$(CPUDIR)" "LOOKUP=$(LOOKUP)" "SYNC=$(SYNC)"
36LIBS=-L. -lipf $(LIBBPF)
37#
38########## ########## ########## ########## ########## ########## ##########
39#
40CP=/bin/cp
41RM=/bin/rm
42CHMOD=/bin/chmod
43INSTALL=install
44#
45MODOBJS=ip_fil.o fil.o ml_ipl.o ip_nat.o ip_frag.o ip_state.o ip_proxy.o \
46	ip_auth.o ip_log.o ip_pool.o ip_htable.o ip_lookup.o ip_rules.o \
47	ip_scan.o ip_sync.o
48#	ip_trafcon.o
49DFLAGS=$(IPFLKM) $(IPFLOG) $(LOOKUP) $(SYNC) $(DEF) $(DLKM) $(IPFBPF)
50IPF=ipf.o ipfcomp.o ipf_y.o ipf_l.o bpf_filter_u.o
51IPT=ipftest.o fil_u.o ip_frag_u.o ip_state_u.o ip_nat_u.o \
52    ip_proxy_u.o ip_auth_u.o ip_htable_u.o ip_lookup_u.o ip_pool_u.o \
53    ip_scan_u.o ip_sync_u.o ip_rules_u.o ip_fil_u.o ip_log_u.o \
54    ippool_y.o ippool_l.o ipf_y.o ipf_l.o ipnat_y.o ipnat_l.o \
55    md5_u.o radix_u.o bpf_filter_u.o
56#   ip_syn_u.o
57#ip_trafcon_u.o
58TOOL=$(TOP)/tools
59IPNAT=ipnat.o ipnat_y.o ipnat_l.o
60IPMON=ipmon.o ipmon_y.o ipmon_l.o
61IPPOOL=ippool_y.o ippool_l.o kmem.o ippool.o
62IPTRAFCON=iptrafcon.o
63PROXYLIST=$(TOP)/ip_ftp_pxy.c $(TOP)/ip_ipsec_pxy.c $(TOP)/ip_irc_pxy.c \
64	  $(TOP)/ip_netbios_pxy.c $(TOP)/ip_raudio_pxy.c $(TOP)/ip_rcmd_pxy.c \
65	  $(TOP)/ip_rpcb_pxy.c $(TOP)/ip_pptp_pxy.c
66FILS=ipfstat.o
67LIBSRC=$(TOP)/lib
68RANLIB=ranlib
69AROPTS=cq
70HERE!=pwd
71CCARGS=-I. $(DEBUG) $(CFLAGS) $(UFLAGS)
72KCARGS=-I. $(DEBUG) $(CFLAGS)
73#
74# Extra is option kernel things we always want in user space.
75#
76EXTRA=$(ALLOPTS)
77
78include $(TOP)/lib/Makefile
79
80build all: machine $(OBJ)/libipf.a ipf ipfs ipfstat ipftest ipmon ipnat \
81	   ippool ipscan ipsyncm ipsyncs $(LKM) $(LKMR)
82	-sh -c 'for i in ipf ipftest ipmon ippool ipnat ipscan ipsyncm ipsyncs; do /bin/rm -f $(TOP)/$$i; ln -s `pwd`/$$i $(TOP); done'
83	-/bin/rm -f ../tools ./tools
84	-ln -s ../tools .
85	-ln -s ../tools ..
86
87bpf.h:
88	echo '#define DEV_BPF 1' > bpf.h
89
90$(TOP)/ip_compat.h: bpf.h
91
92machine: Makefile.kmod
93	if [ -f Makefile.kmod ] ; then \
94		make -f Makefile.kmod depend MKUPDATE=no; \
95	fi
96
97Makefile.kmod:
98	if [ -f /usr/share/mk/bsd.kmod.mk -a "`uname -s`" = "NetBSD" ] ; then \
99		rm -f Makefile.kmod; \
100		ln -s /usr/share/mk/bsd.kmod.mk Makefile.kmod; \
101	fi
102
103ipfstat: $(FILS) $(OBJ)/libipf.a
104	$(CC) $(CCARGS) $(STATETOP_CFLAGS) $(STATETOP_INC) $(FILS) \
105	-o $@ $(LIBS) $(STATETOP_LIB) -lkvm
106
107ipf: $(IPF) $(OBJ)/libipf.a
108	$(CC) $(CCARGS) $(IPF) -o $@ $(LIBS) -ll $(LIBBPF)
109
110ipftest: $(IPT) $(OBJ)/libipf.a
111	$(CC) $(CCARGS) $(IPT) -o $@ $(LIBS) -ll $(LIBBPF)
112
113ipnat: $(IPNAT) $(OBJ)/libipf.a
114	$(CC) $(CCARGS) $(IPNAT) -o $@ $(LIBS) -lkvm -ll
115
116ipfs: ipfs.o
117	$(CC) $(CCARGS) ipfs.o -o $@
118
119ipsyncm: ipsyncm.o $(OBJ)/libipf.a
120	$(CC) $(CCARGS) ipsyncm.o -o $@ $(LIBS)
121
122ipsyncs: ipsyncs.o $(OBJ)/libipf.a
123	$(CC) $(CCARGS) ipsyncs.o -o $@ $(LIBS)
124
125ipsyncm.o: $(TOOL)/ipsyncm.c $(TOP)/ip_sync.h
126	$(CC) $(CCARGS) -c $(TOOL)/ipsyncm.c -o $@
127
128ipsyncs.o: $(TOOL)/ipsyncs.c $(TOP)/ip_sync.h
129	$(CC) $(CCARGS) -c $(TOOL)/ipsyncs.c -o $@
130
131tests:
132	(cd test; make )
133
134ipfstat.o: $(TOOL)/ipfstat.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_frag.h \
135	$(TOP)/ip_compat.h $(TOP)/ip_state.h $(TOP)/ip_nat.h $(TOP)/opts.h
136	$(CC) $(CCARGS) $(STATETOP_CFLAGS) $(STATETOP_INC) \
137	-c $(TOOL)/ipfstat.c -o $@
138
139ipfs.o: $(TOOL)/ipfs.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_state.h \
140	$(TOP)/ip_nat.h $(TOP)/opts.h
141	$(CC) $(CCARGS) -c $(TOOL)/ipfs.c -o $@
142
143fil_u.o: $(TOP)/fil.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_compat.h \
144	    $(TOP)/opts.h $(TOP)/ip_rules.h
145	$(CC) $(CCARGS) $(EXTRA) $(IPFBPF) -c $(TOP)/fil.c -o $@
146
147fil.o: $(TOP)/fil.c $(TOP)/ip_fil.h $(TOP)/ip_compat.h $(TOP)/ipl.h \
148	    $(TOP)/ip_rules.h
149	$(CC) $(KCARGS) $(POLICY) $(DFLAGS) $(IPFBPF) $(COMPIPF) \
150	    -c $(TOP)/fil.c -o $@
151
152ipf.o: $(TOOL)/ipf.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/opts.h
153	$(CC) $(CCARGS) -c $(TOOL)/ipf.c -o $@
154
155ipfcomp.o: $(TOOL)/ipfcomp.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/opts.h
156	$(CC) $(CCARGS) -c $(TOOL)/ipfcomp.c -o $@
157
158ipftest.o: $(TOOL)/ipftest.c $(TOP)/ip_fil.h $(TOP)/ipt.h $(TOP)/ipf.h \
159	    $(TOP)/opts.h
160	$(CC) $(CCARGS) -c $(TOOL)/ipftest.c -o $@
161
162ipnat.o: $(TOOL)/ipnat.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_nat.h \
163	    $(TOP)/opts.h
164	$(CC) $(CCARGS) -c $(TOOL)/ipnat.c -o $@
165
166ipnat_y.o: ipnat_y.c ipnat_y.h ipnat_l.h
167	$(CC) $(CCARGS) -c ipnat_y.c -o $@
168
169ipnat_l.o: ipnat_l.c ipnat_y.h
170	$(CC) $(CCARGS) -I. -c ipnat_l.c -o $@
171
172ipnat_y.c: $(TOOL)/ipnat_y.y
173	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
174
175ipnat_y.h: ipnat_y.c
176
177ipnat_l.c: $(TOOL)/lexer.c $(TOP)/ip_nat.h
178	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
179
180ipnat_l.h: $(TOOL)/lexer.h
181	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
182
183ip_nat_u.o: $(TOP)/ip_nat.c $(TOP)/ip_nat.h $(TOP)/ip_compat.h $(TOP)/ip_fil.h
184	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_nat.c -o $@
185
186ip_proxy_u.o: $(TOP)/ip_proxy.c $(TOP)/ip_proxy.h $(TOP)/ip_compat.h \
187	$(TOP)/ip_fil.h $(PROXYLIST) $(TOP)/ip_nat.h
188	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_proxy.c -o $@
189
190ip_frag_u.o: $(TOP)/ip_frag.c $(TOP)/ip_frag.h $(TOP)/ip_compat.h \
191	$(TOP)/ip_fil.h
192	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_frag.c -o $@
193
194ip_state_u.o: $(TOP)/ip_state.c $(TOP)/ip_state.h $(TOP)/ip_compat.h \
195	$(TOP)/ip_fil.h $(TOP)/ip_nat.h
196	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_state.c -o $@
197
198ip_auth_u.o: $(TOP)/ip_auth.c $(TOP)/ip_auth.h $(TOP)/ip_compat.h \
199	$(TOP)/ip_fil.h
200	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_auth.c -o $@
201
202ip_fil_u.o: $(TOP)/ip_fil.c $(TOP)/ip_fil.h $(TOP)/ip_compat.h
203	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_fil.c -o $@
204
205ip_rules_u.o: ip_rules.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
206	$(TOP)/ip_rules.h
207	$(CC) $(CCARGS) $(EXTRA) -c ip_rules.c -o $@
208
209ip_scan_u.o: $(TOP)/ip_scan.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
210	$(TOP)/ip_scan.h
211	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_scan.c -o $@
212
213ip_sync_u.o: $(TOP)/ip_sync.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
214	$(TOP)/ip_sync.h
215	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_sync.c -o $@
216
217ip_pool_u.o: $(TOP)/ip_pool.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
218	$(TOP)/ip_pool.h
219	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_pool.c -o $@
220
221ip_htable_u.o: $(TOP)/ip_htable.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
222	$(TOP)/ip_htable.h
223	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_htable.c -o $@
224
225ip_lookup_u.o: $(TOP)/ip_lookup.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
226	$(TOP)/ip_lookup.h $(TOP)/ip_pool.h $(TOP)/ip_htable.h
227	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_lookup.c -o $@
228
229ip_trafcon_u.o: $(TOP)/ip_trafcon.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
230	$(TOP)/ip_trafcon.h
231	$(CC) $(CCARGS) -c $(TOP)/ip_trafcon.c -o $@
232
233ip_log_u.o: $(TOP)/ip_log.c $(TOP)/ip_fil.h $(TOP)/ip_compat.h
234	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_log.c -o $@
235
236md5_u.o: $(TOP)/md5.c $(TOP)/md5.h
237	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/md5.c -o $@
238
239radix_u.o: $(TOP)/md5.c $(TOP)/radix_ipf.h
240	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/radix.c -o $@
241
242bpf_filter_u.o: $(TOP)/bpf_filter.c $(TOP)/pcap-ipf.h
243	$(CC) $(CCARGS) $(EXTRA) -c $(TOP)/bpf_filter.c -o $@
244
245if_ipl.o: $(MODOBJS) 
246	ld -r $(MODOBJS) -o $(LKM)
247	${RM} -f if_ipl
248
249ipfrule.ko.5: ip_rulesx.o $(MLR)
250	ld -warn-common -r -d -o $(.TARGET:S/.ko/.kld/) ip_rulesx.o $(MLR)
251	ld -Bshareable -d -warn-common -o $(LKMR:S/.5$//) $(.TARGET:S/.ko/.kld/) 
252ipfrule.ko: ip_rulesx.o $(MLR)
253	gensetdefs ip_rulesx.o $(MLR)
254	$(CC) $(KCARGS) -c setdef0.c
255	$(CC) $(KCARGS) -c setdef1.c
256	ld -Bshareable -o $@ setdef0.o ip_rulesx.o $(MLR) setdef1.o
257
258ipf.ko.5 ipl.ko.5: $(MODOBJS)
259	ld -warn-common -r -d -o $(.TARGET:S/.ko/.kld/) $(MODOBJS)
260	ld -Bshareable -d -warn-common -o $(LKM:S/.5$//) $(.TARGET:S/.ko/.kld/)
261
262ipf.ko ipl.ko: $(MODOBJS) 
263	gensetdefs $(MODOBJS)
264	$(CC) $(KCARGS) -c setdef0.c
265	$(CC) $(KCARGS) -c setdef1.c
266	ld -Bshareable -o $@ setdef0.o $(MODOBJS) setdef1.o
267
268ip_nat.o: $(TOP)/ip_nat.c $(TOP)/ip_nat.h $(TOP)/ip_compat.h $(TOP)/ip_fil.h
269	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_nat.c -o $@
270
271ip_frag.o: $(TOP)/ip_frag.c $(TOP)/ip_frag.h $(TOP)/ip_compat.h $(TOP)/ip_fil.h
272	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_frag.c -o $@
273
274ip_state.o: $(TOP)/ip_state.c $(TOP)/ip_state.h $(TOP)/ip_compat.h \
275	$(TOP)/ip_fil.h $(TOP)/ip_nat.h
276	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_state.c -o $@
277
278ip_proxy.o: $(TOP)/ip_proxy.c $(TOP)/ip_proxy.h $(TOP)/ip_compat.h \
279	$(TOP)/ip_fil.h $(PROXYLIST) $(TOP)/ip_nat.h
280	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_proxy.c -o $@
281
282ip_auth.o: $(TOP)/ip_auth.c $(TOP)/ip_auth.h $(TOP)/ip_compat.h \
283	$(TOP)/ip_fil.h
284	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_auth.c -o $@
285
286ip_fil.c:
287	/bin/rm -f ip_fil.c
288	ln -s $(TOP)/ip_fil_`uname -s|tr A-Z a-z`.c ip_fil.c
289
290ip_fil.o: ip_fil.c $(TOP)/ip_fil.h $(TOP)/ip_compat.h $(TOP)/ip_nat.h
291	$(CC) $(KCARGS) $(DFLAGS) $(COMPIPF) -c ip_fil.c -o $@
292
293ip_log.o: $(TOP)/ip_log.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h
294	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_log.c -o $@
295
296ip_scan.o: $(TOP)/ip_scan.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h $(TOP)/ip_scan.h
297	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_scan.c -o $@
298
299ip_sync.o: $(TOP)/ip_sync.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h $(TOP)/ip_sync.h
300	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_sync.c -o $@
301
302ip_pool.o: $(TOP)/ip_pool.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
303	$(TOP)/ip_lookup.h $(TOP)/ip_pool.h
304	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_pool.c -o $@
305
306ip_htable.o: $(TOP)/ip_htable.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
307	$(TOP)/ip_lookup.h $(TOP)/ip_htable.h
308	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_htable.c -o $@
309
310ip_lookup.o: $(TOP)/ip_lookup.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
311	$(TOP)/ip_pool.h $(TOP)/ip_htable.h $(TOP)/ip_lookup.h
312	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_lookup.c -o $@
313
314ip_trafcon.o: $(TOP)/ip_trafcon.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \
315	      $(TOP)/ip_trafcon.h
316	$(CC) $(KCARGS) $(DFLAGS) -c $(TOP)/ip_trafcon.c -o $@
317
318vnode_if.h: $(VNODESHDIR)/vnode_if.src
319	mkdir -p ../sys
320	if [ -f $(VNODESHDIR)/vnode_if.sh ] ; then \
321		sh $(VNODESHDIR)/vnode_if.sh $(VNODESHDIR)/vnode_if.src; \
322	fi
323	if [ -f $(VNODESHDIR)/vnode_if.pl ] ; then \
324		perl $(VNODESHDIR)/vnode_if.pl $(VNODESHDIR)/vnode_if.src; \
325	fi
326	if [ -f ../sys/vnode_if.h ] ; then mv ../sys/vnode_if.h .; fi
327	rmdir ../sys
328
329ml_ipl.o: vnode_if.h $(TOP)/$(MLD) $(TOP)/ipl.h
330	-/bin/rm -f vnode_if.c
331	$(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/$(ML) -o $@
332
333ip_rules.o: ip_rules.c $(TOP)/ip_rules.h
334	$(CC) -I. $(CFLAGS) $(DFLAGS) $(COMPIPF) -c ip_rules.c -o $@
335
336ip_rules.c: $(TOP)/rules/ip_rules $(TOP)/tools/ipfcomp.c ipf
337	./ipf -cc -nf $(TOP)/rules/ip_rules
338
339$(TOP)/ip_rules.h: ip_rules.c
340	if [ ! -f $(TOP)/ip_rules.h ] ; then \
341		/bin/mv -f ip_rules.h $(TOP); \
342	else \
343		touch $(TOP)/ip_rules.h; \
344	fi
345
346ip_rulesx.o: ip_rules.c $(TOP)/ip_rules.h
347	$(CC) -I. $(CFLAGS) $(DFLAGS) -DIPFILTER_COMPILED -c ip_rules.c -o $@
348
349mlf_rule.o: $(TOP)/mlf_rule.c $(TOP)/ip_rules.h
350	$(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mlf_rule.c -o $@
351
352mln_rule.o: $(TOP)/mln_rule.c $(TOP)/ip_rules.h
353	$(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mln_rule.c -o $@
354
355mlo_rule.o: $(TOP)/mlo_rule.c $(TOP)/ip_rules.h
356	$(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mlo_rule.c -o $@
357
358mlfk_rule.o: $(TOP)/mlfk_rule.c $(TOP)/ip_rules.h
359	$(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mlfk_rule.c -o $@
360
361ipf_y.o: ipf_y.c ipf_y.h $(TOP)/ipf.h ipf_l.h $(TOP)/opts.h
362	$(CC) $(CCARGS) $(IPFBPF) -c ipf_y.c -o $@
363
364ipf_l.o: ipf_l.c ipf_y.h $(TOP)/ipf.h ipf_l.h $(TOP)/opts.h
365	$(CC) $(CCARGS) -I. -c ipf_l.c -o $@
366
367ipf_y.c: $(TOOL)/ipf_y.y $(TOP)/ipf.h $(TOP)/opts.h
368	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
369
370ipf_y.h: ipf_y.c
371
372ipf_l.c: $(TOOL)/lexer.c $(TOP)/ipf.h $(TOP)/opts.h
373	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
374
375ipf_l.h: $(TOOL)/lexer.h
376	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
377
378ipmon: $(IPMON) $(OBJ)/libipf.a
379	$(CC) $(CCARGS) $(IPMON) -o $@ $(LIBS) -ll
380
381ipmon.o: $(TOOL)/ipmon.c $(TOP)/ipmon.h
382	$(CC) $(CCARGS) $(LOGFAC) -c $(TOOL)/ipmon.c -o $@
383
384ipmon_y.o: ipmon_y.c ipmon_y.h $(TOP)/ipmon.h ipmon_l.h
385	$(CC) $(CCARGS) -c ipmon_y.c -o $@
386
387ipmon_l.o: ipmon_l.c ipmon_y.h $(TOP)/ipmon.h
388	$(CC) $(CCARGS) -I. -c ipmon_l.c -o $@
389
390ipmon_y.c: $(TOOL)/ipmon_y.y $(TOP)/ipmon.h
391	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
392
393ipmon_y.h: ipmon_y.c
394
395ipmon_l.c: $(TOOL)/lexer.c $(TOP)/ipmon.h
396	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
397
398ipmon_l.h: $(TOOL)/lexer.h
399	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
400
401ipscan: ipscan_y.o ipscan_l.o
402	$(CC) $(DEBUG) ipscan_y.o ipscan_l.o -o $@ -ll $(LIBS) -lkvm
403
404ipscan_y.o: ipscan_y.c ipscan_y.h $(TOP)/ip_scan.h ipscan_l.h
405	$(CC) $(CCARGS) -c ipscan_y.c -o $@
406
407ipscan_l.o: ipscan_l.c ipscan_y.h $(TOP)/ip_scan.h
408	$(CC) $(CCARGS) -I. -c ipscan_l.c -o $@
409
410ipscan_y.c: $(TOOL)/ipscan_y.y $(TOP)/ip_scan.h
411	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
412
413ipscan_y.h: ipscan_y.c
414
415ipscan_l.c ipscan_l.h: $(TOOL)/lexer.c $(TOP)/ip_scan.h
416	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
417
418ippool: $(IPPOOL) $(OBJ)/libipf.a
419	$(CC) $(DEBUG) -I. $(CFLAGS) $(IPPOOL) -o $@ -ll -lkvm -L. -lipf
420
421ippool.o: $(TOOL)/ippool.c $(TOP)/ip_pool.h
422	$(CC) $(CCARGS) -c $(TOOL)/ippool.c -o $@
423
424ippool_y.o: ippool_y.c ippool_y.h $(TOP)/ip_pool.h ippool_l.h
425	$(CC) $(CCARGS) -c ippool_y.c -o $@
426
427ippool_l.o: ippool_l.c ippool_y.h $(TOP)/ip_pool.h
428	$(CC) $(CCARGS) -I. -c ippool_l.c -o $@
429
430ippool_y.c: $(TOOL)/ippool_y.y $(TOP)/ip_pool.h ippool_l.h
431	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
432
433ippool_y.h: ippool_y.c
434
435ippool_l.c: $(TOOL)/lexer.c $(TOP)/ip_pool.h
436	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
437
438ippool_l.h: $(TOOL)/lexer.h
439	(cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
440
441iptrafcon.o: $(TOP)/iptrafcon.c
442	$(CC) $(CCARGS) -c $< -o $@
443
444iptrafcon: $(IPTRAFCON) $(OBJ)/libipf.a
445	$(CC) $(CCARGS) $(IPTRAFCON) -o $@ $(LIBS)
446
447.y.c:
448
449.l.c:
450
451clean:
452	${RM} -f ../ipf ../ipnat ../ipmon ../ippool ../ipftest 
453	${RM} -f ../ipscan ../ipsyncm ../ipsyncs
454	${RM} -f *.core *.o *.a ipt ipfstat ipf ipfstat ipftest ipmon
455	${RM} -f if_ipl ipnat ipfrule.ko* ipf.kld* ipfrule.kld*
456	${RM} -f vnode_if.h $(LKM) ioconf.h *.ko setdef1.c setdef0.c setdefs.h
457	${RM} -f ip_fil.c ipf_l.c ipf_y.c ipf_y.h ipf_l.h
458	${RM} -f ipscan ipscan_y.c ipscan_y.h ipscan_l.c ipscan_l.h
459	${RM} -f ippool ippool_y.c ippool_y.h ippool_l.c ippool_l.h
460	${RM} -f ipnat_y.c ipnat_y.h ipnat_l.c ipnat_l.h
461	${RM} -f ipmon_y.c ipmon_y.h ipmon_l.c ipmon_l.h
462	${RM} -f ipsyncm ipsyncs ipfs ip_rules.c ip_rules.h bpf.h
463	${RM} -f *.da *.gcov *.bb *.bbg tools
464
465	${MAKE} -f Makefile.ipsend ${MFLAGS} clean
466	if [ -f Makefile.kmod ] ; then \
467		${MAKE} -f Makefile.kmod ${MFLAGS} clean; \
468	fi
469	-(for i in *; do \
470		if [ -d $${i} -a -f $${i}/Makefile ] ; then \
471			cd $${i}; (make TOP=../.. clean); cd ..; \
472			/bin/rm -f $${i}/Makefile $${i}/Makefile.ipsend; \
473			/bin/rm -f $${i}/Makefile.kmod; \
474			rmdir $${i}; \
475		fi \
476	done)
477
478install:
479	for i in ip_compat.h ip_fil.h ip_nat.h ip_state.h ip_proxy.h \
480		ip_frag.h ip_auth.h; do \
481		/bin/cp $(TOP)/$$i /usr/include/netinet/; \
482		$(CHMOD) 444 /usr/include/netinet/$$i; \
483	done
484	-if [ -d /lkm -a -f if_ipl.o ] ; then \
485		cp if_ipl.o /lkm; \
486	fi
487	-if [ -d /modules -a -f ipf.ko ] ; then \
488		if [ -f /modules/ipl.ko ] ; then \
489			cp ipf.ko /modules/ipl.ko; \
490		else \
491			cp ipf.ko /modules; \
492		fi \
493	fi
494	-if [ -d /modules -a -f ipfrule.ko ] ; then \
495		cp ipfrule.ko /modules; \
496	fi
497	-if [ -d /boot/kernel -a -f ipf.ko ] ; then \
498		if [ -f /boot/kernel/ipl.ko ] ; then \
499			cp ipf.ko /boot/kernel/ipl.ko; \
500		else \
501			cp ipf.ko /boot/kernel; \
502		fi \
503	fi
504	-if [ -d /boot/kernel -a -f ipfrule.ko ] ; then \
505		cp ipfrule.ko /boot/kernel; \
506	fi
507	-if [ -d /usr/lkm -a -f if_ipl.o ] ; then \
508		cp if_ipl.o /usr/lkm; \
509	fi
510	-$(INSTALL) -cs -g wheel -m 755 -o root ipscan $(SBINDEST)
511	(cd $(TOP)/man; make INSTALL=$(INSTALL) MANDIR=$(MANDIR) install; cd $(TOP))
512	@for i in ipf:$(SBINDEST) ipfs:$(SBINDEST) ipnat:$(SBINDEST) \
513	    ippool:$(BINDEST) ipsyncm:$(BINDEST) ipsyncs:$(BINDEST) \
514	    ipfstat:$(SBINDEST) ipftest:$(SBINDEST) ipmon:$(BINDEST); do \
515		def="`expr $$i : '[^:]*:\(.*\)'`"; \
516		p="`expr $$i : '\([^:]*\):.*'`"; \
517		dd=; \
518		for d in $(SEARCHDIRS); do \
519			if [ -f $$d/$$p ] ; then \
520				echo "$(INSTALL) -cs -g wheel -m 755 -o root $$p $$d"; \
521				$(INSTALL) -cs -g wheel -m 755 -o root $$p $$d; \
522				dd=XXX; \
523			fi; \
524		done; \
525		if [ -z "$$dd" ] ; then \
526			echo $(INSTALL) -cs -g wheel -m 755 -o root $$p $$def; \
527			$(INSTALL) -cs -g wheel -m 755 -o root $$p $$def; \
528		fi \
529	done
530	if [ -d /etc/rc.d ] ; then \
531		$(INSTALL) -c -g wheel -m 755 -o root ../ipfadm-rcd $(SBINDEST)/ipfadm; \
532	fi
533	(cd $(TOP)/man; make INSTALL=$(INSTALL) MANDIR=$(MANDIR) install; cd $(TOP))
534
535coverage:
536	ksh -c 'for i in *.da; do j=$${i%%.da}.c; gcov $$j 2>&1 | egrep -v "y.tab.c|Could|Creating|_l\.c|\.h"; done'  | sort -k 1n -k 3n > report
537	sort -k 1n -k 3n report | perl -e 'while(<>) { next if (/^0.00/); s/\%//g; @F=split;$$lc+=$$F[2];$$t += ($$F[0]/100)*$$F[2];}  printf "%d of %d = %d%%\n", $$t, $$lc,($$t/$$lc)*100;' >> report
538
539clean-coverage:
540	/bin/rm -f *.gcov *.da
541