Merge branch 'tomato-ND-USBmod' into tomato-RT
[tomato.git] / release / src / router / iptables / extensions / Makefile
blob48fb5cd58d7603b00cfd85d887caccab034f20e2
1 #! /usr/bin/make
3 # WARNING:
4 # only add extensions here that are either present in the kernel, or whose
5 # header files are present in the include/linux directory of this iptables
6 # package (HW)
8 #PF_EXT_SLIB:=ah addrtype comment connlimit connmark conntrack ecn esp hashlimit helper icmp iprange length limit mac mark multiport owner physdev pkttype policy realm rpc sctp standard state tcp tcpmss tos ttl udp unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NFQUEUE NOTRACK REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS TRACE TTL ULOG
9 #PF6_EXT_SLIB:=connmark eui64 hl icmp6 length limit mac mark multiport owner physdev policy standard state tcp udp CONNMARK HL LOG NFQUEUE MARK TRACE
12 PF_EXT_SLIB:=CLASSIFY CONNMARK DNAT DSCP LOG MARK MASQUERADE REDIRECT REJECT
13 PF_EXT_SLIB+=ROUTE SNAT TCPMSS TOS TRIGGER TTL NETMAP
14 PF_EXT_SLIB+=condition connlimit connmark geoip icmp iprange layer7
15 PF_EXT_SLIB+=length limit mac mark multiport recent standard state quota
16 PF_EXT_SLIB+=tcp tcpmss time tos u32 udp web dscp connbytes webmon
17 PF_EXT_SLIB+=IMQ ipp2p
18 ifeq ($(CONFIG_LINUX26),y)
19 PF_EXT_SLIB+=hashlimit NFQUEUE NOTRACK
20 endif
22 ifeq ($(DO_IPV6), 1)
23 PF6_EXT_SLIB:=connmark icmp6 length limit mac mark multiport standard state rt hl web
24 PF6_EXT_SLIB+=tcp udp CONNMARK LOG MARK IMQ TCPMSS REJECT
25 ifeq ($(CONFIG_LINUX26),y)
26 PF6_EXT_SLIB+=connlimit hashlimit recent NFQUEUE ROUTE HL connbytes iprange webmon dscp
27 endif
28 endif
30 ifeq ($(DO_SELINUX), 1)
31 PF_EXT_SE_SLIB:=SECMARK CONNSECMARK
32 PF6_EXT_SE_SLIB:=SECMARK CONNSECMARK
33 endif
35 # Optionals
36 #PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
37 #PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
39 PF_EXT_ALL_SLIB:=$(patsubst extensions/libipt_%.c, %, $(wildcard extensions/libipt_*.c))
40 PF6_EXT_ALL_SLIB:=$(patsubst extensions/libip6t_%.c, %, $(wildcard extensions/libip6t_*.c))
42 PF_EXT_MAN_ALL_MATCHES:=$(foreach T,$(PF_EXT_ALL_SLIB),$(shell test -f extensions/libipt_$(T).man && grep -q register_match extensions/libipt_$(T).c && echo $(T)))
43 PF_EXT_MAN_ALL_TARGETS:=$(foreach T,$(PF_EXT_ALL_SLIB),$(shell test -f extensions/libipt_$(T).man && grep -q register_target extensions/libipt_$(T).c && echo $(T)))
44 PF6_EXT_MAN_ALL_MATCHES:=$(foreach T,$(PF6_EXT_ALL_SLIB),$(shell test -f extensions/libip6t_$(T).man && grep -q register_match6 extensions/libip6t_$(T).c && echo $(T)))
45 PF6_EXT_MAN_ALL_TARGETS:=$(foreach T,$(PF6_EXT_ALL_SLIB),$(shell test -f extensions/libip6t_$(T).man && grep -q register_target6 extensions/libip6t_$(T).c && echo $(T)))
47 PF_EXT_MAN_MATCHES:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_MATCHES))
48 PF_EXT_MAN_TARGETS:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_TARGETS))
49 PF_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF_EXT_MAN_MATCHES), $(PF_EXT_MAN_ALL_MATCHES))
50 PF_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF_EXT_MAN_TARGETS), $(PF_EXT_MAN_ALL_TARGETS))
51 PF6_EXT_MAN_MATCHES:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_MATCHES))
52 PF6_EXT_MAN_TARGETS:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_TARGETS))
53 PF6_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF6_EXT_MAN_MATCHES), $(PF6_EXT_MAN_ALL_MATCHES))
54 PF6_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF6_EXT_MAN_TARGETS), $(PF6_EXT_MAN_ALL_TARGETS))
57 allman:
58 @echo ALL_SLIB: $(PF_EXT_ALL_SLIB)
59 @echo ALL_MATCH: $(PF_EXT_MAN_ALL_MATCHES)
60 @echo ALL_TARGET: $(PF_EXT_MAN_ALL_TARGETS)
62 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
63 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
65 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
67 ifndef NO_SHARED_LIBS
68 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
69 SHARED_SE_LIBS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).so)
70 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
71 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
73 ifeq ($(DO_IPV6), 1)
74 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
75 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
76 SHARED_SE_LIBS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).so)
77 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
78 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
79 endif
80 else # NO_SHARED_LIBS
81 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
82 EXT_OBJS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).o)
83 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
84 EXT_FUNC+=$(foreach T,$(PF_EXT_SE_SLIB),ipt_$(T))
85 EXT_OBJS+= extensions/initext.o
86 ifeq ($(DO_IPV6), 1)
87 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
88 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).o)
89 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
90 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SE_SLIB),ip6t_$(T))
91 EXT6_OBJS+= extensions/initext6.o
92 endif # DO_IPV6
93 endif # NO_SHARED_LIBS
95 ifndef TOPLEVEL_INCLUDED
96 local:
97 cd .. && $(MAKE) $(SHARED_LIBS) $(SHARED_SE_LIBS)
98 endif
100 ifdef NO_SHARED_LIBS
101 extensions/libext.a: $(EXT_OBJS)
102 rm -f $@; ar crv $@ $(EXT_OBJS)
104 extensions/libext6.a: $(EXT6_OBJS)
105 rm -f $@; ar crv $@ $(EXT6_OBJS)
107 extensions/initext.o: extensions/initext.c
108 extensions/initext6.o: extensions/initext6.c
110 extensions/initext.c: extensions/Makefile
111 echo "" > $@
112 for i in $(EXT_FUNC); do \
113 echo "extern void $${i}_init(void);" >> $@; \
114 done
115 echo "void init_extensions(void) {" >> $@
116 for i in $(EXT_FUNC); do \
117 echo " $${i}_init();" >> $@; \
118 done
119 echo "}" >> $@
121 extensions/initext6.c: extensions/Makefile
122 echo "" > $@
123 for i in $(EXT6_FUNC); do \
124 echo "extern void $${i}_init(void);" >> $@; \
125 done
126 echo "void init_extensions(void) {" >> $@
127 for i in $(EXT6_FUNC); do \
128 echo " $${i}_init();" >> $@; \
129 done
130 echo "}" >> $@
132 extensions/lib%.o: extensions/lib%.c
133 $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
135 endif
137 EXTRAS += extensions/libipt_targets.man
138 extensions/libipt_targets.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_TARGETS))
139 @for ext in $(PF_EXT_MAN_TARGETS); do \
140 echo ".SS $$ext" ;\
141 cat extensions/libipt_$$ext.man ;\
142 done >extensions/libipt_targets.man
143 @if [ -n "$(PF_EXT_MAN_EXTRA_TARGETS)" ]; then \
144 extra=$(PF_EXT_MAN_EXTRA_TARGETS) ;\
145 for ext in $${extra:-""}; do \
146 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
147 cat extensions/libipt_$$ext.man ;\
148 done ;\
149 fi >>extensions/libipt_targets.man
151 EXTRAS += extensions/libipt_matches.man
152 extensions/libipt_matches.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_MATCHES))
153 @for ext in $(PF_EXT_MAN_MATCHES); do \
154 echo ".SS $$ext" ;\
155 cat extensions/libipt_$$ext.man ;\
156 done >extensions/libipt_matches.man
157 @if [ -n "$(PF_EXT_MAN_EXTRA_MATCHES)" ]; then \
158 extra=$(PF_EXT_MAN_EXTRA_MATCHES) ;\
159 for ext in $${extra:-""}; do \
160 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
161 cat extensions/libipt_$$ext.man ;\
162 done ;\
163 fi >>extensions/libipt_matches.man
165 EXTRAS += extensions/libip6t_targets.man
166 extensions/libip6t_targets.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_TARGETS))
167 @for ext in $(PF6_EXT_MAN_TARGETS); do \
168 echo ".SS $$ext" ;\
169 cat extensions/libip6t_$$ext.man ;\
170 done >extensions/libip6t_targets.man
171 @if [ -n "$(PF6_EXT_MAN_EXTRA_TARGETS)" ]; then \
172 extra=$(PF6_EXT_MAN_EXTRA_TARGETS) ;\
173 for ext in $${extra:-""}; do \
174 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
175 cat extensions/libip6t_$$ext.man ;\
176 done ;\
177 fi >>extensions/libip6t_targets.man
179 EXTRAS += extensions/libip6t_matches.man
180 extensions/libip6t_matches.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_MATCHES))
181 @for ext in $(PF6_EXT_MAN_MATCHES); do \
182 echo ".SS $$ext" ;\
183 cat extensions/libip6t_$$ext.man ;\
184 done >extensions/libip6t_matches.man
185 @if [ -n "$(PF6_EXT_MAN_EXTRA_MATCHES)" ]; then \
186 extra=$(PF6_EXT_MAN_EXTRA_MATCHES) ;\
187 for ext in $${extra:-""}; do \
188 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
189 cat extensions/libip6t_$$ext.man ;\
190 done ;\
191 fi >>extensions/libip6t_matches.man
193 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
194 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
195 cp $< $@
197 $(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
198 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
199 cp $< $@