]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/ipfilter/BSD/Makefile
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / ipfilter / BSD / Makefile
1 #
2 # Copyright (C) 1993-1998 by Darren Reed.
3 #
4 # See the IPFILTER.LICENCE file for details on licencing.
5 #
6 TOP=../..
7 BINDEST=/usr/sbin
8 SBINDEST=/sbin
9 MANDIR=/usr/share/man
10 SEARCHDIRS!=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
12 CC=gcc -Wall -Wuninitialized -Wstrict-prototypes -O -Wmissing-prototypes -Wpointer-arith -Wno-sign-compare -Wno-traditional -Werror
13 #UFLAGS=-fprofile-arcs -ftest-coverage
14 CFLAGS=-g -I$(TOP)
15 #
16 # For NetBSD/FreeBSD
17 #
18 DEVFS!=/usr/bin/lsvfs 2>&1 | sed -n 's/.*devfs.*/-DDEVFS/p'
19 CPU!=uname -m
20 INC=-I/usr/include -I/sys -I/sys/sys -I/sys/arch
21 DEF=-D$(CPU) -D__$(CPU)__ -DINET -DKERNEL -D_KERNEL $(INC) $(DEVFS) -fno-builtin
22 IPDEF=$(DEF) -DGATEWAY -DDIRECTED_BROADCAST
23 VNODESHDIR=/sys/kern
24 MLD=$(ML)
25 ML=mln_ipl.c
26 LKM=if_ipl.o
27 LKMR=ipfrule.o
28 DLKM=
29 OBJ=.
30 DEST=$(OBJ)
31 MFLAGS="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)"
36 LIBS=-L. -lipf $(LIBBPF)
37 #
38 ########## ########## ########## ########## ########## ########## ##########
39 #
40 CP=/bin/cp
41 RM=/bin/rm
42 CHMOD=/bin/chmod
43 INSTALL=install
44 #
45 MODOBJS=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
49 DFLAGS=$(IPFLKM) $(IPFLOG) $(LOOKUP) $(SYNC) $(DEF) $(DLKM) $(IPFBPF)
50 IPF=ipf.o ipfcomp.o ipf_y.o ipf_l.o bpf_filter_u.o
51 IPT=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
58 TOOL=$(TOP)/tools
59 IPNAT=ipnat.o ipnat_y.o ipnat_l.o
60 IPMON=ipmon.o ipmon_y.o ipmon_l.o
61 IPPOOL=ippool_y.o ippool_l.o kmem.o ippool.o
62 IPTRAFCON=iptrafcon.o
63 PROXYLIST=$(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
66 FILS=ipfstat.o
67 LIBSRC=$(TOP)/lib
68 RANLIB=ranlib
69 AROPTS=cq
70 HERE!=pwd
71 CCARGS=-I. $(DEBUG) $(CFLAGS) $(UFLAGS)
72 KCARGS=-I. $(DEBUG) $(CFLAGS)
73 #
74 # Extra is option kernel things we always want in user space.
75 #
76 EXTRA=$(ALLOPTS)
77
78 include $(TOP)/lib/Makefile
79
80 build 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
87 bpf.h:
88         echo '#define DEV_BPF 1' > bpf.h
89
90 $(TOP)/ip_compat.h: bpf.h
91
92 machine: Makefile.kmod
93         if [ -f Makefile.kmod ] ; then \
94                 make -f Makefile.kmod depend MKUPDATE=no; \
95         fi
96
97 Makefile.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
103 ipfstat: $(FILS) $(OBJ)/libipf.a
104         $(CC) $(CCARGS) $(STATETOP_CFLAGS) $(STATETOP_INC) $(FILS) \
105         -o $@ $(LIBS) $(STATETOP_LIB) -lkvm
106
107 ipf: $(IPF) $(OBJ)/libipf.a
108         $(CC) $(CCARGS) $(IPF) -o $@ $(LIBS) -ll $(LIBBPF)
109
110 ipftest: $(IPT) $(OBJ)/libipf.a
111         $(CC) $(CCARGS) $(IPT) -o $@ $(LIBS) -ll $(LIBBPF)
112
113 ipnat: $(IPNAT) $(OBJ)/libipf.a
114         $(CC) $(CCARGS) $(IPNAT) -o $@ $(LIBS) -lkvm -ll
115
116 ipfs: ipfs.o
117         $(CC) $(CCARGS) ipfs.o -o $@
118
119 ipsyncm: ipsyncm.o $(OBJ)/libipf.a
120         $(CC) $(CCARGS) ipsyncm.o -o $@ $(LIBS)
121
122 ipsyncs: ipsyncs.o $(OBJ)/libipf.a
123         $(CC) $(CCARGS) ipsyncs.o -o $@ $(LIBS)
124
125 ipsyncm.o: $(TOOL)/ipsyncm.c $(TOP)/ip_sync.h
126         $(CC) $(CCARGS) -c $(TOOL)/ipsyncm.c -o $@
127
128 ipsyncs.o: $(TOOL)/ipsyncs.c $(TOP)/ip_sync.h
129         $(CC) $(CCARGS) -c $(TOOL)/ipsyncs.c -o $@
130
131 tests:
132         (cd test; make )
133
134 ipfstat.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
139 ipfs.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
143 fil_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
147 fil.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
152 ipf.o: $(TOOL)/ipf.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/opts.h
153         $(CC) $(CCARGS) -c $(TOOL)/ipf.c -o $@
154
155 ipfcomp.o: $(TOOL)/ipfcomp.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/opts.h
156         $(CC) $(CCARGS) -c $(TOOL)/ipfcomp.c -o $@
157
158 ipftest.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
162 ipnat.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
166 ipnat_y.o: ipnat_y.c ipnat_y.h ipnat_l.h
167         $(CC) $(CCARGS) -c ipnat_y.c -o $@
168
169 ipnat_l.o: ipnat_l.c ipnat_y.h
170         $(CC) $(CCARGS) -I. -c ipnat_l.c -o $@
171
172 ipnat_y.c: $(TOOL)/ipnat_y.y
173         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
174
175 ipnat_y.h: ipnat_y.c
176
177 ipnat_l.c: $(TOOL)/lexer.c $(TOP)/ip_nat.h
178         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
179
180 ipnat_l.h: $(TOOL)/lexer.h
181         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
182
183 ip_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
186 ip_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
190 ip_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
194 ip_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
198 ip_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
202 ip_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
205 ip_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
209 ip_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
213 ip_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
217 ip_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
221 ip_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
225 ip_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
229 ip_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
233 ip_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
236 md5_u.o: $(TOP)/md5.c $(TOP)/md5.h
237         $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/md5.c -o $@
238
239 radix_u.o: $(TOP)/md5.c $(TOP)/radix_ipf.h
240         $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/radix.c -o $@
241
242 bpf_filter_u.o: $(TOP)/bpf_filter.c $(TOP)/pcap-ipf.h
243         $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/bpf_filter.c -o $@
244
245 if_ipl.o: $(MODOBJS) 
246         ld -r $(MODOBJS) -o $(LKM)
247         ${RM} -f if_ipl
248
249 ipfrule.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/) 
252 ipfrule.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
258 ipf.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
262 ipf.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
268 ip_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
271 ip_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
274 ip_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
278 ip_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
282 ip_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
286 ip_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
290 ip_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
293 ip_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
296 ip_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
299 ip_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
302 ip_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
306 ip_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
310 ip_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
314 ip_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
318 vnode_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
329 ml_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
333 ip_rules.o: ip_rules.c $(TOP)/ip_rules.h
334         $(CC) -I. $(CFLAGS) $(DFLAGS) $(COMPIPF) -c ip_rules.c -o $@
335
336 ip_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
346 ip_rulesx.o: ip_rules.c $(TOP)/ip_rules.h
347         $(CC) -I. $(CFLAGS) $(DFLAGS) -DIPFILTER_COMPILED -c ip_rules.c -o $@
348
349 mlf_rule.o: $(TOP)/mlf_rule.c $(TOP)/ip_rules.h
350         $(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mlf_rule.c -o $@
351
352 mln_rule.o: $(TOP)/mln_rule.c $(TOP)/ip_rules.h
353         $(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mln_rule.c -o $@
354
355 mlo_rule.o: $(TOP)/mlo_rule.c $(TOP)/ip_rules.h
356         $(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mlo_rule.c -o $@
357
358 mlfk_rule.o: $(TOP)/mlfk_rule.c $(TOP)/ip_rules.h
359         $(CC) -I. $(CFLAGS) $(DFLAGS) -c $(TOP)/mlfk_rule.c -o $@
360
361 ipf_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
364 ipf_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
367 ipf_y.c: $(TOOL)/ipf_y.y $(TOP)/ipf.h $(TOP)/opts.h
368         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
369
370 ipf_y.h: ipf_y.c
371
372 ipf_l.c: $(TOOL)/lexer.c $(TOP)/ipf.h $(TOP)/opts.h
373         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
374
375 ipf_l.h: $(TOOL)/lexer.h
376         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
377
378 ipmon: $(IPMON) $(OBJ)/libipf.a
379         $(CC) $(CCARGS) $(IPMON) -o $@ $(LIBS) -ll
380
381 ipmon.o: $(TOOL)/ipmon.c $(TOP)/ipmon.h
382         $(CC) $(CCARGS) $(LOGFAC) -c $(TOOL)/ipmon.c -o $@
383
384 ipmon_y.o: ipmon_y.c ipmon_y.h $(TOP)/ipmon.h ipmon_l.h
385         $(CC) $(CCARGS) -c ipmon_y.c -o $@
386
387 ipmon_l.o: ipmon_l.c ipmon_y.h $(TOP)/ipmon.h
388         $(CC) $(CCARGS) -I. -c ipmon_l.c -o $@
389
390 ipmon_y.c: $(TOOL)/ipmon_y.y $(TOP)/ipmon.h
391         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
392
393 ipmon_y.h: ipmon_y.c
394
395 ipmon_l.c: $(TOOL)/lexer.c $(TOP)/ipmon.h
396         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
397
398 ipmon_l.h: $(TOOL)/lexer.h
399         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
400
401 ipscan: ipscan_y.o ipscan_l.o
402         $(CC) $(DEBUG) ipscan_y.o ipscan_l.o -o $@ -ll $(LIBS) -lkvm
403
404 ipscan_y.o: ipscan_y.c ipscan_y.h $(TOP)/ip_scan.h ipscan_l.h
405         $(CC) $(CCARGS) -c ipscan_y.c -o $@
406
407 ipscan_l.o: ipscan_l.c ipscan_y.h $(TOP)/ip_scan.h
408         $(CC) $(CCARGS) -I. -c ipscan_l.c -o $@
409
410 ipscan_y.c: $(TOOL)/ipscan_y.y $(TOP)/ip_scan.h
411         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
412
413 ipscan_y.h: ipscan_y.c
414
415 ipscan_l.c ipscan_l.h: $(TOOL)/lexer.c $(TOP)/ip_scan.h
416         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
417
418 ippool: $(IPPOOL) $(OBJ)/libipf.a
419         $(CC) $(DEBUG) -I. $(CFLAGS) $(IPPOOL) -o $@ -ll -lkvm -L. -lipf
420
421 ippool.o: $(TOOL)/ippool.c $(TOP)/ip_pool.h
422         $(CC) $(CCARGS) -c $(TOOL)/ippool.c -o $@
423
424 ippool_y.o: ippool_y.c ippool_y.h $(TOP)/ip_pool.h ippool_l.h
425         $(CC) $(CCARGS) -c ippool_y.c -o $@
426
427 ippool_l.o: ippool_l.c ippool_y.h $(TOP)/ip_pool.h
428         $(CC) $(CCARGS) -I. -c ippool_l.c -o $@
429
430 ippool_y.c: $(TOOL)/ippool_y.y $(TOP)/ip_pool.h ippool_l.h
431         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
432
433 ippool_y.h: ippool_y.c
434
435 ippool_l.c: $(TOOL)/lexer.c $(TOP)/ip_pool.h
436         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
437
438 ippool_l.h: $(TOOL)/lexer.h
439         (cd $(TOOL); make "DEST=$(HERE)" $(HERE)/$@)
440
441 iptrafcon.o: $(TOP)/iptrafcon.c
442         $(CC) $(CCARGS) -c $< -o $@
443
444 iptrafcon: $(IPTRAFCON) $(OBJ)/libipf.a
445         $(CC) $(CCARGS) $(IPTRAFCON) -o $@ $(LIBS)
446
447 .y.c:
448
449 .l.c:
450
451 clean:
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
478 install:
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
535 coverage:
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
539 clean-coverage:
540         /bin/rm -f *.gcov *.da