removed the Makefile targets www, ftp, pub, lsm
[ferm.git] / Makefile
blobfdf39d291eb435b95262eee21f15fe7ee95e3357
2 # Makefile for ferm
5 TOPDIR = .
6 include $(TOPDIR)/config.mk
8 VERSION := $(shell $(PERL) src/ferm --version | awk '{print $$2}' | head -1 | tr -d ',')
10 DISTDIR = build/ferm-$(VERSION)
12 TARFILE = build/ferm-${VERSION}.tar.gz
13 LSMFILE = build/ferm-${VERSION}.lsm
15 .PHONY: all clean
17 all: doc/ferm.txt doc/ferm.html doc/ferm.1 doc/import-ferm.1
19 clean:
20 rm -rf build
21 rm -f doc/ferm.txt doc/ferm.html doc/{import-,}ferm.1 *.tmp
24 # documentation
27 doc/ferm.txt: doc/ferm.pod
28 pod2text $< > $@
30 doc/ferm.html: doc/ferm.pod
31 pod2html $< --netscape --flush > $@
33 doc/ferm.1: doc/ferm.pod
34 pod2man --section=1 --release="ferm $(VERSION)" \
35 --center="FIREWALL RULES MADE EASY" \
36 --official $< > $@
38 doc/import-ferm.1: src/import-ferm
39 pod2man --section=1 --release="ferm $(VERSION)" \
40 --center="FIREWALL RULES MADE EASY" \
41 --official $< > $@
44 # test suite
47 STAMPDIR = $(TOPDIR)/build/test
48 STAMPDIR_20 = $(TOPDIR)/build/test2
50 # a list of all ferm scripts which should be tested with iptables
51 FERM_SCRIPTS =
52 FERM_SCRIPTS += $(wildcard test/modules/*.ferm) $(wildcard test/targets/*.ferm)
53 FERM_SCRIPTS += $(wildcard test/protocols/*.ferm) $(wildcard test/misc/*.ferm)
54 FERM_SCRIPTS += $(wildcard test/ipv6/*.ferm)
55 FERM_SCRIPTS += $(wildcard test/arptables/*.ferm) $(wildcard test/ebtables/*.ferm)
57 EXCLUDE_IMPORT = test/misc/subchain-domains.ferm
58 IMPORT_SCRIPTS = $(filter-out $(EXCLUDE_IMPORT) test/arptables/% test/ebtables/%,$(FERM_SCRIPTS))
60 # just a hack
61 RESULT_SED += -e 's,--protocol,-p,g'
62 RESULT_SED += -e 's,--in-interface,-i,g'
63 RESULT_SED += -e 's,--out-interface,-o,g'
64 RESULT_SED += -e 's,--destination ,-d ,g'
65 RESULT_SED += -e 's,--source ,-s ,g'
66 RESULT_SED += -e 's,--match,-m,g'
67 RESULT_SED += -e 's,--jump,-j,g'
68 RESULT_SED += -e 's,--goto,-g,g'
69 RESULT_SED += -e 's,--fragment,-f,g'
71 EB_ARP_RESULT_SED = -e 's,--jump,-j,g'
73 $(STAMPDIR)/test/arptables/%.result: test/arptables/%.ferm src/ferm
74 @mkdir -p $(dir $@)
75 $(PERL) src/ferm --test $< |sed $(EB_ARP_RESULT_SED) >$@
77 $(STAMPDIR)/test/ebtables/%.result: test/ebtables/%.ferm src/ferm
78 @mkdir -p $(dir $@)
79 $(PERL) src/ferm --test $< |sed $(EB_ARP_RESULT_SED) >$@
81 $(STAMPDIR)/%.result: %.ferm src/ferm
82 @mkdir -p $(dir $@)
83 $(PERL) src/ferm --test --noflush $< |sed $(RESULT_SED) >$@
85 $(STAMPDIR)/%.SAVE: %.ferm src/ferm
86 @mkdir -p $(dir $@)
87 $(PERL) src/ferm --test --fast $< >$@.tmp
88 grep -v '^#' <$@.tmp >$@
90 $(STAMPDIR)/test/ipv6/%.IMPORT: export FERM_DOMAIN=ip6
91 $(STAMPDIR)/%.IMPORT: $(STAMPDIR)/%.SAVE src/import-ferm
92 $(PERL) src/import-ferm $< >$@
94 $(STAMPDIR)/%.SAVE2: $(STAMPDIR)/%.IMPORT src/ferm
95 $(PERL) src/ferm --test --fast $< |grep -v '^#' >$@
97 $(STAMPDIR)/%.check: %.result $(STAMPDIR)/%.result
98 diff -u $^
99 @touch $@
101 $(STAMPDIR)/%.check-import: $(STAMPDIR)/%.SAVE $(STAMPDIR)/%.SAVE2
102 diff -u $^
103 @touch $@
105 .PHONY : check-ferm check-import check
107 check-ferm: $(patsubst %.ferm,$(STAMPDIR)/%.check,$(FERM_SCRIPTS))
109 check-import: $(patsubst %.ferm,$(STAMPDIR)/%.check-import,$(IMPORT_SCRIPTS))
111 check: check-ferm check-import
114 # distribution
117 .PHONY: dist
119 build/ferm-$(VERSION).tar.gz: all
120 rm -rf $(DISTDIR)
121 install -d -m 755 $(DISTDIR) $(DISTDIR)/src $(DISTDIR)/doc $(DISTDIR)/examples
122 install -m 755 src/{import-,}ferm $(DISTDIR)/src
123 install -m 644 doc/ferm.pod doc/ferm.txt doc/ferm.html doc/{import-,}ferm.1 $(DISTDIR)/doc
124 install -m 644 config.mk Makefile AUTHORS COPYING NEWS README TODO $(DISTDIR)
125 install -m 644 $(wildcard examples/*.ferm) $(DISTDIR)/examples
126 cd build && tar czf ferm-$(VERSION).tar.gz ferm-$(VERSION)
128 dist: build/ferm-$(VERSION).tar.gz
131 # installation
134 .PHONY: install uninstall
136 install: all
137 install -d -m 755 $(DOCDIR)/examples $(PREFIX)/sbin
138 install -m 644 AUTHORS COPYING NEWS README TODO $(DOCDIR)
139 install -m 644 examples/*.ferm $(DOCDIR)/examples
140 install -m 755 src/{import-,}ferm $(PREFIX)/sbin/
142 install -d -m 755 $(DOCDIR) $(MANDIR)
143 install -m 644 doc/ferm.txt doc/ferm.html $(DOCDIR)
144 install -m 644 doc/{import-,}ferm.1 $(MANDIR)
145 gzip -f9 $(MANDIR)/{import-,}ferm.1
147 uninstall:
148 rm -rf $(DOCDIR)
149 rm -f $(MANDIR)/{import-,}ferm.1{,.gz}
150 rm -f $(PREFIX)/sbin/{import-,}ferm
153 # misc targets
156 .PHONY: upload