--- iptables-1.4.0/Makefile +++ iptables-1.4.0/Makefile @@ -102,14 +102,45 @@ default: print-extensions all print-extensions: @[ -n "$(OPTIONALS)" ] && echo Extensions found: $(OPTIONALS) +EXTRAS+=libiptables.a +EXTRAS+=libiptables.so +EXTRAS+=libip6tables.a +EXTRAS+=libip6tables.so +DEVEL_LIBS+=libiptables.a +DEVEL_LIBS+=libiptables.so.0.0 +DEVEL_LIBS+=libip6tables.a +DEVEL_LIBS+=libip6tables.so.0.0 + +libiptables.a: libiptables.a(iptables.o xtables.o) +libiptables.so: iptables_sh.o xtables_sh.o + +libiptables.so: libiptc/libiptc.so + $(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libiptables.so.0.0 -o $@.0.0 $^ \ + libiptc/libiptc.so -ldl + ln -s libiptables.so.0.0 $@ + +libip6tables.a: libip6tables.a(ip6tables.o) +libip6tables.so: ip6tables_sh.o + +libip6tables.so: libiptc/libiptc.so libiptables.so + $(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libip6tables.so.0.0 -o $@.0.0 $^ \ + libiptc/libiptc.so libiptables.so -ldl + ln -s libip6tables.so.0.0 $@ + iptables.o: iptables.c $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $< ifeq ($(DO_MULTI), 1) -iptables: iptables-multi.c iptables-save.c iptables-restore.c iptables-xml.c iptables-standalone.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a +iptables: iptables-multi.c iptables-save.c iptables-restore.c iptables-xml.c iptables-standalone.c iptables.o $(STATIC_LIBS) libiptc/libiptc.a $(CC) $(CFLAGS) -DIPTABLES_MULTI -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) else -iptables: iptables-standalone.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a +xtables_sh.o: xtables.c + $(CC) $(SH_CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $< + +iptables_sh.o: iptables.c + $(CC) $(SH_CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $< + +iptables: iptables-standalone.c $(STATIC_LIBS) libiptables.so libiptc/libiptc.so $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) endif @@ -117,7 +148,7 @@ $(DESTDIR)$(BINDIR)/iptables: iptables @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) cp $< $@ -iptables-save: iptables-save.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a +iptables-save: iptables-save.c $(STATIC_LIBS) libiptables.so libiptc/libiptc.so $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) ifeq ($(DO_MULTI), 1) @@ -130,7 +161,7 @@ $(DESTDIR)$(BINDIR)/iptables-save: iptables-save cp $< $@ endif -iptables-restore: iptables-restore.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a +iptables-restore: iptables-restore.c $(STATIC_LIBS) libiptables.so libiptc/libiptc.so $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) ifeq ($(DO_MULTI), 1) @@ -160,10 +191,13 @@ ip6tables.o: ip6tables.c $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $< ifeq ($(DO_MULTI), 1) -ip6tables: ip6tables-multi.c ip6tables-save.c ip6tables-restore.c ip6tables-standalone.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a +ip6tables: ip6tables-multi.c ip6tables-save.c ip6tables-restore.c ip6tables-standalone.c ip6tables.o $(STATIC6_LIBS) libiptables.so libiptc/libiptc.so $(CC) $(CFLAGS) -DIPTABLES_MULTI -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) else -ip6tables: ip6tables-standalone.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a +ip6tables_sh.o: ip6tables.c + $(CC) $(SH_CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $< + +ip6tables: ip6tables-standalone.c $(STATIC6_LIBS) libiptables.so libip6tables.so libiptc/libiptc.so $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) endif @@ -171,7 +205,7 @@ $(DESTDIR)$(BINDIR)/ip6tables: ip6tables @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) cp $< $@ -ip6tables-save: ip6tables-save.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a +ip6tables-save: ip6tables-save.c $(STATIC6_LIBS) libiptables.so libip6tables.so libiptc/libiptc.so $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) ifeq ($(DO_MULTI), 1) @@ -184,7 +218,7 @@ $(DESTDIR)$(BINDIR)/ip6tables-save: ip6tables-save cp $< $@ endif -ip6tables-restore: ip6tables-restore.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a +ip6tables-restore: ip6tables-restore.c $(STATIC6_LIBS) libiptables.so libip6tables.so libiptc/libiptc.so $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) ifeq ($(DO_MULTI), 1) --- iptables-1.4.0/Rules.make +++ iptables-1.4.0/Rules.make @@ -30,8 +30,14 @@ $(SHARED_LIBS:%.so=%.d): %.d: %.c @-$(CC) -M -MG $(CFLAGS) $< | \ sed -e 's@^.*\.o:@$*.d $*_sh.o:@' > $@ -$(SHARED_LIBS): %.so : %_sh.o - $(CC) -shared $(EXT_LDFLAGS) -o $@ $< +$(IPv4_SHARED_LIBS): %.so : %_sh.o libiptables.so + $(CC) -shared $(EXT_LDFLAGS) -o $@ $< -L. -liptables + +$(IPv6_SHARED_LIBS): %.so : %_sh.o libiptables.so libip6tables.so + $(CC) -shared $(EXT_LDFLAGS) -o $@ $< -L. -liptables -lip6tables + +$(XT_SHARED_LIBS): %.so : %_sh.o libiptables.so + $(CC) -shared $(EXT_LDFLAGS) -o $@ $< -L. -liptables $(SHARED_SE_LIBS:%.so=%.d): %.d: %.c @-$(CC) -M -MG $(CFLAGS) $< | \ --- iptables-1.4.0/extensions/Makefile +++ iptables-1.4.0/extensions/Makefile @@ -128,19 +128,22 @@ 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) +IPv4_SHARED_LIBS:=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so) +SHARED_LIBS+=$(IPv4_SHARED_LIBS) SHARED_SE_LIBS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).so) EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DEST_IPT_LIBDIR)/libipt_$(T).so) EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libipt_$(T).so) ifeq ($(DO_IPV6), 1) -SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so) +IPv6_SHARED_LIBS:=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so) +SHARED_LIBS+=$(IPv6_SHARED_LIBS) SHARED_SE_LIBS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).so) EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DEST_IPT_LIBDIR)/libip6t_$(T).so) EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libip6t_$(T).so) endif -SHARED_LIBS+=$(foreach T,$(PFX_EXT_SLIB),extensions/libxt_$(T).so) +XT_SHARED_LIBS:=$(foreach T,$(PFX_EXT_SLIB),extensions/libxt_$(T).so) +SHARED_LIBS+=$(XT_SHARED_LIBS) SHARED_SE_LIBS+=$(foreach T,$(PFX_EXT_SE_SLIB),extensions/libxt_$(T).so) EXTRA_INSTALLS+=$(foreach T, $(PFX_EXT_SLIB), $(DEST_IPT_LIBDIR)/libxt_$(T).so) EXTRA_INSTALLS+=$(foreach T, $(PFX_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libxt_$(T).so) --- iptables-1.4.0/libipq/Makefile +++ iptables-1.4.0/libipq/Makefile @@ -1,6 +1,7 @@ #! /usr/bin/make EXTRAS+=libipq/libipq.a +EXTRAS+=libipq/libipq.so #CFLAGS+=-DDEBUG_LIBIPTQ DEVEL_MAN3+=libipq/ipq_create_handle.3 \ @@ -16,6 +17,7 @@ DEVEL_MAN3+=libipq/ipq_create_handle.3 \ libipq/libipq.3 DEVEL_LIBS+=libipq/libipq.a +DEVEL_LIBS+=libipq/libipq.so.0.0 DEVEL_HEADERS+=include/libipq/libipq.h @@ -24,5 +26,10 @@ local: cd .. && $(MAKE) $(SHARED_LIBS) $(EXTRAS) else libipq/libipq.a: libipq/libipq.a(libipq/libipq.o) +libipq/libipq.so: libipq/libipq_sh.o + +libipq/libipq.so: + $(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libipq.so.0.0 -o $@.0.0 $^ + ln -s libipq.so.0.0 $@ endif --- iptables-1.4.0/libiptc/Makefile +++ iptables-1.4.0/libiptc/Makefile @@ -1,9 +1,12 @@ #! /usr/bin/make EXTRAS+=libiptc/libiptc.a +EXTRAS+=libiptc/libiptc.so # libiptc is not a public interface and therefore not installed # DEVEL_LIBS+=libiptc/libiptc.a +DEVEL_LIBS+=libiptc/libiptc.a +DEVEL_LIBS+=libiptc/libiptc.so.0.0 ifndef TOPLEVEL_INCLUDED local: @@ -13,12 +16,18 @@ else EXTRA_DEPENDS+=libiptc/libip4tc.d libiptc/libiptc.a: libiptc/libiptc.a(libiptc/libip4tc.o) +libiptc/libiptc.so: libiptc/libip4tc_sh.o ifeq ($(DO_IPV6), 1) EXTRA_DEPENDS+= libiptc/libip6tc.d libiptc/libiptc.a: libiptc/libiptc.a(libiptc/libip6tc.o) +libiptc/libiptc.so: libiptc/libip6tc_sh.o endif +libiptc/libiptc.so: + $(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libiptc.so.0.0 -o $@.0.0 $^ + ln -s libiptc.so.0.0 $@ + libiptc/libip4tc.d libiptc/libip6tc.d: %.d: %.c @-$(CC) -M -MG $(CFLAGS) $< | sed -e 's@^.*\.o:@$*.d libiptc/libiptc.a($*.o):@' > $@ endif