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
17 all: doc
/ferm.txt doc
/ferm.html doc
/ferm
.1 doc
/import-ferm
.1
21 rm -f doc
/ferm.txt doc
/ferm.html doc
/{import-
,}ferm
.1 *.tmp
27 doc
/ferm.txt
: doc
/ferm.pod
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" \
38 doc
/import-ferm
.1: src
/import-ferm
39 pod2man
--section
=1 --release
="ferm $(VERSION)" \
40 --center
="FIREWALL RULES MADE EASY" \
47 STAMPDIR
= $(TOPDIR
)/build
/test
48 STAMPDIR_13
= $(TOPDIR
)/build
/test2
50 # a list of all ferm scripts which should be tested with iptables
51 FERM_SCRIPTS
= test/positive
/flush
test/positive
/multimod
test/positive
/policyorder
52 FERM_SCRIPTS
+= test/positive
/bug
test/positive
/iptables-targets
test/positive
/masqto
test/positive
/mod
test/params
/owner
test/positive
/state
test/positive
/tables2
test/positive
/TCPMSS
test/positive
/ttlset
test/positive
/ulog
test/positive
/varlists
53 FERM_SCRIPTS
+= $(wildcard test/modules
/*.ferm
) $(wildcard test/targets
/*.ferm
)
54 FERM_SCRIPTS
+= $(wildcard test/protocols
/*.ferm
) $(wildcard test/misc
/*.ferm
)
55 FERM_SCRIPTS
+= $(wildcard test/ipv6
/*.ferm
)
57 EXCLUDE_IMPORT
= test/misc
/subchain-domains.ferm
58 IMPORT_SCRIPTS
= $(filter-out $(EXCLUDE_IMPORT
),$(FERM_SCRIPTS
))
60 FERM_13_SCRIPTS
:= $(wildcard test/arptables
/*.ferm
) $(wildcard test/ebtables
/*.ferm
)
62 $(STAMPDIR
)/%.OLD
: PATCHFILE
= $(shell test -f
"test/patch/$(patsubst test/%,%,$(<)).iptables" && echo
"test/patch/$(patsubst test/%,%,$(<)).iptables" )
63 $(STAMPDIR
)/%.OLD
: % $(OLD_FERM
) test/canonical.pl
65 if
test -f
$(basename $<).result
; then cp
$(basename $<).result
$@.tmp1
; else $(PERL
) $(OLD_FERM
) $(OLD_OPTIONS
) $< >$@.tmp1
; fi
66 if
test -n
"$(PATCHFILE)"; then patch
-i
$(PATCHFILE
) $@.tmp1
; fi
67 $(PERL
) test/canonical.pl
<$@.tmp1
>$@.tmp2
70 $(STAMPDIR
)/%.NEW
: % $(NEW_FERM
) test/canonical.pl
72 $(PERL
) $(NEW_FERM
) $(NEW_OPTIONS
) $< >$@.tmp1
73 $(PERL
) test/canonical.pl
<$@.tmp1
>$@.tmp2
76 $(STAMPDIR
)/%.SAVE
: % $(NEW_FERM
)
78 $(PERL
) $(NEW_FERM
) $(NEW_OPTIONS
) --fast
$< |grep
-v
'^#' >$@
80 $(STAMPDIR
)/%.IMPORT
: $(STAMPDIR
)/%.SAVE src
/import-ferm
81 $(PERL
) src
/import-ferm
$< >$@
83 $(STAMPDIR
)/%.SAVE2
: $(STAMPDIR
)/%.IMPORT
$(NEW_FERM
)
84 $(PERL
) $(NEW_FERM
) $(NEW_OPTIONS
) --fast
$< |grep
-v
'^#' >$@
86 $(STAMPDIR
)/%.
check: %.OLD
%.NEW
90 %.check-import
: %.SAVE
%.SAVE2
94 $(STAMPDIR_13
)/%.result
: %.ferm
$(NEW_FERM
)
96 $(PERL
) $(NEW_FERM
) $(NEW_OPTIONS
) $< >$@.tmp
99 $(STAMPDIR_13
)/%.
check: %.result
$(STAMPDIR_13
)/%.result
103 .PHONY
: check-ferm check-import
check
105 check-ferm
: $(patsubst %,$(STAMPDIR
)/%.
check,$(FERM_SCRIPTS
)) $(patsubst %.ferm
,$(STAMPDIR_13
)/%.
check,$(FERM_13_SCRIPTS
))
107 check-import
: $(patsubst %,$(STAMPDIR
)/%.check-import
,$(IMPORT_SCRIPTS
))
109 check: check-ferm check-import
117 build
/ferm-
$(VERSION
).
tar.gz
: all
119 install -d
-m
755 $(DISTDIR
) $(DISTDIR
)/src
$(DISTDIR
)/doc
$(DISTDIR
)/examples
120 install -m
755 src
/{import-
,}ferm
$(DISTDIR
)/src
121 install -m
644 doc
/ferm.pod doc
/ferm.txt doc
/ferm.html doc
/{import-
,}ferm
.1 $(DISTDIR
)/doc
122 install -m
644 config.mk Makefile AUTHORS COPYING NEWS README TODO
$(DISTDIR
)
123 install -m
644 $(wildcard examples
/*.ferm
) $(DISTDIR
)/examples
124 cd build
&& tar czf ferm-
$(VERSION
).
tar.gz ferm-
$(VERSION
)
126 dist: build
/ferm-
$(VERSION
).
tar.gz
132 .PHONY
: install uninstall
135 install -d
-m
755 $(DOCDIR
)/examples
$(PREFIX
)/sbin
136 install -m
644 AUTHORS COPYING NEWS README TODO
$(DOCDIR
)
137 install -m
644 examples
/*.ferm
$(DOCDIR
)/examples
138 install -m
755 src
/{import-
,}ferm
$(PREFIX
)/sbin
/
140 install -d
-m
755 $(DOCDIR
) $(MANDIR
)
141 install -m
644 doc
/ferm.txt doc
/ferm.html
$(DOCDIR
)
142 install -m
644 doc
/{import-
,}ferm
.1 $(MANDIR
)
143 gzip
-f9
$(MANDIR
)/{import-
,}ferm
.1
147 rm -f
$(MANDIR
)/{import-
,}ferm
.1{,.gz
}
148 rm -f
$(PREFIX
)/sbin
/{import-
,}ferm
157 @echo
"Publishing tarfiles in $(WEBDIR)..."
158 rm -f
$(WEBDIR
)/$(notdir $(TARFILE
))
159 cp
$(TARFILE
) $(WEBDIR
)
161 cp doc
/ferm.html
$(WEBDIR
)
162 echo
$(VERSION
) > $(WEBDIR
)/VERSION
163 ln
-s
$(notdir $(TARFILE
)) $(WEBDIR
)/ferm.
tar.gz
164 chmod ugo
+r
$(WEBDIR
)/$(notdir $(TARFILE
)) $(WEBDIR
)/ferm.
tar.gz \
165 $(WEBDIR
)/NEWS
$(WEBDIR
)/VERSION
$(WEBDIR
)/ferm.html
169 @echo
"Publishing tarfiles in $(FTPDIR)..."
170 rm -f
$(FTPDIR
)/$(notdir $(TARFILE
))
171 cp
$(TARFILE
) $(FTPDIR
)
173 echo
$(VERSION
) > $(FTPDIR
)/VERSION
174 ln
-s
$(notdir $(TARFILE
)) $(FTPDIR
)/ferm.
tar.gz
175 chmod ugo
+r
$(FTPDIR
)/$(notdir $(TARFILE
)) $(FTPDIR
)/ferm.
tar.gz \
176 $(FTPDIR
)/NEWS
$(FTPDIR
)/VERSION
181 $(LSMFILE
): DATE
= `date '+%Y-%m-%d'`
182 $(LSMFILE
): SIZE
= $(shell du
-h
-D
$(TARFILE
) | awk
'{print $$1}')
184 @echo
"Making lsm entry file..."
186 @echo
"Title: ferm" >> $@
187 @echo
"Version: $(VERSION)" >> $@
188 @echo
"Entered-date: $(DATE)" >> $@
189 @echo
"Description: A tool for structured firewall-rule making" >> $@
190 @echo
"Keywords: iptables ipchains ipfwadm firewall rules rule" >> $@
191 @echo
"Author: sofar@foo-projects.org (A. Kok)" >> $@
192 @echo
"Maintained-by: sofar@foo-projects.org (A. Kok)" >> $@
193 @echo
"Primary-site: ferm.foo-projects.org /" >> $@
194 @echo
" $(SIZE) $(TARFILE)" >> $@
195 @echo
"Alternate-site:" >> $@
196 @echo
"Original-site:" >> $@
197 @echo
"Platforms: perl linux>=2.4" >> $@
198 @echo
"Copying-policy: GPL" >> $@
200 # @echo "Sending lsm entry..."
201 # @mailx -s "add" lsm@execpc.com < $@