1# uncomment this to get a fully statically linked version 2# NO_SHARED_LIBS = 1 3 4###################################################################### 5# YOU SHOULD NOT NEED TO TOUCH ANYTHING BELOW THIS LINE 6###################################################################### 7 8# Standard part of Makefile for topdir. 9TOPLEVEL_INCLUDED=YES 10 11ifndef KERNEL_DIR 12KERNEL_DIR=/usr/src/linux 13endif 14IPTABLES_VERSION:=1.2.7a 15OLD_IPTABLES_VERSION:=1.2.6a 16 17PREFIX:=/usr/local 18LIBDIR:=$(PREFIX)/lib 19BINDIR:=$(PREFIX)/sbin 20MANDIR:=$(PREFIX)/man 21INCDIR:=$(PREFIX)/include 22 23# directory for new iptables releases 24RELEASE_DIR:=/tmp 25 26# Need libc6 for this. FIXME: Should covert to autoconf. 27# ifeq ($(shell [ -f /usr/include/netinet/ip6.h ] && echo YES), YES) 28# DO_IPV6=1 29# endif 30 31COPT_FLAGS:=-O2 32CFLAGS:=$(COPT_FLAGS) -Wall -Wunused -I$(KERNEL_DIR)/include -Iinclude/ -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\" #-g -DDEBUG #-pg # -DIPTC_DEBUG 33 34ifdef NO_SHARED_LIBS 35CFLAGS += -DNO_SHARED_LIBS=1 36endif 37 38ifndef NO_SHARED_LIBS 39DEPFILES = $(SHARED_LIBS:%.so=%.d) 40SH_CFLAGS:=$(CFLAGS) -fPIC 41STATIC_LIBS = 42STATIC6_LIBS = 43LDFLAGS = -rdynamic 44LDLIBS = -ldl 45else 46DEPFILES = $(EXT_OBJS:%.o=%.d) 47STATIC_LIBS = extensions/libext.a 48STATIC6_LIBS = extensions/libext6.a 49LDFLAGS = -static 50LDLIBS = 51endif 52 53EXTRAS+=iptables iptables.o 54EXTRA_INSTALLS+=$(DESTDIR)$(BINDIR)/iptables $(DESTDIR)$(MANDIR)/man8/iptables.8 55 56# No longer experimental. 57EXTRAS+=iptables-save iptables-restore 58EXTRA_INSTALLS+=$(DESTDIR)$(BINDIR)/iptables-save $(DESTDIR)$(BINDIR)/iptables-restore $(DESTDIR)$(MANDIR)/man8/iptables-restore.8 $(DESTDIR)$(MANDIR)/man8/iptables-save.8 59 60ifdef DO_IPV6 61EXTRAS+=ip6tables ip6tables.o 62EXTRA_INSTALLS+=$(DESTDIR)$(BINDIR)/ip6tables $(DESTDIR)$(MANDIR)/man8/ip6tables.8 63EXTRAS_EXP+=ip6tables-save ip6tables-restore 64EXTRA_INSTALLS_EXP+=$(DESTDIR)$(BINDIR)/ip6tables-save $(DESTDIR)$(BINDIR)/ip6tables-restore # $(DESTDIR)$(MANDIR)/man8/iptables-restore.8 $(DESTDIR)$(MANDIR)/man8/iptables-save.8 $(DESTDIR)$(MANDIR)/man8/ip6tables-save.8 $(DESTDIR)$(MANDIR)/man8/ip6tables-restore.8 65endif 66 67# Sparc64 hack 68ifeq ($(shell uname -m),sparc64) 69# The kernel is 64-bit, even though userspace is 32. 70CFLAGS+=-DIPT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32 71endif 72 73# HPPA hack 74ifeq ($(shell uname -m),parisc64) 75# The kernel is 64-bit, even though userspace is 32. 76CFLAGS+=-DIPT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32 77endif 78 79ifndef IPT_LIBDIR 80IPT_LIBDIR:=$(LIBDIR)/iptables 81endif 82 83.PHONY: default 84default: print-extensions all 85 86.PHONY: print-extensions 87print-extensions: 88ifneq ($(OPTIONALS),) 89 echo Extensions found: $(OPTIONALS) 90endif 91 92iptables.o: iptables.c 93 $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $< 94 95iptables: iptables-standalone.c iptables.o $(STATIC_LIBS) libiptc/libiptc.a 96 $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) 97 98$(DESTDIR)$(BINDIR)/iptables: iptables 99 @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) 100 cp $< $@ 101 102iptables-save: iptables-save.c iptables.o $(STATIC_LIBS) libiptc/libiptc.a 103 $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) 104 105$(DESTDIR)$(BINDIR)/iptables-save: iptables-save 106 @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) 107 cp $< $@ 108 109iptables-restore: iptables-restore.c iptables.o $(STATIC_LIBS) libiptc/libiptc.a 110 $(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) 111 112$(DESTDIR)$(BINDIR)/iptables-restore: iptables-restore 113 @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) 114 cp $< $@ 115 116ip6tables.o: ip6tables.c 117 $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $< 118 119ip6tables: ip6tables-standalone.c ip6tables.o $(STATIC6_LIBS) libiptc/libiptc.a 120 $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) 121 122$(DESTDIR)$(BINDIR)/ip6tables: ip6tables 123 @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) 124 cp $< $@ 125 126ip6tables-save: ip6tables-save.c ip6tables.o $(STATIC6_LIBS) libiptc/libiptc.a 127 $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) 128 129$(DESTDIR)$(BINDIR)/ip6tables-save: ip6tables-save 130 @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) 131 cp $< $@ 132 133ip6tables-restore: ip6tables-restore.c ip6tables.o $(STATIC6_LIBS) libiptc/libiptc.a 134 $(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS) 135 136$(DESTDIR)$(BINDIR)/ip6tables-restore: ip6tables-restore 137 @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR) 138 cp $< $@ 139 140$(DESTDIR)$(MANDIR)/man8/%.8: %.8 141 @[ -d $(DESTDIR)$(MANDIR)/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/man8 142 cp $< $@ 143 144EXTRA_DEPENDS+=iptables-standalone.d iptables.d 145 146iptables-standalone.d iptables.d: %.d: %.c 147 @-$(CC) -M -MG $(CFLAGS) $< | sed -e 's@^.*\.o:@$*.d $*.o:@' > $@ 148 149 150# Development Targets 151.PHONY: install-devel-man3 152install-devel-man3: $(DEVEL_MAN3) 153 @[ -d $(DESTDIR)$(MANDIR)/man3 ] || mkdir -p $(DESTDIR)$(MANDIR)/man3 154 @cp -v $(DEVEL_MAN3) $(DESTDIR)$(MANDIR)/man3 155 156.PHONY: install-devel-headers 157install-devel-headers: $(DEVEL_HEADERS) 158 @[ -d $(DESTDIR)$(INCDIR) ] || mkdir -p $(DESTDIR)$(INCDIR) 159 @cp -v $(DEVEL_HEADERS) $(DESTDIR)$(INCDIR) 160 161.PHONY: install-devel-libs 162install-devel-libs: $(DEVEL_LIBS) 163 @[ -d $(DESTDIR)$(LIBDIR) ] || mkdir -p $(DESTDIR)$(LIBDIR) 164 @cp -v $(DEVEL_LIBS) $(DESTDIR)$(LIBDIR) 165 166.PHONY: install-devel 167install-devel: all install-devel-man3 install-devel-headers install-devel-libs 168 169.PHONY: distclean 170distclean: clean 171 @rm -f TAGS `find . -name '*~' -o -name '.*~'` `find . -name '*.rej'` `find . -name '*.d'` .makefirst 172 173# Rusty's distro magic. 174.PHONY: distrib 175distrib: check distclean delrelease $(RELEASE_DIR)/iptables-$(IPTABLES_VERSION).tar.bz2 diff md5sums # nowhitespace 176 177# Makefile must not define: 178# -g -pg -DIPTC_DEBUG 179.PHONY: check 180check: 181 @if echo $(CFLAGS) | egrep -e '-g|-pg|IPTC_DEBUG' >/dev/null; then echo Remove debugging flags; exit 1; else exit 0; fi 182 183.PHONY: nowhitespace 184nowhitespace: 185 @if grep -n '[ ]$$' `find . -name 'Makefile' -o -name '*.[ch]'`; then exit 1; else exit 0; fi 186 187.PHONY: delrelease 188delrelease: 189 rm -f $(RELEASE_DIR)/iptables-$(IPTABLES_VERSION).tar.bz2 190 191$(RELEASE_DIR)/iptables-$(IPTABLES_VERSION).tar.bz2: 192 cd .. && ln -sf userspace iptables-$(IPTABLES_VERSION) && tar cvf - --exclude CVS iptables-$(IPTABLES_VERSION)/. | bzip2 -9 > $@ && rm iptables-$(IPTABLES_VERSION) 193 194.PHONY: diff 195diff: $(RELEASE_DIR)/iptables-$(IPTABLES_VERSION).tar.bz2 196 @mkdir /tmp/diffdir 197 @cd /tmp/diffdir && tar -x --bzip2 -f $(RELEASE_DIR)/iptables-$(IPTABLES_VERSION).tar.bz2 198 @set -e; cd /tmp/diffdir; tar -x --bzip2 -f $(RELEASE_DIR)/iptables-$(OLD_IPTABLES_VERSION).tar.bz2; echo Creating patch-iptables-$(OLD_IPTABLES_VERSION)-$(IPTABLES_VERSION).bz2; diff -urN iptables-$(OLD_IPTABLES_VERSION) iptables-$(IPTABLES_VERSION) | bzip2 -9 > $(RELEASE_DIR)/patch-iptables-$(OLD_IPTABLES_VERSION)-$(IPTABLES_VERSION).bz2 199 @rm -rf /tmp/diffdir 200 201.PHONY: md5sums 202md5sums: 203 cd $(RELEASE_DIR)/ && md5sum patch-iptables-*-$(IPTABLES_VERSION).bz2 iptables-$(IPTABLES_VERSION).tar.bz2 204 205# $(wildcard) fails wierdly with make v.3.78.1. 206include $(shell echo */Makefile) 207include Rules.make 208