Tomato 1.28
[tomato.git] / release / src / router / iptables / extensions / Makefile
blobe1d52725eda5ec961521af1a0e0033e5a0af87ac
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
14 PF_EXT_SLIB+=condition connlimit connmark geoip icmp iprange layer7
15 PF_EXT_SLIB+=length limit mac mark mport multiport recent standard state
16 PF_EXT_SLIB+=tcp tcpmss time tos u32 udp web dscp
17 PF_EXT_SLIB+=bcount BCOUNT
18 PF_EXT_SLIB+=IMQ ipp2p
21 ifeq ($(DO_SELINUX), 1)
22 PF_EXT_SE_SLIB:=SECMARK CONNSECMARK
23 PF6_EXT_SE_SLIB:=SECMARK CONNSECMARK
24 endif
26 # Optionals
27 #PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
28 #PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
30 PF_EXT_ALL_SLIB:=$(patsubst extensions/libipt_%.c, %, $(wildcard extensions/libipt_*.c))
31 PF6_EXT_ALL_SLIB:=$(patsubst extensions/libip6t_%.c, %, $(wildcard extensions/libip6t_*.c))
33 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)))
34 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)))
35 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)))
36 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)))
38 PF_EXT_MAN_MATCHES:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_MATCHES))
39 PF_EXT_MAN_TARGETS:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_TARGETS))
40 PF_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF_EXT_MAN_MATCHES), $(PF_EXT_MAN_ALL_MATCHES))
41 PF_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF_EXT_MAN_TARGETS), $(PF_EXT_MAN_ALL_TARGETS))
42 PF6_EXT_MAN_MATCHES:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_MATCHES))
43 PF6_EXT_MAN_TARGETS:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_TARGETS))
44 PF6_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF6_EXT_MAN_MATCHES), $(PF6_EXT_MAN_ALL_MATCHES))
45 PF6_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF6_EXT_MAN_TARGETS), $(PF6_EXT_MAN_ALL_TARGETS))
48 allman:
49 @echo ALL_SLIB: $(PF_EXT_ALL_SLIB)
50 @echo ALL_MATCH: $(PF_EXT_MAN_ALL_MATCHES)
51 @echo ALL_TARGET: $(PF_EXT_MAN_ALL_TARGETS)
53 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
54 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
56 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
57 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
59 ifndef NO_SHARED_LIBS
60 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
61 SHARED_SE_LIBS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).so)
62 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
63 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
65 ifeq ($(DO_IPV6), 1)
66 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
67 SHARED_SE_LIBS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).so)
68 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
69 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
70 endif
71 else # NO_SHARED_LIBS
72 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
73 EXT_OBJS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).o)
74 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
75 EXT_FUNC+=$(foreach T,$(PF_EXT_SE_SLIB),ipt_$(T))
76 EXT_OBJS+= extensions/initext.o
77 ifeq ($(DO_IPV6), 1)
78 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
79 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).o)
80 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
81 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SE_SLIB),ip6t_$(T))
82 EXT6_OBJS+= extensions/initext6.o
83 endif # DO_IPV6
84 endif # NO_SHARED_LIBS
86 ifndef TOPLEVEL_INCLUDED
87 local:
88 cd .. && $(MAKE) $(SHARED_LIBS) $(SHARED_SE_LIBS)
89 endif
91 ifdef NO_SHARED_LIBS
92 extensions/libext.a: $(EXT_OBJS)
93 rm -f $@; ar crv $@ $(EXT_OBJS)
95 extensions/libext6.a: $(EXT6_OBJS)
96 rm -f $@; ar crv $@ $(EXT6_OBJS)
98 extensions/initext.o: extensions/initext.c
99 extensions/initext6.o: extensions/initext6.c
101 extensions/initext.c: extensions/Makefile
102 echo "" > $@
103 for i in $(EXT_FUNC); do \
104 echo "extern void $${i}_init(void);" >> $@; \
105 done
106 echo "void init_extensions(void) {" >> $@
107 for i in $(EXT_FUNC); do \
108 echo " $${i}_init();" >> $@; \
109 done
110 echo "}" >> $@
112 extensions/initext6.c: extensions/Makefile
113 echo "" > $@
114 for i in $(EXT6_FUNC); do \
115 echo "extern void $${i}_init(void);" >> $@; \
116 done
117 echo "void init_extensions(void) {" >> $@
118 for i in $(EXT6_FUNC); do \
119 echo " $${i}_init();" >> $@; \
120 done
121 echo "}" >> $@
123 extensions/lib%.o: extensions/lib%.c
124 $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
126 endif
128 EXTRAS += extensions/libipt_targets.man
129 extensions/libipt_targets.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_TARGETS))
130 @for ext in $(PF_EXT_MAN_TARGETS); do \
131 echo ".SS $$ext" ;\
132 cat extensions/libipt_$$ext.man ;\
133 done >extensions/libipt_targets.man
134 @if [ -n "$(PF_EXT_MAN_EXTRA_TARGETS)" ]; then \
135 extra=$(PF_EXT_MAN_EXTRA_TARGETS) ;\
136 for ext in $${extra:-""}; do \
137 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
138 cat extensions/libipt_$$ext.man ;\
139 done ;\
140 fi >>extensions/libipt_targets.man
142 EXTRAS += extensions/libipt_matches.man
143 extensions/libipt_matches.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_MATCHES))
144 @for ext in $(PF_EXT_MAN_MATCHES); do \
145 echo ".SS $$ext" ;\
146 cat extensions/libipt_$$ext.man ;\
147 done >extensions/libipt_matches.man
148 @if [ -n "$(PF_EXT_MAN_EXTRA_MATCHES)" ]; then \
149 extra=$(PF_EXT_MAN_EXTRA_MATCHES) ;\
150 for ext in $${extra:-""}; do \
151 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
152 cat extensions/libipt_$$ext.man ;\
153 done ;\
154 fi >>extensions/libipt_matches.man
156 EXTRAS += extensions/libip6t_targets.man
157 extensions/libip6t_targets.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_TARGETS))
158 @for ext in $(PF6_EXT_MAN_TARGETS); do \
159 echo ".SS $$ext" ;\
160 cat extensions/libip6t_$$ext.man ;\
161 done >extensions/libip6t_targets.man
162 @if [ -n "$(PF6_EXT_MAN_EXTRA_TARGETS)" ]; then \
163 extra=$(PF6_EXT_MAN_EXTRA_TARGETS) ;\
164 for ext in $${extra:-""}; do \
165 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
166 cat extensions/libip6t_$$ext.man ;\
167 done ;\
168 fi >>extensions/libip6t_targets.man
170 EXTRAS += extensions/libip6t_matches.man
171 extensions/libip6t_matches.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_MATCHES))
172 @for ext in $(PF6_EXT_MAN_MATCHES); do \
173 echo ".SS $$ext" ;\
174 cat extensions/libip6t_$$ext.man ;\
175 done >extensions/libip6t_matches.man
176 @if [ -n "$(PF6_EXT_MAN_EXTRA_MATCHES)" ]; then \
177 extra=$(PF6_EXT_MAN_EXTRA_MATCHES) ;\
178 for ext in $${extra:-""}; do \
179 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
180 cat extensions/libip6t_$$ext.man ;\
181 done ;\
182 fi >>extensions/libip6t_matches.man
184 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
185 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
186 cp $< $@
188 $(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
189 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
190 cp $< $@