xref: /illumos-gate/usr/src/cmd/ipf/tools/Makefile (revision 33efde4275d24731ef87927237b0ffb0630b6b2d)
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#
25f3ac6781SToomas Soome# Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
26f3ac6781SToomas Soome#
27f3ac6781SToomas Soome# Copyright (c) 2012, Joyent Inc. All rights reserved.
28f3ac6781SToomas Soome#
297c478bd9Sstevel@tonic-gate# cmd/ipf/tools/Makefile
307c478bd9Sstevel@tonic-gate#
317c478bd9Sstevel@tonic-gate#
327c478bd9Sstevel@tonic-gate
33f3ac6781SToomas Soomeinclude ../../Makefile.cmd
34f3ac6781SToomas Soomeinclude ../../Makefile.cmd.64
35f3ac6781SToomas Soomeinclude ../Makefile.ipf
36f3ac6781SToomas Soomeinclude ../../Makefile.ctf
37f3ac6781SToomas Soome
387c478bd9Sstevel@tonic-gateLICENCE= IPFILTER.LICENCE
397c478bd9Sstevel@tonic-gate
40f3ac6781SToomas SoomePROG=		ipf ipfs ipmon ipnat ippool ipfstat
41f3ac6781SToomas SoomeIPFPROG=	ipftest
427c478bd9Sstevel@tonic-gate
43f3ac6781SToomas SoomeIPF_OBJS=	ipf.o ipfcomp.o ipfzone.o ipf_y.o ipf_l.o
44f3ac6781SToomas SoomeIPFS_OBJS=	ipfs.o ipfzone.o
45f3ac6781SToomas SoomeIPFSTAT_OBJS=	ipfstat.o ipfzone.o
46f3ac6781SToomas SoomeIPMON_OBJS=	ipmon.o ipfzone.o ipmon_y.o ipmon_l.o
47f3ac6781SToomas SoomeIPNAT_OBJS=	ipnat.o ipfzone.o ipnat_y.o ipnat_l.o
48f3ac6781SToomas SoomeIPPOOL_OBJS=	ippool.o ipfzone.o ippool_y.o ippool_l.o
49f3ac6781SToomas SoomeIPFTEST_OBJS=	ipftest.o ipfzone.o \
50f3ac6781SToomas Soome		ip_fil.o ip_state.o ip_compat.o \
51f3ac6781SToomas Soome		ip_frag.o ip_nat.o ip_nat6.o fil.o \
52f3ac6781SToomas Soome		ip_htable.o ip_lookup.o \
53f3ac6781SToomas Soome		ip_proxy.o ip_auth.o ip_log.o \
54f3ac6781SToomas Soome		ipf_y.o ipf_l.o \
55f3ac6781SToomas Soome		ipnat_y.o ipnat_l.o \
56f3ac6781SToomas Soome		ippool_y.o ippool_l.o \
57f3ac6781SToomas 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
64f3ac6781SToomas SoomeCFLAGS += -D_ELF64
65f3ac6781SToomas SoomeLDLIBS += -L ../lib -lipf
66f3ac6781SToomas Soome
67f3ac6781SToomas SoomeLDLIBS		+= $(LIBBPF)
68f3ac6781SToomas SoomeLDFLAGS		+= $(MAPFILE.NGB:%=-Wl,-M%)
69f3ac6781SToomas Soome
70f3ac6781SToomas SoomeCPPFLAGS	+= -I. -DIPFILTER_LOOKUP -DIPFILTER_LOG
71f3ac6781SToomas Soome
72f3ac6781SToomas Soomeipfstat.o	:=	CPPFLAGS += -DSTATETOP
73f3ac6781SToomas Soomeipfstat		:=	LDLIBS += -lcurses
74f3ac6781SToomas Soome
75f3ac6781SToomas Soomeipf		:=	LDLIBS += -lsocket -lnsl
76f3ac6781SToomas Soomeipf		:=	OBJS += $(IPF_OBJS)
77f3ac6781SToomas Soomeipfs		:=	OBJS += $(IPFS_OBJS)
78f3ac6781SToomas Soomeipftest		:=	LDLIBS += -lsocket -lnsl -lmd
79f3ac6781SToomas Soomeipftest		:=	OBJS += $(IPFTEST_OBJS)
80f3ac6781SToomas Soomeipfstat		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
81f3ac6781SToomas Soomeipfstat		:=	OBJS += $(IPFSTAT_OBJS)
82f3ac6781SToomas Soomeipmon		:=	LDLIBS += -lsocket -lnsl
83f3ac6781SToomas Soomeipmon		:=	OBJS += $(IPMON_OBJS)
84f3ac6781SToomas Soomeipnat		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
85f3ac6781SToomas Soomeipnat		:=	OBJS += $(IPNAT_OBJS)
86f3ac6781SToomas Soomeippool		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
87f3ac6781SToomas Soomeippool		:=	OBJS += $(IPPOOL_OBJS)
88f3ac6781SToomas Soome
89*33efde42SToomas Soome# because of labels from yacc
90*33efde42SToomas Soomeipf_y.o		:= CERRWARN += -_gcc=-Wno-unused-label
91*33efde42SToomas Soomeipmon_y.o	:= CERRWARN += -_gcc=-Wno-unused-label
92*33efde42SToomas Soomeipnat_y.o	:= CERRWARN += -_gcc=-Wno-unused-label
93*33efde42SToomas Soomeippool_y.o	:= CERRWARN += -_gcc=-Wno-unused-label
94*33efde42SToomas Soome
95f3ac6781SToomas SoomeCLEANFILES	+= $(IPF_OBJS) $(IPFS_OBJS) $(IPFTEST_OBJS) $(IPFSTAT_OBJS)
96f3ac6781SToomas SoomeCLEANFILES	+= $(IPMON_OBJS) $(IPNAT_OBJS) $(IPPOOL_OBJS)
97f3ac6781SToomas SoomeCLOBBERFILES	+= $(IPFPROG)
98f3ac6781SToomas Soome
99f3ac6781SToomas SoomeROOTIPF=	$(ROOTLIB)/ipf
100f3ac6781SToomas Soome
101f3ac6781SToomas SoomeROOTIPFPROG=	$(IPFPROG:%=$(ROOTIPF)/%)
102f3ac6781SToomas Soome
103f3ac6781SToomas Soome.KEEP_STATE:
104f3ac6781SToomas Soome
105f3ac6781SToomas Soomeall: $(PROG) $(IPFPROG)
106f3ac6781SToomas Soome
107f3ac6781SToomas Soomeinstall: all install_local $(ROOTIPF) $(ROOTUSRSBINPROG) $(ROOTIPFPROG)
1087c478bd9Sstevel@tonic-gate
1097c478bd9Sstevel@tonic-gate$(USRLIBIPF):
1107c478bd9Sstevel@tonic-gate	$(INS.dir)
1117c478bd9Sstevel@tonic-gate
1127c478bd9Sstevel@tonic-gate$(USRLIBIPF)/% : %
1137c478bd9Sstevel@tonic-gate	$(INS.file)
1147c478bd9Sstevel@tonic-gate
115f3ac6781SToomas Soome$(ROOTIPF)/%: %
116f3ac6781SToomas Soome	$(INS.file)
1177c478bd9Sstevel@tonic-gate
118f3ac6781SToomas Soomeipf:	$(IPF_OBJS) $(LIBIPF) $(MAPFILE.NGB)
119f3ac6781SToomas Soome	$(LINK.c) -o ipf $(IPF_OBJS) $(LDLIBS)
120f3ac6781SToomas Soome	$(POST_PROCESS)
1217c478bd9Sstevel@tonic-gate
122f3ac6781SToomas Soomeipf_y.o: ipf_y.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h \
123f3ac6781SToomas Soome	ipf_y.c ipf_l.h
124f3ac6781SToomas Soome
125f3ac6781SToomas Soomeipf_y.c ipf_y.h: ipf_y.y
126f3ac6781SToomas Soome	$(YACC) -d -b ipf ipf_y.y
127f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.c/' \
128f3ac6781SToomas Soome	   ipf.tab.c > ipf_y.c
129f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \
130f3ac6781SToomas Soome	   ipf.tab.h > ipf_y.h
131f3ac6781SToomas Soome
132f3ac6781SToomas SoomeCLEANFILES += ipf.tab.c ipf.tab.h
133f3ac6781SToomas SoomeCLEANFILES += ipf_y.c ipf_y.h
134f3ac6781SToomas Soome
135f3ac6781SToomas Soomeipf_l.o: ipf_l.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h  \
136f3ac6781SToomas Soome	 ipf_y.h ipf_l.h
137f3ac6781SToomas Soome
138f3ac6781SToomas Soomeipf_l.c: lexer.c $(COMMONIPF)/ipf.h $(COMMONIPF)/netinet/ip_fil.h
139f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \
140f3ac6781SToomas Soome	       -e 's/lexer.h/ipf_l.h/' lexer.c > $@
141f3ac6781SToomas Soome
142f3ac6781SToomas Soomeipf_l.h: lexer.h
143f3ac6781SToomas Soome	sed -e 's/yy/ipf_yy/g' lexer.h > $@
144f3ac6781SToomas Soome
145f3ac6781SToomas SoomeCLEANFILES += ipf_l.c ipf_l.h
146f3ac6781SToomas Soome
147f3ac6781SToomas Soomeipfs:	$(IPFS_OBJS)
148f3ac6781SToomas Soome	$(LINK.c) -o ipfs $(IPFS_OBJS) $(LDLIBS)
149f3ac6781SToomas Soome	$(POST_PROCESS)
150f3ac6781SToomas Soome
151f3ac6781SToomas Soomeipfstat:	$(IPFSTAT_OBJS) $(MAPFILE.NGB)
152f3ac6781SToomas Soome	$(LINK.c) -o ipfstat $(IPFSTAT_OBJS) $(LDLIBS)
153f3ac6781SToomas Soome	$(POST_PROCESS)
154f3ac6781SToomas Soome
155f3ac6781SToomas Soomeipmon:	$(IPMON_OBJS) $(LIBIPF) $(MAPFILE.NGB)
156f3ac6781SToomas Soome	$(LINK.c) -o ipmon $(IPMON_OBJS) $(LDLIBS)
157f3ac6781SToomas Soome	$(POST_PROCESS)
158f3ac6781SToomas Soome
159f3ac6781SToomas Soomeipmon_y.o: ipmon_y.c $(COMMONIPF)/ipmon.h ipmon_y.h ipmon_l.h
160f3ac6781SToomas Soome
161f3ac6781SToomas Soomeipmon_y.c ipmon_y.h: ipmon_y.y
162f3ac6781SToomas Soome	$(YACC) -d -b ipmon ipmon_y.y
163f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' \
164f3ac6781SToomas Soome	    -e 's/extern [a-z]* .*();//' \
165f3ac6781SToomas Soome	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
166f3ac6781SToomas Soome	   ipmon.tab.c > ipmon_y.c
167f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \
168f3ac6781SToomas Soome	   ipmon.tab.h > ipmon_y.h
169f3ac6781SToomas Soome
170f3ac6781SToomas SoomeCLEANFILES += ipmon.tab.c ipmon.tab.h
171f3ac6781SToomas SoomeCLEANFILES += ipmon_y.c ipmon_y.h
172f3ac6781SToomas Soome
173f3ac6781SToomas Soomeipmon_l.o: ipmon_l.c $(COMMONIPF)/ipmon.h ipmon_y.h ipmon_l.h
174f3ac6781SToomas Soome
175f3ac6781SToomas Soomeipmon_l.c: lexer.c $(COMMONIPF)/ipmon.h
176f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \
177f3ac6781SToomas Soome            -e 's/lexer.h/ipmon_l.h/' lexer.c > $@
178f3ac6781SToomas Soome
179f3ac6781SToomas Soomeipmon_l.h: lexer.h
180f3ac6781SToomas Soome	sed -e 's/yy/ipmon_yy/g' lexer.h > $@
181f3ac6781SToomas Soome
182f3ac6781SToomas SoomeCLEANFILES += ipmon_l.c ipmon_l.h
183f3ac6781SToomas Soome
184f3ac6781SToomas Soomeipnat:	$(IPNAT_OBJS) $(LIBIPF) $(MAPFILE.NGB)
185f3ac6781SToomas Soome	$(LINK.c) -o ipnat $(IPNAT_OBJS) $(LDLIBS)
186f3ac6781SToomas Soome	$(POST_PROCESS)
187f3ac6781SToomas Soome
188f3ac6781SToomas Soomeipnat_y.o: ipnat_y.c $(COMMONIPF)/netinet/ip_nat.h ipnat_y.h ipnat_l.h
189f3ac6781SToomas Soome
190f3ac6781SToomas Soomeipnat_y.c ipnat_y.h: ipnat_y.y
191f3ac6781SToomas Soome	$(YACC) -d -b ipnat ipnat_y.y
192f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' \
193f3ac6781SToomas Soome	    -e 's/extern [a-z]* .*();//' \
194f3ac6781SToomas Soome	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
195f3ac6781SToomas Soome	   ipnat.tab.c > ipnat_y.c
196f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \
197f3ac6781SToomas Soome	   ipnat.tab.h > ipnat_y.h
198f3ac6781SToomas Soome
199f3ac6781SToomas SoomeCLEANFILES += ipnat.tab.c ipnat.tab.h
200f3ac6781SToomas SoomeCLEANFILES += ipnat_y.c ipnat_y.h
201f3ac6781SToomas Soome
202f3ac6781SToomas Soomeipnat_l.o: ipnat_l.c $(COMMONIPF)/netinet/ip_nat.h ipnat_l.h
203f3ac6781SToomas Soome
204f3ac6781SToomas Soomeipnat_l.c: lexer.c $(COMMONIPF)/netinet/ip_nat.h
205f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \
206f3ac6781SToomas Soome	       -e 's/lexer.h/ipnat_l.h/' lexer.c > $@
207f3ac6781SToomas Soome
208f3ac6781SToomas Soomeipnat_l.h: lexer.h
209f3ac6781SToomas Soome	sed -e 's/yy/ipnat_yy/g' lexer.h > $@
210f3ac6781SToomas Soome
211f3ac6781SToomas SoomeCLEANFILES += ipnat_l.c ipnat_l.h
212f3ac6781SToomas Soome
213f3ac6781SToomas Soomeippool:	$(IPPOOL_OBJS) $(LIBIPF) $(MAPFILE.NGB)
214f3ac6781SToomas Soome	$(LINK.c) -o ippool $(IPPOOL_OBJS) $(LDLIBS)
215f3ac6781SToomas Soome	$(POST_PROCESS)
216f3ac6781SToomas Soome
217f3ac6781SToomas Soomeippool_y.o: ippool_y.c $(COMMONIPF)/netinet/ip_pool.h ippool_y.h ippool_l.h
218f3ac6781SToomas Soome
219f3ac6781SToomas Soomeippool_y.c ippool_y.h: ippool_y.y
220f3ac6781SToomas Soome	$(YACC) -d -b ippool ippool_y.y
221f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' \
222f3ac6781SToomas Soome	    -e 's/extern [a-z]* .*();//' \
223f3ac6781SToomas Soome	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
224f3ac6781SToomas Soome	   ippool.tab.c > ippool_y.c
225f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \
226f3ac6781SToomas Soome	   ippool.tab.h > ippool_y.h
227f3ac6781SToomas Soome
228f3ac6781SToomas SoomeCLEANFILES += ippool.tab.c ippool.tab.h
229f3ac6781SToomas SoomeCLEANFILES += ippool_y.c ippool_y.h
230f3ac6781SToomas Soome
231f3ac6781SToomas Soomeippool_l.o: ippool_l.c $(COMMONIPF)/netinet/ip_pool.h ippool_l.h
232f3ac6781SToomas Soome
233f3ac6781SToomas Soomeippool_l.c: lexer.c $(COMMONIPF)/netinet/ip_pool.h
234f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \
235f3ac6781SToomas Soome	       -e 's/lexer.h/ippool_l.h/' lexer.c > $@
236f3ac6781SToomas Soome
237f3ac6781SToomas Soomeippool_l.h: lexer.h
238f3ac6781SToomas Soome	sed -e 's/yy/ippool_yy/g' lexer.h > $@
239f3ac6781SToomas Soome
240f3ac6781SToomas SoomeCLEANFILES += ippool_l.c ippool_l.h
241f3ac6781SToomas Soome
242f3ac6781SToomas Soomeipftest:	$(IPFTEST_OBJS) $(LIBIPF) $(MAPFILE.NGB)
243f3ac6781SToomas Soome	$(LINK.c) $(ZIGNORE) -o ipftest $(IPFTEST_OBJS) $(LDLIBS)
244f3ac6781SToomas Soome	$(POST_PROCESS)
245f3ac6781SToomas Soome
246f3ac6781SToomas Soomeclean:
247f3ac6781SToomas Soome	-$(RM) $(CLEANFILES)
248f3ac6781SToomas Soome
249f3ac6781SToomas Soome#
250f3ac6781SToomas Soome# NOTE: all rules must use relative paths otherwise absolute paths will be
251f3ac6781SToomas Soome#       embedded into the binaries making them false positives and
252f3ac6781SToomas Soome#       reported by wsdiff
253f3ac6781SToomas Soome#
254f3ac6781SToomas Soome
255f3ac6781SToomas Soome%.o:	../../../uts/common/inet/ipf/%.c
256f3ac6781SToomas Soome	$(COMPILE.c) $<
257f3ac6781SToomas Soome	$(POST_PROCESS_O)
258f3ac6781SToomas Soome
259f3ac6781SToomas Soome%.o:	../../../common/net/patricia/%.c
260f3ac6781SToomas Soome	$(COMPILE.c) $<
261f3ac6781SToomas Soome	$(POST_PROCESS_O)
2627c478bd9Sstevel@tonic-gate
263b6805bf7SGordon Rossinstall_local: $(USRLIBIPF) $(USRLIBIPFLICENCE)
2647c478bd9Sstevel@tonic-gate
265f3ac6781SToomas Soomeinclude ../../Makefile.targ
266