iptables-1.2.9-2.3.1.src.rpm
[iptables.git] / 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 PF_EXT_SLIB:=ah connlimit connmark conntrack dscp ecn esp helper icmp iprange length limit mac mark multiport owner physdev pkttype realm rpc 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
9 PF6_EXT_SLIB:=eui64 hl icmpv6 length limit mac mark multiport owner standard tcp udp HL LOG MARK TRACE
10
11 # Optionals
12 PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
13 PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
14
15 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
16 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
17
18 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
19 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
20
21 ifndef NO_SHARED_LIBS
22 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
23 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
24
25 ifeq ($(DO_IPV6), 1)
26 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
27 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
28 endif
29 else    # NO_SHARED_LIBS
30 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
31 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
32 EXT_OBJS+= extensions/initext.o
33 ifeq ($(DO_IPV6), 1)
34 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
35 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
36 EXT6_OBJS+= extensions/initext6.o
37 endif   # DO_IPV6
38 endif   # NO_SHARED_LIBS
39
40 ifndef TOPLEVEL_INCLUDED
41 local:
42         cd .. && $(MAKE) $(SHARED_LIBS)
43 endif
44
45 ifdef NO_SHARED_LIBS
46 extensions/libext.a: $(EXT_OBJS)
47         rm -f $@; ar crv $@ $(EXT_OBJS)
48
49 extensions/libext6.a: $(EXT6_OBJS)
50         rm -f $@; ar crv $@ $(EXT6_OBJS)
51
52 extensions/initext.o: extensions/initext.c
53 extensions/initext6.o: extensions/initext6.c
54
55 extensions/initext.c: extensions/Makefile
56         echo "" > $@
57         for i in $(EXT_FUNC); do \
58                 echo "extern void $${i}_init(void);" >> $@; \
59         done
60         echo "void init_extensions(void) {" >> $@
61         for i in $(EXT_FUNC); do \
62                 echo "  $${i}_init();" >> $@; \
63         done
64         echo "}" >> $@
65
66 extensions/initext6.c: extensions/Makefile
67         echo "" > $@
68         for i in $(EXT6_FUNC); do \
69                 echo "extern void $${i}_init(void);" >> $@; \
70         done
71         echo "void init_extensions(void) {" >> $@
72         for i in $(EXT6_FUNC); do \
73                 echo "  $${i}_init();" >> $@; \
74         done
75         echo "}" >> $@
76
77 extensions/lib%.o: extensions/lib%.c
78         $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
79
80 endif
81  
82 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
83         @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
84         cp $< $@
85
86 $(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
87         @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
88         cp $< $@