Build recent match unconditionally
[jleu-iptables.git] / extensions / Makefile
bloba359a62b77ebc0b1b94643fe7f2a5dbb288a09fb
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 conntrack ecn icmp iprange owner policy realm recent tos ttl unclean DNAT ECN LOG MASQUERADE MIRROR NETMAP REDIRECT REJECT SAME SNAT TOS TTL ULOG
9 PF6_EXT_SLIB:=eui64 hl icmp6 owner policy HL LOG
10 PFX_EXT_SLIB:=connbytes connmark connlimit comment dccp dscp esp hashlimit helper length limit mac mark multiport physdev pkttype quota sctp state statistic standard string tcp tcpmss udp CLASSIFY CONNMARK DSCP MARK NFLOG NFQUEUE NOTRACK TCPMSS TRACE
12 ifeq ($(DO_SELINUX), 1)
13 PF_EXT_SE_SLIB:=
14 PF6_EXT_SE_SLIB:=
15 PFX_EXT_SE_SLIB:=CONNSECMARK SECMARK
16 endif
18 # Optionals
19 PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
20 PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
21 PFX_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-testx),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
23 PF_EXT_ALL_SLIB:=$(patsubst extensions/libipt_%.c, %, $(wildcard extensions/libipt_*.c))
24 PF6_EXT_ALL_SLIB:=$(patsubst extensions/libip6t_%.c, %, $(wildcard extensions/libip6t_*.c))
25 PFX_EXT_ALL_SLIB:=$(patsubst extensions/libxt_%.c, %, $(wildcard extensions/libxt_*.c))
27 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)))
28 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)))
29 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)))
30 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)))
32 PF_EXT_MAN_MATCHES:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_MATCHES))
33 PF_EXT_MAN_TARGETS:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_TARGETS))
34 PF_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF_EXT_MAN_MATCHES), $(PF_EXT_MAN_ALL_MATCHES))
35 PF_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF_EXT_MAN_TARGETS), $(PF_EXT_MAN_ALL_TARGETS))
36 PF6_EXT_MAN_MATCHES:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_MATCHES))
37 PF6_EXT_MAN_TARGETS:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_TARGETS))
38 PF6_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF6_EXT_MAN_MATCHES), $(PF6_EXT_MAN_ALL_MATCHES))
39 PF6_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF6_EXT_MAN_TARGETS), $(PF6_EXT_MAN_ALL_TARGETS))
42 allman:
43 @echo ALL_SLIB: $(PF_EXT_ALL_SLIB)
44 @echo ALL_MATCH: $(PF_EXT_MAN_ALL_MATCHES)
45 @echo ALL_TARGET: $(PF_EXT_MAN_ALL_TARGETS)
47 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
48 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
49 PFX_EXT_SLIB+=$(PFX_EXT_SLIB_OPTS)
51 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
52 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
54 ifndef NO_SHARED_LIBS
55 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
56 SHARED_SE_LIBS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).so)
57 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DEST_IPT_LIBDIR)/libipt_$(T).so)
58 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libipt_$(T).so)
60 ifeq ($(DO_IPV6), 1)
61 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
62 SHARED_SE_LIBS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).so)
63 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DEST_IPT_LIBDIR)/libip6t_$(T).so)
64 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libip6t_$(T).so)
65 endif
67 SHARED_LIBS+=$(foreach T,$(PFX_EXT_SLIB),extensions/libxt_$(T).so)
68 SHARED_SE_LIBS+=$(foreach T,$(PFX_EXT_SE_SLIB),extensions/libxt_$(T).so)
69 EXTRA_INSTALLS+=$(foreach T, $(PFX_EXT_SLIB), $(DEST_IPT_LIBDIR)/libxt_$(T).so)
70 EXTRA_INSTALLS+=$(foreach T, $(PFX_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libxt_$(T).so)
72 else # NO_SHARED_LIBS
73 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
74 EXT_OBJS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).o)
75 EXT_OBJS+=$(foreach T,$(PFX_EXT_SLIB),extensions/libxt_$(T).o)
76 EXT_OBJS+=$(foreach T,$(PFX_EXT_SE_SLIB),extensions/libxt_$(T).o)
77 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
78 EXT_FUNC+=$(foreach T,$(PF_EXT_SE_SLIB),ipt_$(T))
79 EXT_FUNC+=$(foreach T,$(PFX_EXT_SLIB),xt_$(T))
80 EXT_FUNC+=$(foreach T,$(PFX_EXT_SE_SLIB),xt_$(T))
81 EXT_OBJS+= extensions/initext.o
82 ifeq ($(DO_IPV6), 1)
83 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
84 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).o)
85 EXT6_OBJS+=$(foreach T,$(PFX_EXT_SLIB),extensions/libxt_$(T).o)
86 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
87 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SE_SLIB),ip6t_$(T))
88 EXT6_FUNC+=$(foreach T,$(PFX_EXT_SLIB),xt_$(T))
89 EXT6_OBJS+=$(foreach T,$(PFX_EXT_SE_SLIB),extensions/libxt_$(T).o)
90 EXT6_FUNC+=$(foreach T,$(PFX_EXT_SE_SLIB),xt_$(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 $(DEST_IPT_LIBDIR)/libipt_%.so: extensions/libipt_%.so
194 @[ -d $(DEST_IPT_LIBDIR)/ ] || mkdir -p $(DEST_IPT_LIBDIR)/
195 cp $< $@
197 $(DEST_IPT_LIBDIR)/libip6t_%.so: extensions/libip6t_%.so
198 @[ -d $(DEST_IPT_LIBDIR)/ ] || mkdir -p $(DEST_IPT_LIBDIR)/
199 cp $< $@
201 $(DEST_IPT_LIBDIR)/libxt_%.so: extensions/libxt_%.so
202 @[ -d $(DEST_IPT_LIBDIR)/ ] || mkdir -p $(DEST_IPT_LIBDIR)/
203 cp $< $@