www.usr.com/support/gpl/USR9113_release1.0.tar.gz
[bcm963xx.git] / userapps / opensource / iptables / extensions / Makefile
1 #! /usr/bin/make
2
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)
7 #
8
9 #BRCM begin
10 #PF_EXT_SLIB:=ah connlimit connmark conntrack dscp ecn esp helper icmp iprange length limit mac mark multiport owner physdev pkttype realm rpc sctp standard state tcp tcpmss tos ttl udp unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NOTRACK REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS TRACE TTL ULOG
11 PF_EXT_SLIB:=TCPMSS 
12 ifneq ($(strip $(BRCM_KERNEL_NF_FIREWALL)),)
13 PF_EXT_SLIB+=connlimit icmp limit standard state tcp udp LOG
14 endif
15 ifneq ($(strip $(BRCM_KERNEL_NF_NAT)),)
16 PF_EXT_SLIB+=DNAT MASQUERADE REDIRECT SNAT
17 endif
18 ifneq ($(strip $(BRCM_KERNEL_NF_MANGLE)),)
19 PF_EXT_SLIB+=mark MARK FTOS
20 endif
21
22
23 #PF6_EXT_SLIB:=eui64 hl icmpv6 length limit mac mark multiport owner standard tcp udp HL LOG MARK TRACE
24
25 # Optionals
26 #PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
27 #PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
28
29 # BRCM end
30
31 PF_EXT_ALL_SLIB:=$(patsubst extensions/libipt_%.c, %, $(wildcard extensions/libipt_*.c))
32 PF6_EXT_ALL_SLIB:=$(patsubst extensions/libip6t_%.c, %, $(wildcard extensions/libip6t_*.c))
33
34 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)))
35 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)))
36 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)))
37 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
39 PF_EXT_MAN_MATCHES:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_MATCHES))
40 PF_EXT_MAN_TARGETS:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_TARGETS))
41 PF_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF_EXT_MAN_MATCHES), $(PF_EXT_MAN_ALL_MATCHES))
42 PF_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF_EXT_MAN_TARGETS), $(PF_EXT_MAN_ALL_TARGETS))
43 PF6_EXT_MAN_MATCHES:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_MATCHES))
44 PF6_EXT_MAN_TARGETS:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_TARGETS))
45 PF6_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF6_EXT_MAN_MATCHES), $(PF6_EXT_MAN_ALL_MATCHES))
46 PF6_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF6_EXT_MAN_TARGETS), $(PF6_EXT_MAN_ALL_TARGETS))
47
48
49 allman:
50         @echo ALL_SLIB: $(PF_EXT_ALL_SLIB)
51         @echo ALL_MATCH: $(PF_EXT_MAN_ALL_MATCHES)
52         @echo ALL_TARGET: $(PF_EXT_MAN_ALL_TARGETS)
53
54 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
55 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
56
57 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
58 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
59
60 ifndef NO_SHARED_LIBS
61 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
62 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
63
64 ifeq ($(DO_IPV6), 1)
65 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
66 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
67 endif
68 else    # NO_SHARED_LIBS
69 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
70 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
71 EXT_OBJS+= extensions/initext.o
72 ifeq ($(DO_IPV6), 1)
73 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
74 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
75 EXT6_OBJS+= extensions/initext6.o
76 endif   # DO_IPV6
77 endif   # NO_SHARED_LIBS
78
79 ifndef TOPLEVEL_INCLUDED
80 local:
81         cd .. && $(MAKE) $(SHARED_LIBS)
82 endif
83
84 ifdef NO_SHARED_LIBS
85 # BRCM begin
86 extensions/libext.a: $(EXT_OBJS)
87 #       rm -f $@; ar crv $@ $(EXT_OBJS)
88         rm -f $@; $(AR) crv $@ $(EXT_OBJS)
89
90 extensions/libext6.a: $(EXT6_OBJS)
91 #       rm -f $@; ar crv $@ $(EXT6_OBJS)
92         rm -f $@; $(AR) crv $@ $(EXT6_OBJS)
93 # BRCM end
94
95 extensions/initext.o: extensions/initext.c
96 extensions/initext6.o: extensions/initext6.c
97
98 extensions/initext.c: extensions/Makefile
99         echo "" > $@
100         for i in $(EXT_FUNC); do \
101                 echo "extern void $${i}_init(void);" >> $@; \
102         done
103         echo "void init_extensions(void) {" >> $@
104         for i in $(EXT_FUNC); do \
105                 echo "  $${i}_init();" >> $@; \
106         done
107         echo "}" >> $@
108
109 extensions/initext6.c: extensions/Makefile
110         echo "" > $@
111         for i in $(EXT6_FUNC); do \
112                 echo "extern void $${i}_init(void);" >> $@; \
113         done
114         echo "void init_extensions(void) {" >> $@
115         for i in $(EXT6_FUNC); do \
116                 echo "  $${i}_init();" >> $@; \
117         done
118         echo "}" >> $@
119
120 extensions/lib%.o: extensions/lib%.c
121         $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
122
123 endif
124  
125 EXTRAS += extensions/libipt_targets.man
126 extensions/libipt_targets.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_TARGETS))
127         @for ext in $(PF_EXT_MAN_TARGETS); do \
128             echo ".SS $$ext" ;\
129             cat extensions/libipt_$$ext.man ;\
130         done >extensions/libipt_targets.man
131         @if [ -n "$(PF_EXT_MAN_EXTRA_TARGETS)" ]; then \
132             extra=$(PF_EXT_MAN_EXTRA_TARGETS) ;\
133             for ext in $${extra:-""}; do \
134                 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
135                 cat extensions/libipt_$$ext.man ;\
136             done ;\
137         fi >>extensions/libipt_targets.man
138
139 EXTRAS += extensions/libipt_matches.man
140 extensions/libipt_matches.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_MATCHES))
141         @for ext in $(PF_EXT_MAN_MATCHES); do \
142             echo ".SS $$ext" ;\
143             cat extensions/libipt_$$ext.man ;\
144         done >extensions/libipt_matches.man
145         @if [ -n "$(PF_EXT_MAN_EXTRA_MATCHES)" ]; then \
146             extra=$(PF_EXT_MAN_EXTRA_MATCHES) ;\
147             for ext in $${extra:-""}; do \
148                 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
149                 cat extensions/libipt_$$ext.man ;\
150             done ;\
151         fi >>extensions/libipt_matches.man
152
153 EXTRAS += extensions/libip6t_targets.man
154 extensions/libip6t_targets.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_TARGETS))
155         @for ext in $(PF6_EXT_MAN_TARGETS); do \
156             echo ".SS $$ext" ;\
157             cat extensions/libip6t_$$ext.man ;\
158         done >extensions/libip6t_targets.man
159         @if [ -n "$(PF6_EXT_MAN_EXTRA_TARGETS)" ]; then \
160             extra=$(PF6_EXT_MAN_EXTRA_TARGETS) ;\
161             for ext in $${extra:-""}; do \
162                 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
163                 cat extensions/libip6t_$$ext.man ;\
164             done ;\
165         fi >>extensions/libip6t_targets.man
166
167 EXTRAS += extensions/libip6t_matches.man
168 extensions/libip6t_matches.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_MATCHES))
169         @for ext in $(PF6_EXT_MAN_MATCHES); do \
170             echo ".SS $$ext" ;\
171             cat extensions/libip6t_$$ext.man ;\
172         done >extensions/libip6t_matches.man
173         @if [ -n "$(PF6_EXT_MAN_EXTRA_MATCHES)" ]; then \
174             extra=$(PF6_EXT_MAN_EXTRA_MATCHES) ;\
175             for ext in $${extra:-""}; do \
176                 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
177                 cat extensions/libip6t_$$ext.man ;\
178             done ;\
179         fi >>extensions/libip6t_matches.man
180
181 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
182         @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
183         cp $< $@
184
185 $(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
186         @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
187         cp $< $@