Commit | Line | Data |
---|---|---|
2ea8f66b IK |
1 | ##--------------------------------------------------------------------------## |
2 | ## File: | |
3 | ## $Id: Makefile,v 1.35 2002/10/01 22:49:46 ehood Exp $ | |
4 | ## Description: | |
5 | ## Administrative makefile for mailing list archives. | |
6 | ##--------------------------------------------------------------------------## | |
7 | ## Copyright (C) 2001-2002 Earl Hood <earl@earlhood.com> | |
8 | ## | |
9 | ## This program is free software; you can redistribute it and/or modify | |
10 | ## it under the terms of the GNU General Public License as published by | |
11 | ## the Free Software Foundation; either version 2 of the License, or | |
12 | ## (at your option) any later version. | |
13 | ## | |
14 | ## This program is distributed in the hope that it will be useful, | |
15 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | ## GNU General Public License for more details. | |
18 | ## | |
19 | ## You should have received a copy of the GNU General Public License | |
20 | ## along with this program; if not, write to the Free Software | |
21 | ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
22 | ## 02111-1307, USA | |
23 | ##--------------------------------------------------------------------------## | |
24 | ||
25 | .PHONY: default editidx rebuild rootidx dist enable disable readmail \ | |
26 | help editidxonly release clean distclean configure mhonarc-check \ | |
27 | doc doc_pod doc_file doc_install | |
28 | ||
29 | INSTALL_PL = ./install.pl | |
30 | APPLY_CONFIG = ./bin/apply-config | |
31 | COMPRESS_FILES = ./bin/compress-files | |
32 | COMPRESS_MBOXES = ./bin/compress-mboxes | |
33 | CONFIG_CHECK = ./bin/config-check | |
34 | FILTER_SPOOL = ./bin/filter-spool | |
35 | LOG_CMD = ./bin/logcmd | |
36 | MBOX_MONTH_PACK = ./bin/mbox-month-pack | |
37 | MHA_CHECK = ./bin/mhonarc-check | |
38 | MH_MONTH_PACK = ./bin/mh-month-pack | |
39 | MK_PROCMAILRC = ./bin/mk-procmailrc | |
40 | READ_MAIL = ./bin/read-mail | |
41 | WEB_ARCHIVE = ./bin/web-archive | |
42 | ||
43 | PRGS = \ | |
44 | $(INSTALL_PL) \ | |
45 | $(LOG_CMD) \ | |
46 | $(MH_MONTH_PACK) \ | |
47 | $(MBOX_MONTH_PACK) \ | |
48 | $(FILTER_SPOOL) \ | |
49 | $(APPLY_CONFIG) \ | |
50 | $(COMPRESS_FILES) \ | |
51 | $(COMPRESS_MBOXES) \ | |
52 | $(CONFIG_CHECK) \ | |
53 | $(MHA_CHECK) \ | |
54 | $(MK_PROCMAILRC) \ | |
55 | $(READ_MAIL) \ | |
56 | $(WEB_ARCHIVE) \ | |
57 | # End PRGS | |
58 | ||
59 | CONFIG_SH = ./lib/config.sh | |
60 | LIST_DEF = ./lib/lists.def | |
61 | ||
62 | NO_ARCHIVE = .noarchive | |
63 | PROCMAIL_RC = procmailrc.mharc | |
64 | ||
65 | CHMOD = chmod | |
66 | CP = cp | |
67 | FIND = find | |
68 | GZIP = gzip | |
69 | MKDIR = mkdir | |
70 | MV = mv | |
71 | PERL = perl | |
72 | RM = rm | |
73 | TAR = tar | |
74 | TOUCH = touch | |
75 | ||
76 | ##--------------------------------------------------------------------------## | |
77 | ||
78 | default: procmailrc | |
79 | ||
80 | procmailrc: mhonarc-check | |
81 | $(MK_PROCMAILRC) | |
82 | ||
83 | editidx: disable | |
84 | -$(PERL) $(WEB_ARCHIVE) -verbose -editidx -nosearch $(MLISTS) | |
85 | -@echo "=============================================================" | |
86 | -@echo "!!! Auto-archive processing is DISABLED !!!" | |
87 | -@echo "=============================================================" | |
88 | ||
89 | editidxonly: disable | |
90 | -$(PERL) $(WEB_ARCHIVE) -verbose -editidxonly -nosearch $(MLISTS) | |
91 | -@echo "=============================================================" | |
92 | -@echo "!!! Auto-archive processing is DISABLED !!!" | |
93 | -@echo "=============================================================" | |
94 | ||
95 | editrootidx: disable | |
96 | -$(PERL) $(WEB_ARCHIVE) -verbose -editrootidx -nosearch $(MLISTS) | |
97 | -@echo "=============================================================" | |
98 | -@echo "!!! Auto-archive processing is DISABLED !!!" | |
99 | -@echo "=============================================================" | |
100 | ||
101 | rebuild: disable | |
102 | -$(PERL) $(WEB_ARCHIVE) -verbose -rebuild $(MLISTS) | |
103 | -@echo "=============================================================" | |
104 | -@echo "!!! Auto-archive processing is DISABLED !!!" | |
105 | -@echo "=============================================================" | |
106 | ||
107 | rootidx: _FORCE | |
108 | -$(PERL) $(WEB_ARCHIVE) -verbose -editrootidx $(MLISTS) | |
109 | ||
110 | enable: _FORCE | |
111 | @$(RM) -f $(NO_ARCHIVE) | |
112 | -@echo "=============================================================" | |
113 | -@echo "!!! Auto-archive processing is ENABLED !!!" | |
114 | -@echo "=============================================================" | |
115 | ||
116 | disable: _FORCE | |
117 | @$(TOUCH) $(NO_ARCHIVE) | |
118 | -@echo "=============================================================" | |
119 | -@echo "!!! Auto-archive processing is DISABLED !!!" | |
120 | -@echo "=============================================================" | |
121 | ||
122 | readmail: _FORCE | |
123 | $(READ_MAIL) -verbose -force | |
124 | ||
125 | configure: _FORCE | |
126 | -@$(MKDIR) -p log mbox html | |
127 | @if [ ! -f $(CONFIG_SH) ]; then \ | |
128 | $(CP) $(CONFIG_SH).dist $(CONFIG_SH); \ | |
129 | $(CHMOD) u+w $(CONFIG_SH); \ | |
130 | fi | |
131 | @if [ ! -f $(LIST_DEF) ]; then \ | |
132 | $(CP) $(LIST_DEF).dist $(LIST_DEF); \ | |
133 | $(CHMOD) u+w $(LIST_DEF); \ | |
134 | fi | |
135 | $(APPLY_CONFIG) -verbose | |
136 | -$(MHA_CHECK) | |
137 | -@echo "=============================================================" | |
138 | -@echo "* Make sure to rerun 'make configure' when you change" | |
139 | -@echo "* lib/config.sh or change a .in template file." | |
140 | -@echo "=============================================================" | |
141 | ||
142 | mhonarc-check: _FORCE | |
143 | @$(MHA_CHECK) | |
144 | ||
145 | help: _FORCE | |
146 | -@echo "Targets available:" | |
147 | -@echo " (default) Generate $(PROCMAIL_RC) from $(LIST_DEF)." | |
148 | -@echo " configure: Apply $(CONFIG_SH) settings." | |
149 | -@echo " disable: Disable automated processing of new messages." | |
150 | -@echo " editidx: Edit all mhonarc archive pages." | |
151 | -@echo " editidxonly: Edit only mhonarc archive index pages." | |
152 | -@echo " editrootidx: Edit only top period index pages." | |
153 | -@echo " enable: Enable automated processing of new messages." | |
154 | -@echo " help: This message." | |
155 | -@echo " readmail: Process mail spool." | |
156 | -@echo " rebuild: Rebuild archives from raw message data." | |
157 | -@echo " rootidx: Regenerated top index for archives." | |
158 | -@echo "" | |
159 | -@echo "NOTE: Targets that modify archives run with debugging enabled." | |
160 | -@echo "NOTE: 'editidx', 'editidxonly', and 'rebuild' automatically" | |
161 | -@echo " disable auto-processing. Execute 'enable' target to" | |
162 | -@echo " reenable." | |
163 | -@echo "CAUTION: The 'clean' target should not have to be invoked." | |
164 | -@echo " But if done, it removes all .in generated files. The" | |
165 | -@echo " 'configure' target can be executed to regenerate" | |
166 | -@echo " file from templates" | |
167 | -@echo "WARNING: The 'dist' and 'distclean' targets should only be" | |
168 | -@echo " invoked IF YOU KNOW WHAT YOU ARE DOING!" | |
169 | ||
170 | ||
171 | # Dummy target to force building of other targets | |
172 | _FORCE: | |
173 | ||
174 | ##--------------------------------------------------------------------------## | |
175 | ## The following targets are mainly intended by mharc developers | |
176 | ## and used for creating releases | |
177 | ##--------------------------------------------------------------------------## | |
178 | ||
179 | DIST_BUNDLE = mharc-$(_RELEASE_VERSION).tar | |
180 | ||
181 | # List of files/dirs to be included in distribtion bundle | |
182 | # NOTE: The leading '.' is important. | |
183 | DIST_FILES = \ | |
184 | ./README \ | |
185 | ./INSTALL \ | |
186 | ./NEWS \ | |
187 | ./COPYING \ | |
188 | ./TODO \ | |
189 | ./install.pl \ | |
190 | ./doc \ | |
191 | ./bin \ | |
192 | ./cgi-bin \ | |
193 | ./etc \ | |
194 | ./html/.PNM* \ | |
195 | ./html/stylesheet.css* \ | |
196 | ./lib \ | |
197 | ./Makefile \ | |
198 | # End DIST_FILES | |
199 | ||
200 | # List of files/dirs to explicitly exclude from distribtion bundle | |
201 | # NOTE: The leading '.' is important. | |
202 | DIST_EXC_FILES = \ | |
203 | ./etc/release-mharc \ | |
204 | # End DIST_EXC_FILES | |
205 | ||
206 | TAR_EXC_FILE = dist/.dist-exclude | |
207 | ||
208 | PERL_PRGS = $(PRGS) | |
209 | ||
210 | release: syntax_check dist | |
211 | ||
212 | dist: _FORCE | |
213 | @$(RM) -rf dist | |
214 | @$(MKDIR) -p dist/mharc | |
215 | @$(FIND) . -name 'CVS' -print > $(TAR_EXC_FILE) | |
216 | @$(FIND) . -name '.*.sw*' -print >> $(TAR_EXC_FILE) | |
217 | @for i in $(DIST_EXC_FILES); do \ | |
218 | echo $$i >> $(TAR_EXC_FILE); \ | |
219 | done | |
220 | @$(TOUCH) INSTALL | |
221 | @$(TAR) -c \ | |
222 | -X $(TAR_EXC_FILE) \ | |
223 | -f - $(DIST_FILES) | (cd dist/mharc; tar xfp -) | |
224 | @(cd dist/mharc && $(MAKE) distclean) | |
225 | @(cd dist/mharc && $(MAKE) doc) | |
226 | @(cd dist/mharc && $(MAKE) doc_pod) | |
227 | @(cd dist/mharc && echo "$(_RELEASE_VERSION)" > VERSION) | |
228 | @$(MV) dist/mharc dist/mharc-$(_RELEASE_VERSION) | |
229 | @(cd dist && $(TAR) cvf $(DIST_BUNDLE) mharc-$(_RELEASE_VERSION)) | |
230 | @(cd dist && $(GZIP) $(DIST_BUNDLE)) | |
231 | ||
232 | syntax_check: _FORCE | |
233 | @for i in $(PERL_PRGS); do \ | |
234 | echo "Checking $$i syntax..."; \ | |
235 | $(PERL) -cw $$i; \ | |
236 | done | |
237 | ||
238 | # doc_pod listed twice to resolve xrefs | |
239 | doc: doc_pod doc_file doc_install | |
240 | ||
241 | doc_pod: _FORCE | |
242 | -@mkdir -p ./doc/bin ./doc/lib ./doc/file | |
243 | @for i in $(PRGS); do \ | |
244 | echo "processing $$i..." ; \ | |
245 | pod2html --header --infile=$$i \ | |
246 | --htmlroot=.. \ | |
247 | --podroot=./doc \ | |
248 | --podpath='bin:lib' \ | |
249 | --outfile=./doc/bin/`basename $$i`.html ; \ | |
250 | done | |
251 | @for i in `find ./lib/MHArc -name '*.pm' -print`; do \ | |
252 | echo "processing $$i..." ; \ | |
253 | pod2html --header \ | |
254 | --infile=$$i \ | |
255 | --htmlroot=.. \ | |
256 | --podroot=./doc \ | |
257 | --podpath='bin:lib' \ | |
258 | --outfile=./doc/lib/MHArc::`basename $$i`.html ; \ | |
259 | done | |
260 | @$(RM) -f pod2htm*.x~~ | |
261 | ||
262 | doc_file: _FORCE | |
263 | $(CP) -f Makefile ./doc/file/Makefile.txt | |
264 | $(CP) -f ./lib/common.mrc.in.dist ./doc/file/common.mrc.txt | |
265 | $(CP) -f ./lib/config.sh.dist ./doc/file/config.sh.txt | |
266 | $(CP) -f ./lib/lists.def.dist ./doc/file/lists.def.txt | |
267 | $(CP) -f ./etc/apache.conf.in.dist ./doc/file/apache.conf.txt | |
268 | $(CP) -f ./etc/crontab.in.dist ./doc/file/crontab.txt | |
269 | $(CP) -f ./etc/.htaccess.in.dist ./doc/file/htaccess.txt | |
270 | ||
271 | doc_install: | |
272 | w3m -dump -cols 76 ./doc/install.html > INSTALL | |
273 | ||
274 | distclean: clean | |
275 | $(APPLY_CONFIG) -distclean -verbose | |
276 | $(RM) -f $(CONFIG_SH) $(CONFIG_SH).cache.pl $(LIST_DEF) VERSION INSTALL | |
277 | $(RM) -rf ./dist ./doc/bin ./doc/lib ./doc/file | |
278 | ||
279 | clean: _FORCE | |
280 | $(RM) -f $(PROCMAIL_RC) | |
281 | $(APPLY_CONFIG) -clean -verbose | |
282 |