6 include $(TOPDIR
)/config.mk
8 VERSION
:= $(shell $(PERL
) src
/ferm
--version | awk
'{print $$2}' | head
-1 | tr
-d
',')
10 DISTDIR
= build
/ferm-
$(VERSION
)
14 all: doc
/ferm.txt doc
/ferm.html doc
/ferm
.1 doc
/import-ferm
.1
18 rm -f doc
/ferm.txt doc
/ferm.html doc
/ferm
.1 doc
/import-ferm
.1 *.tmp
24 doc
/ferm.txt
: doc
/ferm.pod
27 doc
/ferm.html
: doc
/ferm.pod
28 pod2html
$< --title
="ferm - Firewall rules made easy" --flush
> $@
30 doc
/ferm
.1: doc
/ferm.pod
31 pod2man
--section
=1 --release
="ferm $(VERSION)" \
32 --center
="FIREWALL RULES MADE EASY" \
35 doc
/import-ferm
.1: src
/import-ferm
36 pod2man
--section
=1 --release
="ferm $(VERSION)" \
37 --center
="FIREWALL RULES MADE EASY" \
44 STAMPDIR
= $(TOPDIR
)/build
/test
45 STAMPDIR_20
= $(TOPDIR
)/build
/test2
47 # a list of all ferm scripts which should be tested with iptables
49 FERM_SCRIPTS
+= $(wildcard test/modules
/*.ferm
) $(wildcard test/targets
/*.ferm
)
50 FERM_SCRIPTS
+= $(wildcard test/protocols
/*.ferm
) $(wildcard test/misc
/*.ferm
)
51 FERM_SCRIPTS
+= $(wildcard test/glob
/*.ferm
)
52 FERM_SCRIPTS
+= $(wildcard test/ipv6
/*.ferm
)
53 FERM_SCRIPTS
+= $(wildcard test/arptables
/*.ferm
) $(wildcard test/ebtables
/*.ferm
)
55 EXCLUDE_IMPORT
= test/misc
/subchain-domains.ferm
test/misc
/ipfilter.ferm
test/ipv6
/mixed.ferm
test/misc
/address-magic.ferm
56 IMPORT_SCRIPTS
= $(filter-out $(EXCLUDE_IMPORT
) test/arptables
/% test/ebtables
/%,$(FERM_SCRIPTS
))
59 RESULT_SED
+= -e
's,--protocol,-p,g'
60 RESULT_SED
+= -e
's,--in-interface,-i,g'
61 RESULT_SED
+= -e
's,--out-interface,-o,g'
62 RESULT_SED
+= -e
's,--destination ,-d ,g'
63 RESULT_SED
+= -e
's,--source ,-s ,g'
64 RESULT_SED
+= -e
's,--match ,-m ,g'
65 RESULT_SED
+= -e
's,--jump,-j,g'
66 RESULT_SED
+= -e
's,--goto,-g,g'
67 RESULT_SED
+= -e
's,--fragment,-f,g'
69 EB_ARP_RESULT_SED
= -e
's,--jump,-j,g'
71 $(STAMPDIR
)/test/arptables
/%.result
: test/arptables
/%.ferm src
/ferm
73 $(PERL
) src
/ferm
--test --slow
$< |sed
$(EB_ARP_RESULT_SED
) >$@
75 $(STAMPDIR
)/test/ebtables
/%.result
: test/ebtables
/%.ferm src
/ferm
77 $(PERL
) src
/ferm
--test --slow
$< |sed
$(EB_ARP_RESULT_SED
) >$@
79 $(STAMPDIR
)/%.result
: %.ferm src
/ferm
test/sort.pl
81 $(PERL
) src
/ferm
--test --slow
--noflush
$< |
$(PERL
) test/sort.pl |sed
$(RESULT_SED
) >$@
83 $(STAMPDIR
)/%.SAVE
: %.ferm src
/ferm
test/sort.pl
85 $(PERL
) src
/ferm
--test $< |
$(PERL
) test/sort.pl
>$@
87 $(STAMPDIR
)/test/ipv6
/%.IMPORT
: export FERM_DOMAIN
=ip6
88 $(STAMPDIR
)/%.IMPORT
: $(STAMPDIR
)/%.SAVE src
/import-ferm
89 $(PERL
) src
/import-ferm
$< >$@
91 $(STAMPDIR
)/%.SAVE2
: $(STAMPDIR
)/%.IMPORT src
/ferm
test/sort.pl
92 $(PERL
) src
/ferm
--test --fast
$< |
$(PERL
) test/sort.pl
>$@
94 $(STAMPDIR
)/%.
sort: %.result
test/sort.pl
96 $(PERL
) test/sort.pl
<$< >$@
98 $(STAMPDIR
)/%.
check: $(STAMPDIR
)/%.
sort $(STAMPDIR
)/%.result
102 $(STAMPDIR
)/%.check-import
: $(STAMPDIR
)/%.SAVE
$(STAMPDIR
)/%.SAVE2
106 .PHONY
: check-ferm check-import
check
108 check-ferm
: $(patsubst %.ferm
,$(STAMPDIR
)/%.
check,$(FERM_SCRIPTS
))
110 check-import
: $(patsubst %.ferm
,$(STAMPDIR
)/%.check-import
,$(IMPORT_SCRIPTS
))
112 check: check-ferm check-import
113 @echo
"All ferm unit tests finished successfully."
121 build
/ferm-
$(VERSION
).
tar.gz
: all
123 install -d
-m
755 $(DISTDIR
) $(DISTDIR
)/src
$(DISTDIR
)/doc
$(DISTDIR
)/examples
124 install -m
755 src
/ferm src
/import-ferm
$(DISTDIR
)/src
125 install -m
644 ferm.service
$(DISTDIR
)
126 install -m
644 doc
/ferm.pod doc
/ferm.txt doc
/ferm.html doc
/ferm
.1 doc
/import-ferm
.1 $(DISTDIR
)/doc
127 install -m
644 config.mk Makefile AUTHORS COPYING NEWS README.rst TODO
$(DISTDIR
)
128 install -m
644 $(wildcard examples
/*.ferm
) $(DISTDIR
)/examples
129 cd build
&& tar czf ferm-
$(VERSION
).
tar.gz ferm-
$(VERSION
)
131 dist: build
/ferm-
$(VERSION
).
tar.gz
137 .PHONY
: install uninstall
140 install -d
-m
755 $(DOCDIR
)/examples
$(PREFIX
)/sbin
$(SERVICEDIR
)
141 install -m
644 AUTHORS COPYING NEWS README.rst TODO
$(DOCDIR
)
142 install -m
644 examples
/*.ferm
$(DOCDIR
)/examples
143 install -m
755 src
/ferm src
/import-ferm
$(PREFIX
)/sbin
/
144 install -m
644 ferm.service
$(SERVICEDIR
)
146 install -d
-m
755 $(DOCDIR
) $(MANDIR
)
147 install -m
644 doc
/ferm.txt doc
/ferm.html
$(DOCDIR
)
148 install -m
644 doc
/ferm
.1 doc
/import-ferm
.1 $(MANDIR
)
149 gzip
-f9
$(MANDIR
)/ferm
.1 $(MANDIR
)/import-ferm
.1
153 rm -f
$(MANDIR
)/ferm
.1 $(MANDIR
)/import-ferm
.1
154 rm -f
$(SERVICEDIR
)/ferm.service
155 rm -f
$(PREFIX
)/sbin
/ferm
$(PREFIX
)/sbin
/import-ferm
163 upload
: doc
/ferm.html
164 scp NEWS doc
/ferm.html foo-projects.org
:/var
/www
/ferm.foo-projects.org
/download
/2.4/
165 scp examples
/*.ferm foo-projects.org
:/var
/www
/ferm.foo-projects.org
/download
/examples
/