xref: /titanic_52/usr/src/cmd/ipf/tools/Makefile.tools (revision a0900badd8eb6bcca99411c8906b483e84f2da91)
1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License (the "License").
6# You may not use this file except in compliance with the License.
7#
8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9# or http://www.opensolaris.org/os/licensing.
10# See the License for the specific language governing permissions
11# and limitations under the License.
12#
13# When distributing Covered Code, include this CDDL HEADER in each
14# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15# If applicable, add the following below this CDDL HEADER, with the
16# fields enclosed by brackets "[]" replaced with your own identifying
17# information: Portions Copyright [yyyy] [name of copyright owner]
18#
19# CDDL HEADER END
20#
21#
22# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23# Use is subject to license terms.
24#
25
26PROG=		ipf ipfs ipmon ipnat ippool ipfstat
27IPFPROG=	ipftest
28
29IPF_OBJS=	ipf.o ipfcomp.o ipf_y.o ipf_l.o
30IPFS_OBJS=	ipfs.o
31IPFSTAT_OBJS=	ipfstat.o
32IPMON_OBJS=	ipmon.o ipmon_y.o ipmon_l.o
33IPNAT_OBJS=	ipnat.o ipnat_y.o ipnat_l.o
34IPPOOL_OBJS=	ippool.o ippool_y.o ippool_l.o
35IPFTEST_OBJS=	ipftest.o  \
36		ip_fil.o ip_state.o ip_compat.o \
37		ip_frag.o ip_nat.o ip_nat6.o fil.o \
38		ip_htable.o ip_lookup.o \
39		ip_proxy.o ip_auth.o ip_log.o \
40		ipf_y.o ipf_l.o \
41		ipnat_y.o ipnat_l.o \
42		ippool_y.o ippool_l.o \
43		ip_pool.o radix.o
44
45OBJS=		$(IPF_OBJS) $(IPFS_OBJS) $(IPFSTAT_OBJS) \
46		$(IPMON_OBJS) $(IPNAT_OBJS) $(IPFTEST_OBJS)
47
48OBJSL=		$(IPF_OBJS) $(IPFS_OBJS) $(IPFSTAT_OBJS) \
49		$(IPMON_OBJS) $(IPNAT_OBJS)
50
51SRCS=		$(OBJSL:%.o=../%.c)
52
53include ../../../Makefile.cmd
54include ../../Makefile.ipf
55
56LDLIBS		+= $(LIBBPF)
57LDFLAGS		+= $(MAPFILE.NGB:%=-M%)
58
59CPPFLAGS	+= -I. -DIPFILTER_LOOKUP -DIPFILTER_LOG
60
61ipfstat.o	:=	CPPFLAGS += -DSTATETOP
62ipfstat		:=	LDLIBS += -lcurses
63
64ipf		:=	LDLIBS += -lsocket -lnsl
65ipftest		:=	LDLIBS += -lsocket -lnsl -lmd
66ipfstat		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
67ipmon		:=	LDLIBS += -lsocket -lnsl
68ipnat		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
69ippool		:=	LDLIBS += -lsocket -lnsl -lkvm -lelf
70
71CLEANFILES	+= $(OBJS)
72
73ROOTIPF=	$(ROOTLIB)/ipf
74ROOTIPF32=	$(ROOTIPF)/$(MACH32)
75ROOTIPF64=	$(ROOTIPF)/$(MACH64)
76
77ROOTIPFPROG32=	$(IPFPROG:%=$(ROOTIPF32)/%)
78ROOTIPFPROG64=	$(IPFPROG:%=$(ROOTIPF64)/%)
79
80ROOTIPFLINKS=		$(IPFPROG:%=$(ROOTIPF)/%)
81ROOTUSRSBINLINKS=	$(PROG:%=$(ROOTUSRSBIN)/%)
82
83$(ROOTIPF32):
84	$(INS.dir)
85
86$(ROOTIPF64):
87	$(INS.dir)
88
89$(ROOTIPF)/%: %
90	$(INS.file)
91
92$(ROOTIPF32)/%: %
93	$(INS.file)
94
95$(ROOTIPF64)/%: %
96	$(INS.file)
97
98$(ROOTUSRSBINLINKS): FRC
99	-$(RM) $@; $(LN) $(ISAEXEC) $@
100
101$(ROOTIPFLINKS): FRC
102	-$(RM) $@; $(LN) $(ISAEXEC) $@
103
104
105.KEEP_STATE:
106
107ipf:	$(IPF_OBJS) $(LIBIPF) $(MAPFILE.NGB)
108	$(LINK.c) -o ipf $(IPF_OBJS) $(LDLIBS)
109	$(POST_PROCESS)
110
111ipf_y.o: ../ipf_y.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h \
112	../ipf_y.c ../ipf_l.h
113
114../ipf_y.c ../ipf_y.h: ../ipf_y.y
115	$(YACC) -d -b ipf ../ipf_y.y
116	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.c/' \
117	   ipf.tab.c > ../ipf_y.c
118	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \
119	   ipf.tab.h > ../ipf_y.h
120
121ipf_l.o: ../ipf_l.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h  \
122	 ../ipf_y.h ../ipf_l.h
123	$(COMPILE.c) ../ipf_l.c -o $@
124
125../ipf_l.c: ../lexer.c $(COMMONIPF)/ipf.h $(COMMONIPF)/netinet/ip_fil.h
126	sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \
127	       -e 's/lexer.h/ipf_l.h/' ../lexer.c > $@
128
129../ipf_l.h: ../lexer.h
130	sed -e 's/yy/ipf_yy/g' ../lexer.h > $@
131
132ipfs:	$(IPFS_OBJS)
133	$(LINK.c) -o ipfs $(IPFS_OBJS) $(LDLIBS)
134	$(POST_PROCESS)
135
136ipfstat:	$(IPFSTAT_OBJS) $(MAPFILE.NGB)
137	$(LINK.c) -o ipfstat $(IPFSTAT_OBJS) $(LDLIBS)
138	$(POST_PROCESS)
139
140ipmon:	$(IPMON_OBJS) $(LIBIPF) $(MAPFILE.NGB)
141	$(LINK.c) -o ipmon $(IPMON_OBJS) $(LDLIBS)
142	$(POST_PROCESS)
143
144ipmon_y.o: ../ipmon_y.c $(COMMONIPF)/ipmon.h \
145	../ipmon_y.h ../ipmon_l.h
146
147../ipmon_y.c ../ipmon_y.h: ../ipmon_y.y
148	$(YACC) -d -b ipmon ../ipmon_y.y
149	sed -e 's/yy/ipmon_yy/g' \
150	    -e 's/extern [a-z]* .*();//' \
151	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
152	   ipmon.tab.c > ../ipmon_y.c
153	sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \
154	   ipmon.tab.h > ../ipmon_y.h
155
156ipmon_l.o: ../ipmon_l.c $(COMMONIPF)/ipmon.h ../ipmon_y.h ../ipmon_l.h
157	$(COMPILE.c) ../ipmon_l.c -o $@
158
159../ipmon_l.c: ../lexer.c $(COMMONIPF)/ipmon.h
160	sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \
161            -e 's/lexer.h/ipmon_l.h/' ../lexer.c > $@
162
163../ipmon_l.h: ../lexer.h
164	sed -e 's/yy/ipmon_yy/g' ../lexer.h > $@
165
166ipnat:	$(IPNAT_OBJS) $(LIBIPF) $(MAPFILE.NGB)
167	$(LINK.c) -o ipnat $(IPNAT_OBJS) $(LDLIBS)
168	$(POST_PROCESS)
169
170ipnat_y.o: ../ipnat_y.c $(COMMONIPF)/netinet/ip_nat.h \
171	../ipnat_y.h ../ipnat_l.h
172
173../ipnat_y.c ../ipnat_y.h: ../ipnat_y.y
174	$(YACC) -d -b ipnat ../ipnat_y.y
175	sed -e 's/yy/ipnat_yy/g' \
176	    -e 's/extern [a-z]* .*();//' \
177	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
178	   ipnat.tab.c > ../ipnat_y.c
179	sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \
180	   ipnat.tab.h > ../ipnat_y.h
181
182ipnat_l.o: ../ipnat_l.c $(COMMONIPF)/netinet/ip_nat.h ../ipnat_l.h
183	$(COMPILE.c) ../ipnat_l.c -o $@
184
185../ipnat_l.c: ../lexer.c $(COMMONIPF)/netinet/ip_nat.h
186	sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \
187	       -e 's/lexer.h/ipnat_l.h/' ../lexer.c > $@
188
189../ipnat_l.h: ../lexer.h
190	sed -e 's/yy/ipnat_yy/g' ../lexer.h > $@
191
192ippool:	$(IPPOOL_OBJS) $(LIBIPF) $(MAPFILE.NGB)
193	$(LINK.c) -o ippool $(IPPOOL_OBJS) $(LDLIBS)
194	$(POST_PROCESS)
195
196ippool_y.o: ../ippool_y.c $(COMMONIPF)/netinet/ip_pool.h \
197	../ippool_y.h ../ippool_l.h
198
199../ippool_y.c ../ippool_y.h: ../ippool_y.y
200	$(YACC) -d -b ippool ../ippool_y.y
201	sed -e 's/yy/ippool_yy/g' \
202	    -e 's/extern [a-z]* .*();//' \
203	    -e 's/^\(static [a-z]* .*\)();/\1(void);/' \
204	   ippool.tab.c > ../ippool_y.c
205	sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \
206	   ippool.tab.h > ../ippool_y.h
207
208ippool_l.o: ../ippool_l.c $(COMMONIPF)/netinet/ip_pool.h ../ippool_l.h
209	$(COMPILE.c) ../ippool_l.c -o $@
210
211../ippool_l.c: ../lexer.c $(COMMONIPF)/netinet/ip_pool.h
212	sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \
213	       -e 's/lexer.h/ippool_l.h/' ../lexer.c > $@
214
215../ippool_l.h: ../lexer.h
216	sed -e 's/yy/ippool_yy/g' ../lexer.h > $@
217
218ipftest:	$(IPFTEST_OBJS) $(LIBIPF) $(MAPFILE.NGB)
219	$(LINK.c) $(ZIGNORE) -o ipftest $(IPFTEST_OBJS) $(LDLIBS)
220	$(POST_PROCESS)
221
222clean:
223	-$(RM) $(CLEANFILES)
224
225lint: 	lint_SRCS
226
227#
228# NOTE: all rules must use relative paths otherwise absolute paths will be
229#       embedded into the binaries making them false positives and
230#       reported by wsdiff
231#
232
233%.o:	../../../../uts/common/inet/ipf/%.c
234	$(COMPILE.c) $<
235
236%.o:	../%.c
237	$(COMPILE.c) $<
238
239%.o:	../../../../common/net/patricia/%.c
240	$(COMPILE.c) $<
241
242include ../../../Makefile.targ
243
244FRC:
245