Makefie: Give the main build the silent treatment.
[firewall] / Makefile
1 ### -*-makefile-*-
2 ###
3 ### Makefile for firewall scripts
4 ###
5 ### (c) 2008 Mark Wooding
6 ###
7
8 ###----- Licensing notice ---------------------------------------------------
9 ###
10 ### This program is free software; you can redistribute it and/or modify
11 ### it under the terms of the GNU General Public License as published by
12 ### the Free Software Foundation; either version 2 of the License, or
13 ### (at your option) any later version.
14 ###
15 ### This program is distributed in the hope that it will be useful,
16 ### but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ### GNU General Public License for more details.
19 ###
20 ### You should have received a copy of the GNU General Public License
21 ### along with this program; if not, write to the Free Software Foundation,
22 ### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 ### Makefile for firewall scripts
24
25 ###--------------------------------------------------------------------------
26 ### Preamble.
27
28 ## Extend these variables in `local.mk' to match your site.
29 MAIN_M4_SOURCES =
30 HOSTS =
31
32 SCRIPTS =
33
34 default: all
35 .PHONY: default
36
37 ###--------------------------------------------------------------------------
38 ### Clever silent-rules stuff.
39
40 ## Verbosity switch.
41 V = 0
42
43 ## Suppressing command output.
44 V_AT = $(V_AT_$V)
45 V_AT_0 = @
46 V_AT_1 =
47
48 ## Replacing them with messages.
49 v_echo = $(call v_echo_$V,$1)
50 v_echo_0 = @printf " %-6s %s\n" "$1" "$@";
51 v_echo_1 =
52
53 ## Hacking.
54 empty =
55 space = $(empty) $(empty)
56
57 ## Specific commands.
58 V_M4 = $(call v_echo,M4)m4 -P$(space)
59 V_GEN = $(call v_echo,GEN)
60
61 ###--------------------------------------------------------------------------
62 ### Local configuration.
63
64 ## Should set up HOSTS and add stuff to MAIN_M4_SOURCES if necessary. Feel
65 ## free to define additional targets here.
66 include local.mk
67
68 ###--------------------------------------------------------------------------
69 ### Configuration.
70
71 ## The main m4 inputs which construct the firewall. These are read in last
72 ## to allow local configuration to change their environments.
73 MAIN_M4_SOURCES += config.m4
74 MAIN_M4_SOURCES += prologue.m4
75 MAIN_M4_SOURCES += functions.m4
76 MAIN_M4_SOURCES += numbers.m4
77 MAIN_M4_SOURCES += bookends.m4
78 MAIN_M4_SOURCES += classify.m4
79 MAIN_M4_SOURCES += icmp.m4
80
81 ## All of our m4 inputs. The base gets read first to set things up.
82 M4_SOURCES = base.m4
83 M4_SOURCES += $(MAIN_M4_SOURCES)
84
85 ###--------------------------------------------------------------------------
86 ### Hosts.
87
88 TARGETS = $(addsuffix .sh,$(HOSTS))
89
90 ###--------------------------------------------------------------------------
91 ### Building.
92
93 all: $(TARGETS)
94 .PHONY: all
95
96 %.sh: %.m4 $(M4_SOURCES)
97 $(V_M4)base.m4 $*.m4 $(MAIN_M4_SOURCES) >$@.new
98 $(V_AT)chmod +x $@.new && mv $@.new $@
99
100 clean:; rm -f $(TARGETS) *.new
101 .PHONY: clean
102
103 ###----- That's all, folks --------------------------------------------------