summaryrefslogtreecommitdiffstats
path: root/extensions/Makefile
diff options
context:
space:
mode:
authorlaforge <laforge>2001-08-06 18:50:21 +0000
committerlaforge <laforge>2001-08-06 18:50:21 +0000
commita1187fff744cf407c010fb52a482950d958dbf02 (patch)
treed7a51c0752b5a80c8408692277f2b660ce4dfc2b /extensions/Makefile
parente23a23bf42e4a963e39c7a858351aacb109e0b8b (diff)
- added patch to support statically linking of iptables
- iptables-save/-restore is no longer experimental
Diffstat (limited to 'extensions/Makefile')
-rw-r--r--extensions/Makefile46
1 files changed, 46 insertions, 0 deletions
diff --git a/extensions/Makefile b/extensions/Makefile
index d7b6173..e420aeb 100644
--- a/extensions/Makefile
+++ b/extensions/Makefile
@@ -16,6 +16,7 @@ PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
+ifndef NO_SHARED_LIBS
SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
@@ -23,12 +24,57 @@ ifdef DO_IPV6
SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
endif
+else # NO_SHARED_LIBS
+EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
+EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
+EXT_OBJS+= extensions/initext.o
+EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
+EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
+EXT6_OBJS+= extensions/initext6.o
+endif
ifndef TOPLEVEL_INCLUDED
local:
cd .. && $(MAKE) $(SHARED_LIBS)
endif
+ifdef NO_SHARED_LIBS
+extensions/libext.a: $(EXT_OBJS)
+ rm -f $@; ar crv $@ $(EXT_OBJS)
+
+extensions/libext6.a: $(EXT6_OBJS)
+ rm -f $@; ar crv $@ $(EXT6_OBJS)
+
+extensions/initext.o: extensions/initext.c
+extensions/initext6.o: extensions/initext6.c
+
+extensions/initext.c: extensions/Makefile
+ echo "" > $@
+ for i in $(EXT_FUNC); do \
+ echo "extern void $${i}_init(void);" >> $@; \
+ done
+ echo "void init_extensions(void) {" >> $@
+ for i in $(EXT_FUNC); do \
+ echo " $${i}_init();" >> $@; \
+ done
+ echo "}" >> $@
+
+extensions/initext6.c: extensions/Makefile
+ echo "" > $@
+ for i in $(EXT6_FUNC); do \
+ echo "extern void $${i}_init(void);" >> $@; \
+ done
+ echo "void init_extensions(void) {" >> $@
+ for i in $(EXT6_FUNC); do \
+ echo " $${i}_init();" >> $@; \
+ done
+ echo "}" >> $@
+
+extensions/lib%.o: extensions/lib%.c
+ $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
+
+endif
+
$(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
@[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
cp $< $@