xref: /illumos-gate/usr/src/cmd/ipf/tools/Makefile (revision f3ac678143127d4c6c1793fadabb5ded04e127b6)
17c478bd9Sstevel@tonic-gate#
233f2fefdSDarren Reed# CDDL HEADER START
37c478bd9Sstevel@tonic-gate#
433f2fefdSDarren Reed# The contents of this file are subject to the terms of the
533f2fefdSDarren Reed# Common Development and Distribution License (the "License").
633f2fefdSDarren Reed# You may not use this file except in compliance with the License.
733f2fefdSDarren Reed#
833f2fefdSDarren Reed# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
933f2fefdSDarren Reed# or http://www.opensolaris.org/os/licensing.
1033f2fefdSDarren Reed# See the License for the specific language governing permissions
1133f2fefdSDarren Reed# and limitations under the License.
1233f2fefdSDarren Reed#
1333f2fefdSDarren Reed# When distributing Covered Code, include this CDDL HEADER in each
1433f2fefdSDarren Reed# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1533f2fefdSDarren Reed# If applicable, add the following below this CDDL HEADER, with the
1633f2fefdSDarren Reed# fields enclosed by brackets "[]" replaced with your own identifying
1733f2fefdSDarren Reed# information: Portions Copyright [yyyy] [name of copyright owner]
1833f2fefdSDarren Reed#
1933f2fefdSDarren Reed# CDDL HEADER END
2033f2fefdSDarren Reed#
2133f2fefdSDarren Reed#
2233f2fefdSDarren Reed# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
2333f2fefdSDarren Reed# Use is subject to license terms.
247c478bd9Sstevel@tonic-gate#
25*f3ac6781SToomas Soome# Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
26*f3ac6781SToomas Soome#
27*f3ac6781SToomas Soome# Copyright (c) 2012, Joyent Inc. All rights reserved.
28*f3ac6781SToomas Soome#
297c478bd9Sstevel@tonic-gate# cmd/ipf/tools/Makefile
307c478bd9Sstevel@tonic-gate#
317c478bd9Sstevel@tonic-gate#
327c478bd9Sstevel@tonic-gate
33*f3ac6781SToomas Soomeinclude ../../Makefile.cmd
34*f3ac6781SToomas Soomeinclude ../../Makefile.cmd.64
35*f3ac6781SToomas Soomeinclude ../Makefile.ipf
36*f3ac6781SToomas Soomeinclude ../../Makefile.ctf
37*f3ac6781SToomas Soome
387c478bd9Sstevel@tonic-gateLICENCE= IPFILTER.LICENCE
397c478bd9Sstevel@tonic-gate
40*f3ac6781SToomas SoomePROG=		ipf ipfs ipmon ipnat ippool ipfstat
41*f3ac6781SToomas SoomeIPFPROG=	ipftest
427c478bd9Sstevel@tonic-gate
43*f3ac6781SToomas SoomeIPF_OBJS=	ipf.o ipfcomp.o ipfzone.o ipf_y.o ipf_l.o
44*f3ac6781SToomas SoomeIPFS_OBJS=	ipfs.o ipfzone.o
45*f3ac6781SToomas SoomeIPFSTAT_OBJS=	ipfstat.o ipfzone.o
46*f3ac6781SToomas SoomeIPMON_OBJS=	ipmon.o ipfzone.o ipmon_y.o ipmon_l.o
47*f3ac6781SToomas SoomeIPNAT_OBJS=	ipnat.o ipfzone.o ipnat_y.o ipnat_l.o
48*f3ac6781SToomas SoomeIPPOOL_OBJS=	ippool.o ipfzone.o ippool_y.o ippool_l.o
49*f3ac6781SToomas SoomeIPFTEST_OBJS=	ipftest.o ipfzone.o \
50*f3ac6781SToomas Soome		ip_fil.o ip_state.o ip_compat.o \
51*f3ac6781SToomas Soome		ip_frag.o ip_nat.o ip_nat6.o fil.o \
52*f3ac6781SToomas Soome		ip_htable.o ip_lookup.o \
53*f3ac6781SToomas Soome		ip_proxy.o ip_auth.o ip_log.o \
54*f3ac6781SToomas Soome		ipf_y.o ipf_l.o \
55*f3ac6781SToomas Soome		ipnat_y.o ipnat_l.o \
56*f3ac6781SToomas Soome		ippool_y.o ippool_l.o \
57*f3ac6781SToomas Soome		ip_pool.o radix.o
587c478bd9Sstevel@tonic-gate
597c478bd9Sstevel@tonic-gateUSRLIBIPF=		$(ROOTLIB)/ipf
607c478bd9Sstevel@tonic-gateUSRLIBIPFLICENCE=	$(LICENCE:%=$(USRLIBIPF)/%)
617c478bd9Sstevel@tonic-gate
627c478bd9Sstevel@tonic-gate$(USRLIBIPFLICENCE):=FILEMODE= 0644
637c478bd9Sstevel@tonic-gate
64*f3ac6781SToomas SoomeCFLAGS += -D_ELF64
65*f3ac6781SToomas SoomeLDLIBS += -L ../lib -lipf
66*f3ac6781SToomas Soome
67*f3ac6781SToomas SoomeLDLIBS		+= $(LIBBPF)
68*f3ac6781SToomas SoomeLDFLAGS		+= $(MAPFILE.NGB:%=-Wl,-M%)
69*f3ac6781SToomas Soome
70*f3ac6781SToomas SoomeCPPFLAGS	+= -I. -DIPFILTER_LOOKUP -DIPFILTER_LOG
71*f3ac6781SToomas Soome
72*f3ac6781SToomas Soomeipfstat.o	:=	CPPFLAGS += -DSTATETOP
73*f3ac6781SToomas Soomeipfstat		:=	LDLIBS += -lcurses
74*f3ac6781SToomas Soome
75*f3ac6781SToomas Soomeipf		:=	LDLIBS += -lsocket -lnsl
76*f3ac6781SToomas Soomeipf		:=	OBJS += $(IPF_OBJS)
77*f3ac6781SToomas Soomeipfs		:=	OBJS += $(IPFS_OBJS)
78*f3ac6781SToomas Soomeipftest		:=	LDLIBS += -lsocket -lnsl -lmd
79*f3ac6781SToomas Soomeipftest		:=	OBJS += $(IPFTEST_OBJS)
80*f3ac6781SToomas Soomeipfstat		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
81*f3ac6781SToomas Soomeipfstat		:=	OBJS += $(IPFSTAT_OBJS)
82*f3ac6781SToomas Soomeipmon		:=	LDLIBS += -lsocket -lnsl
83*f3ac6781SToomas Soomeipmon		:=	OBJS += $(IPMON_OBJS)
84*f3ac6781SToomas Soomeipnat		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
85*f3ac6781SToomas Soomeipnat		:=	OBJS += $(IPNAT_OBJS)
86*f3ac6781SToomas Soomeippool		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
87*f3ac6781SToomas Soomeippool		:=	OBJS += $(IPPOOL_OBJS)
88*f3ac6781SToomas Soome
89*f3ac6781SToomas SoomeCLEANFILES	+= $(IPF_OBJS) $(IPFS_OBJS) $(IPFTEST_OBJS) $(IPFSTAT_OBJS)
90*f3ac6781SToomas SoomeCLEANFILES	+= $(IPMON_OBJS) $(IPNAT_OBJS) $(IPPOOL_OBJS)
91*f3ac6781SToomas SoomeCLOBBERFILES	+= $(IPFPROG)
92*f3ac6781SToomas Soome
93*f3ac6781SToomas SoomeROOTIPF=	$(ROOTLIB)/ipf
94*f3ac6781SToomas Soome
95*f3ac6781SToomas SoomeROOTIPFPROG=	$(IPFPROG:%=$(ROOTIPF)/%)
96*f3ac6781SToomas Soome
97*f3ac6781SToomas Soome.KEEP_STATE:
98*f3ac6781SToomas Soome
99*f3ac6781SToomas Soomeall: $(PROG) $(IPFPROG)
100*f3ac6781SToomas Soome
101*f3ac6781SToomas Soomeinstall: all install_local $(ROOTIPF) $(ROOTUSRSBINPROG) $(ROOTIPFPROG)
1027c478bd9Sstevel@tonic-gate
1037c478bd9Sstevel@tonic-gate$(USRLIBIPF):
1047c478bd9Sstevel@tonic-gate	$(INS.dir)
1057c478bd9Sstevel@tonic-gate
1067c478bd9Sstevel@tonic-gate$(USRLIBIPF)/% : %
1077c478bd9Sstevel@tonic-gate	$(INS.file)
1087c478bd9Sstevel@tonic-gate
109*f3ac6781SToomas Soome$(ROOTIPF)/%: %
110*f3ac6781SToomas Soome	$(INS.file)
1117c478bd9Sstevel@tonic-gate
112*f3ac6781SToomas Soomeipf:	$(IPF_OBJS) $(LIBIPF) $(MAPFILE.NGB)
113*f3ac6781SToomas Soome	$(LINK.c) -o ipf $(IPF_OBJS) $(LDLIBS)
114*f3ac6781SToomas Soome	$(POST_PROCESS)
1157c478bd9Sstevel@tonic-gate
116*f3ac6781SToomas Soomeipf_y.o: ipf_y.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h \
117*f3ac6781SToomas Soome	ipf_y.c ipf_l.h
118*f3ac6781SToomas Soome
119*f3ac6781SToomas Soomeipf_y.c ipf_y.h: ipf_y.y
120*f3ac6781SToomas Soome	$(YACC) -d -b ipf ipf_y.y
121*f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.c/' \
122*f3ac6781SToomas Soome	   ipf.tab.c > ipf_y.c
123*f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \
124*f3ac6781SToomas Soome	   ipf.tab.h > ipf_y.h
125*f3ac6781SToomas Soome
126*f3ac6781SToomas SoomeCLEANFILES += ipf.tab.c ipf.tab.h
127*f3ac6781SToomas SoomeCLEANFILES += ipf_y.c ipf_y.h
128*f3ac6781SToomas Soome
129*f3ac6781SToomas Soomeipf_l.o: ipf_l.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h  \
130*f3ac6781SToomas Soome	 ipf_y.h ipf_l.h
131*f3ac6781SToomas Soome
132*f3ac6781SToomas Soomeipf_l.c: lexer.c $(COMMONIPF)/ipf.h $(COMMONIPF)/netinet/ip_fil.h
133*f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \
134*f3ac6781SToomas Soome	       -e 's/lexer.h/ipf_l.h/' lexer.c > $@
135*f3ac6781SToomas Soome
136*f3ac6781SToomas Soomeipf_l.h: lexer.h
137*f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' lexer.h > $@
138*f3ac6781SToomas Soome
139*f3ac6781SToomas SoomeCLEANFILES += ipf_l.c ipf_l.h
140*f3ac6781SToomas Soome
141*f3ac6781SToomas Soomeipfs:	$(IPFS_OBJS)
142*f3ac6781SToomas Soome	$(LINK.c) -o ipfs $(IPFS_OBJS) $(LDLIBS)
143*f3ac6781SToomas Soome	$(POST_PROCESS)
144*f3ac6781SToomas Soome
145*f3ac6781SToomas Soomeipfstat:	$(IPFSTAT_OBJS) $(MAPFILE.NGB)
146*f3ac6781SToomas Soome	$(LINK.c) -o ipfstat $(IPFSTAT_OBJS) $(LDLIBS)
147*f3ac6781SToomas Soome	$(POST_PROCESS)
148*f3ac6781SToomas Soome
149*f3ac6781SToomas Soomeipmon:	$(IPMON_OBJS) $(LIBIPF) $(MAPFILE.NGB)
150*f3ac6781SToomas Soome	$(LINK.c) -o ipmon $(IPMON_OBJS) $(LDLIBS)
151*f3ac6781SToomas Soome	$(POST_PROCESS)
152*f3ac6781SToomas Soome
153*f3ac6781SToomas Soomeipmon_y.o: ipmon_y.c $(COMMONIPF)/ipmon.h ipmon_y.h ipmon_l.h
154*f3ac6781SToomas Soome
155*f3ac6781SToomas Soomeipmon_y.c ipmon_y.h: ipmon_y.y
156*f3ac6781SToomas Soome	$(YACC) -d -b ipmon ipmon_y.y
157*f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' \
158*f3ac6781SToomas Soome	    -e 's/extern [a-z]* .*();//' \
159*f3ac6781SToomas Soome	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
160*f3ac6781SToomas Soome	   ipmon.tab.c > ipmon_y.c
161*f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \
162*f3ac6781SToomas Soome	   ipmon.tab.h > ipmon_y.h
163*f3ac6781SToomas Soome
164*f3ac6781SToomas SoomeCLEANFILES += ipmon.tab.c ipmon.tab.h
165*f3ac6781SToomas SoomeCLEANFILES += ipmon_y.c ipmon_y.h
166*f3ac6781SToomas Soome
167*f3ac6781SToomas Soomeipmon_l.o: ipmon_l.c $(COMMONIPF)/ipmon.h ipmon_y.h ipmon_l.h
168*f3ac6781SToomas Soome
169*f3ac6781SToomas Soomeipmon_l.c: lexer.c $(COMMONIPF)/ipmon.h
170*f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \
171*f3ac6781SToomas Soome            -e 's/lexer.h/ipmon_l.h/' lexer.c > $@
172*f3ac6781SToomas Soome
173*f3ac6781SToomas Soomeipmon_l.h: lexer.h
174*f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' lexer.h > $@
175*f3ac6781SToomas Soome
176*f3ac6781SToomas SoomeCLEANFILES += ipmon_l.c ipmon_l.h
177*f3ac6781SToomas Soome
178*f3ac6781SToomas Soomeipnat:	$(IPNAT_OBJS) $(LIBIPF) $(MAPFILE.NGB)
179*f3ac6781SToomas Soome	$(LINK.c) -o ipnat $(IPNAT_OBJS) $(LDLIBS)
180*f3ac6781SToomas Soome	$(POST_PROCESS)
181*f3ac6781SToomas Soome
182*f3ac6781SToomas Soomeipnat_y.o: ipnat_y.c $(COMMONIPF)/netinet/ip_nat.h ipnat_y.h ipnat_l.h
183*f3ac6781SToomas Soome
184*f3ac6781SToomas Soomeipnat_y.c ipnat_y.h: ipnat_y.y
185*f3ac6781SToomas Soome	$(YACC) -d -b ipnat ipnat_y.y
186*f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' \
187*f3ac6781SToomas Soome	    -e 's/extern [a-z]* .*();//' \
188*f3ac6781SToomas Soome	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
189*f3ac6781SToomas Soome	   ipnat.tab.c > ipnat_y.c
190*f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \
191*f3ac6781SToomas Soome	   ipnat.tab.h > ipnat_y.h
192*f3ac6781SToomas Soome
193*f3ac6781SToomas SoomeCLEANFILES += ipnat.tab.c ipnat.tab.h
194*f3ac6781SToomas SoomeCLEANFILES += ipnat_y.c ipnat_y.h
195*f3ac6781SToomas Soome
196*f3ac6781SToomas Soomeipnat_l.o: ipnat_l.c $(COMMONIPF)/netinet/ip_nat.h ipnat_l.h
197*f3ac6781SToomas Soome
198*f3ac6781SToomas Soomeipnat_l.c: lexer.c $(COMMONIPF)/netinet/ip_nat.h
199*f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \
200*f3ac6781SToomas Soome	       -e 's/lexer.h/ipnat_l.h/' lexer.c > $@
201*f3ac6781SToomas Soome
202*f3ac6781SToomas Soomeipnat_l.h: lexer.h
203*f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' lexer.h > $@
204*f3ac6781SToomas Soome
205*f3ac6781SToomas SoomeCLEANFILES += ipnat_l.c ipnat_l.h
206*f3ac6781SToomas Soome
207*f3ac6781SToomas Soomeippool:	$(IPPOOL_OBJS) $(LIBIPF) $(MAPFILE.NGB)
208*f3ac6781SToomas Soome	$(LINK.c) -o ippool $(IPPOOL_OBJS) $(LDLIBS)
209*f3ac6781SToomas Soome	$(POST_PROCESS)
210*f3ac6781SToomas Soome
211*f3ac6781SToomas Soomeippool_y.o: ippool_y.c $(COMMONIPF)/netinet/ip_pool.h ippool_y.h ippool_l.h
212*f3ac6781SToomas Soome
213*f3ac6781SToomas Soomeippool_y.c ippool_y.h: ippool_y.y
214*f3ac6781SToomas Soome	$(YACC) -d -b ippool ippool_y.y
215*f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' \
216*f3ac6781SToomas Soome	    -e 's/extern [a-z]* .*();//' \
217*f3ac6781SToomas Soome	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
218*f3ac6781SToomas Soome	   ippool.tab.c > ippool_y.c
219*f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \
220*f3ac6781SToomas Soome	   ippool.tab.h > ippool_y.h
221*f3ac6781SToomas Soome
222*f3ac6781SToomas SoomeCLEANFILES += ippool.tab.c ippool.tab.h
223*f3ac6781SToomas SoomeCLEANFILES += ippool_y.c ippool_y.h
224*f3ac6781SToomas Soome
225*f3ac6781SToomas Soomeippool_l.o: ippool_l.c $(COMMONIPF)/netinet/ip_pool.h ippool_l.h
226*f3ac6781SToomas Soome
227*f3ac6781SToomas Soomeippool_l.c: lexer.c $(COMMONIPF)/netinet/ip_pool.h
228*f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \
229*f3ac6781SToomas Soome	       -e 's/lexer.h/ippool_l.h/' lexer.c > $@
230*f3ac6781SToomas Soome
231*f3ac6781SToomas Soomeippool_l.h: lexer.h
232*f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' lexer.h > $@
233*f3ac6781SToomas Soome
234*f3ac6781SToomas SoomeCLEANFILES += ippool_l.c ippool_l.h
235*f3ac6781SToomas Soome
236*f3ac6781SToomas Soomeipftest:	$(IPFTEST_OBJS) $(LIBIPF) $(MAPFILE.NGB)
237*f3ac6781SToomas Soome	$(LINK.c) $(ZIGNORE) -o ipftest $(IPFTEST_OBJS) $(LDLIBS)
238*f3ac6781SToomas Soome	$(POST_PROCESS)
239*f3ac6781SToomas Soome
240*f3ac6781SToomas Soomeclean:
241*f3ac6781SToomas Soome	-$(RM) $(CLEANFILES)
242*f3ac6781SToomas Soome
243*f3ac6781SToomas Soome#
244*f3ac6781SToomas Soome# NOTE: all rules must use relative paths otherwise absolute paths will be
245*f3ac6781SToomas Soome#       embedded into the binaries making them false positives and
246*f3ac6781SToomas Soome#       reported by wsdiff
247*f3ac6781SToomas Soome#
248*f3ac6781SToomas Soome
249*f3ac6781SToomas Soome%.o:	../../../uts/common/inet/ipf/%.c
250*f3ac6781SToomas Soome	$(COMPILE.c) $<
251*f3ac6781SToomas Soome	$(POST_PROCESS_O)
252*f3ac6781SToomas Soome
253*f3ac6781SToomas Soome%.o:	../../../common/net/patricia/%.c
254*f3ac6781SToomas Soome	$(COMPILE.c) $<
255*f3ac6781SToomas Soome	$(POST_PROCESS_O)
2567c478bd9Sstevel@tonic-gate
257b6805bf7SGordon Rossinstall_local: $(USRLIBIPF) $(USRLIBIPFLICENCE)
2587c478bd9Sstevel@tonic-gate
259*f3ac6781SToomas Soomeinclude ../../Makefile.targ
260