Synch to No Gnus 200604082343.
[elisp/gnus.git-] / Makefile.in
1 prefix = @prefix@
2 datadir = @datadir@
3 infodir = @infodir@
4 lispdir = @lispdir@
5 srcdir = @srcdir@
6
7 @SET_MAKE@
8 EMACS = @EMACS@
9 XEMACS = @XEMACS@
10 PACKAGEDIR = @PACKAGEDIR@
11 GNUS_PRODUCT_NAME = @GNUS_PRODUCT_NAME@
12
13 # It may be needed for Meadow/NTEmacs when sh.exe is used for SHELL.
14 # Because Meadow/NTEmacs will get the value of the current-directory from
15 # the environment variable PWD, but sh.exe will not take care of it even
16 # if the current-directory has changed.  So we should invalidate it.
17 PWD=
18
19 # It will be used to look for the XEmacs package path if this file is
20 # mis-configured (e.g. configured for FSFmacs).
21 EXAMINE_PACKAGEDIR = $(XEMACS) -batch -q -no-site-file -eval \
22         "(let ((dirs (append \
23                       (if (and (boundp (quote configure-package-path)) \
24                                (listp configure-package-path)) \
25                           (delete \"\" configure-package-path)) \
26                       (if (boundp (quote early-packages)) \
27                           (append \
28                            (if early-package-load-path early-packages) \
29                            (if late-package-load-path late-packages) \
30                            (if last-package-load-path last-packages))))) \
31                package-dir) \
32            (while (and dirs (not package-dir)) \
33              (if (file-directory-p (car dirs)) \
34                  (setq package-dir (car dirs) \
35                        dirs (cdr dirs)))) \
36            (princ (or package-dir \"\")))" 2>/dev/null
37
38 GZIP_PROG = gzip
39
40 # # # # # # # # # # Release variables (for maintainer only):
41 #
42 # Files removed from `cvs export' output before creating the tar-ball:
43 CVS_IGNORE_FILES = .cvsignore contrib/.cvsignore etc/.cvsignore \
44   lisp/.cvsignore texi/.cvsignore texi/ps/.cvsignore .arch-inventory
45 # Name and mail address in ChangeLog format for the release commit:
46 COMMITTER = Lars Magne Ingebrigtsen  <lars@ingebrigtsen.no>
47 # CODENAME for development releases (CODENAME must have a trailing space,
48 # (e.g. "Oort ")
49 CODENAME = 
50 # Codename initial (lower case), e.g. 'n' for "No Gnus".
51 CIN =
52 # Files with hard-coded versions numbers:
53 RELEASE_COMMIT_FILES = lisp/ChangeLog lisp/gnus.el \
54   texi/ChangeLog texi/gnus.texi texi/message.texi texi/gnus-faq.texi
55 # Pattern matching previous version(s):
56 OLD_PATTERN = 5.10.[0-9]*\|0\.3
57 # CVS tag of the previous version:
58 OLD_TAG     = v5-10-6
59 # CVS tag of the current release:
60 TAG  = v5-10
61 #
62 # Procedure:
63 # - release-bump-version
64 # - release-commit
65 # - release-files or release-files-signed
66 #
67 # # # # # # # # # # End of release variables
68
69 all: lick info
70
71 all-ja: lick info info-ja
72
73 lick:
74         cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" all
75
76 install: install-lisp install-info install-etc
77
78 install-ja: install install-info-ja install-etc
79
80 install-lisp:
81         cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" install
82
83 install-info:
84         cd texi && $(MAKE) EMACS="$(EMACS)" infodir="$(infodir)" install
85
86 install-etc:
87         cd etc && $(MAKE) EMACS="$(EMACS)" install
88
89 install-info-ja:
90         cd texi && $(MAKE) EMACS="$(EMACS)" infodir="$(infodir)" install-ja
91
92 ## Rule for XEmacs package.
93 install-package: \
94         xclever-package \
95         remove-extra-files-in-package \
96         install-package-lisp \
97         install-package-info \
98         install-package-etc \
99         install-package-manifest
100
101 install-package-ja: \
102         xclever-package \
103         remove-extra-files-in-package \
104         install-package-lisp \
105         install-package-info install-package-info-ja \
106         install-package-etc \
107         install-package-manifest
108
109 package: xlick-package xinfo
110
111 package-ja: xlick-package xinfo xinfo-ja
112
113 # Sub-rule for XEmacs package.
114 install-package-lisp:
115         @if test x$(PACKAGEDIR) = x; then \
116           package_dir=`$(EXAMINE_PACKAGEDIR)`; \
117         else \
118           package_dir="$(PACKAGEDIR)"; \
119         fi; \
120         echo "cd lisp && $(MAKE) EMACS=$(XEMACS)" \
121                 "lispdir=$$package_dir""/lisp/$(GNUS_PRODUCT_NAME)" \
122                 "install-without-compiling"; \
123         cd lisp && $(MAKE) EMACS="$(XEMACS)" \
124                 lispdir="$$package_dir""/lisp/$(GNUS_PRODUCT_NAME)" \
125                 install-without-compiling
126
127 install-package-info:
128         @if test x$(PACKAGEDIR) = x; then \
129           package_dir=`$(EXAMINE_PACKAGEDIR)`; \
130         else \
131           package_dir="$(PACKAGEDIR)"; \
132         fi; \
133         echo "cd texi && $(MAKE) EMACS=$(XEMACS)" \
134                 "infodir=$$package_dir""/info install-info"; \
135         cd texi && $(MAKE) EMACS="$(XEMACS)" \
136                 infodir="$$package_dir""/info" install-info
137
138 install-package-info-ja:
139         @if test x$(PACKAGEDIR) = x; then \
140           package_dir=`$(EXAMINE_PACKAGEDIR)`; \
141         else \
142           package_dir="$(PACKAGEDIR)"; \
143         fi; \
144         echo "cd texi && $(MAKE) EMACS=$(XEMACS)" \
145                 "infodir=$$package_dir""/info install-ja-info"; \
146         cd texi && $(MAKE) EMACS="$(XEMACS)" \
147                 infodir="$$package_dir""/info" install-ja-info
148
149 install-package-etc:
150         @if test x$(PACKAGEDIR) = x; then \
151           package_dir=`$(EXAMINE_PACKAGEDIR)`; \
152         else \
153           package_dir="$(PACKAGEDIR)"; \
154         fi; \
155         echo "cd etc && $(MAKE) EMACS=$(XEMACS)" \
156                 "etcdir=$$package_dir""/etc install"; \
157         cd etc && $(MAKE) EMACS="$(XEMACS)" \
158                 etcdir="$$package_dir""/etc" install
159
160 install-package-manifest:
161         @if test x$(PACKAGEDIR) = x; then \
162           package_dir=`$(EXAMINE_PACKAGEDIR)`; \
163         else \
164           package_dir="$(PACKAGEDIR)"; \
165         fi; \
166         echo "cd lisp && $(MAKE) EMACS=$(XEMACS) PACKAGEDIR=$$package_dir" \
167                 "lispdir=$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \
168                 "install-package-manifest"; \
169         cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR=$$package_dir \
170                 lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \
171                 install-package-manifest
172
173 remove-extra-files-in-package:
174         @if test x$(PACKAGEDIR) = x; then \
175           package_dir=`$(EXAMINE_PACKAGEDIR)`; \
176         else \
177           package_dir="$(PACKAGEDIR)"; \
178         fi; \
179         echo "cd lisp && $(MAKE) EMACS=$(XEMACS) PACKAGEDIR=$$package_dir" \
180                 "lispdir=$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \
181                 "remove-extra-files-in-package"; \
182         cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR=$$package_dir \
183                 lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \
184                 remove-extra-files-in-package
185 ##
186
187 xclever:
188         cd lisp && $(MAKE) EMACS="$(XEMACS)" lispdir="$(lispdir)" clever
189
190 xclever-package:
191         cd lisp && $(MAKE) EMACS="$(XEMACS)" \
192         lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" clever
193
194 xlick:
195         cd lisp && $(MAKE) EMACS="$(XEMACS)" lispdir="$(lispdir)" all
196
197 xlick-package:
198         cd lisp && $(MAKE) EMACS="$(XEMACS)" \
199         lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" all
200
201 xinfo:
202         cd texi && $(MAKE) EMACS="$(XEMACS)" all-info
203
204 xinfo-ja:
205         cd texi && $(MAKE) EMACS="$(XEMACS)" ja-info
206
207 list-installed-shadows:
208         cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" list-installed-shadows
209
210 remove-installed-shadows:
211         cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" remove-installed-shadows
212
213 uninstall:
214         cd lisp && $(MAKE) lispdir="$(lispdir)" uninstall
215         cd texi && $(MAKE) uninstall
216         cd etc && $(MAKE) uninstall
217
218 GNUS-NEWS: texi/gnus-news.texi
219         cd texi && $(MAKE) GNUS-NEWS
220
221 # Rule for Lars and nobody else.
222 some:
223         cd lisp && $(MAKE) EMACS="$(EMACS)" some
224 l:
225         cd lisp && $(MAKE) EMACS="$(EMACS)" clever
226
227 info:
228         cd texi && $(MAKE) EMACS="$(EMACS)" all
229
230 info-ja:
231         cd texi && $(MAKE) EMACS=$(EMACS) ja
232
233 clean:
234         for i in lisp texi etc texi/ps; do (cd $$i; $(MAKE) clean); done
235         rm -f *.orig *.rej *~ MANIFEST.*
236
237 elclean:
238         cd lisp && rm -f *.elc auto-autoloads.el custom-load.el gnus-load.el
239
240 x:
241         $(MAKE) EMACS="$(XEMACS)"
242
243 xsome:
244         $(MAKE) EMACS="$(XEMACS)" some
245
246 distclean: clean
247         for i in lisp texi etc texi/ps; do (cd $$i; $(MAKE) distclean); done
248         rm -f config.log config.status config.cache Makefile
249
250 config.status: $(srcdir)/configure
251         $(SHELL) ./config.status --recheck
252 $(srcdir)/configure: $(srcdir)/configure.in
253         cd $(srcdir) && autoconf
254 Makefile: $(srcdir)/Makefile.in config.status
255         CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
256
257 # # # # # # # # # # Release targets (for maintainer only):
258
259 release-check-settings:
260         @echo
261         @echo "COMMITTER = '$(COMMITTER)'"
262         @echo "  (example: 'Foo Bar  <foo.bar@somewhere.invalid>')"
263         @echo "VERSION   = '$(VERSION)' (example: '5.10.6')"
264         @echo "CODENAME  = '$(CODENAME)' (example: 'No ')"
265         @echo "CIN       = '$(CIN)' (example: 'n', codename initial)"
266         @echo "TAG       = '$(TAG)' (example: 'v5-10-6')"
267         @echo "OLDTAG    = '$(OLDTAG)' (example: 'v5-10-5')"
268         @echo
269         @if [ x"$(VERSION)" = x ]; then echo "error: No VERSION given."; exit 1; else :; fi
270         @if [ x"$(TAG)" = x ]; then echo "error: No TAG given."; exit 1; else :; fi
271         @echo
272         @echo Settings checked successfully.
273         @echo
274         @echo You may now make...
275         @echo   release-bump-version
276         @echo   release-commit
277         @echo   release-files or release-files-signed
278
279 # Needs GNU grep and a recent GNU sed:
280 release-bump-version:   release-check-settings
281         sed -i -e '/^(defconst gnus-version-number /s,"$(OLD_PATTERN)","$(VERSION)",' lisp/gnus.el
282         sed -i -e '/^.newcommand{.gnusversionname}{Gnus v/s,$(OLD_PATTERN),$(VERSION),' texi/gnus.texi
283         sed -i -e '/^This manual corresponds to [A-Za-z ]*Gnus v/s,$(OLD_PATTERN),$(VERSION),' texi/gnus.texi
284         sed -i -e '/^corresponding to this manual is [A-Za-z ]*Gnus v/s,$(OLD_PATTERN),$(VERSION),' texi/message.texi
285         if [ "x$(CODENAME)" = "x" ]; then \
286           sed -i -e '/The current release ($(OLD_PATTERN)) should/s,$(OLD_PATTERN),$(VERSION),' texi/gnus-faq.texi; \
287         else \
288           true; \
289         fi
290         @if grep -q "$(CODENAME)Gnus v$(VERSION) is released" texi/ChangeLog; then \
291           echo "texi/ChangeLog is already updated"; \
292         else \
293           sed -i -e "1s|^|`date -I`  $(COMMITTER)\n\n\t* gnus.texi, gnus-faq.texi, message.texi: $(CODENAME)Gnus v$(VERSION) is released.\n\n|" texi/ChangeLog; \
294         fi
295         @if grep -q "$(CODENAME)Gnus v$(VERSION) is released" lisp/ChangeLog; then \
296           echo "lisp/ChangeLog is already updated"; \
297         else \
298           sed -i -e "1s|^|`date -I`  $(COMMITTER)\n\n\t* gnus.el: $(CODENAME)Gnus v$(VERSION) is released.\n\n|" lisp/ChangeLog; \
299         fi
300         cvs diff -U0 $(RELEASE_COMMIT_FILES); sleep 2
301
302 release-revert-files:
303         rm -i      $(RELEASE_COMMIT_FILES)
304         cvs update $(RELEASE_COMMIT_FILES)
305
306 release-commit: release-check-settings
307         @echo -e '\007'
308         @echo
309         @echo "Really do the release-commit for $(CODENAME)Gnus v$(VERSION)?"
310         @echo
311         @echo "Hit RET to continue or Ctrl-C to abort."
312         @echo
313         @read dummy
314         cvs commit -m "$(CODENAME)Gnus v$(VERSION) is released." $(RELEASE_COMMIT_FILES)
315         @echo
316         @echo "Add tag $(TAG) to CVS?"
317         @echo "Hit RET to continue or Ctrl-C to abort."
318         @echo
319         @read dummy
320         cvs tag $(TAG)
321
322 release-files:  release-make-tar-ball release-diff
323         @echo "Release files have been created:"
324         @ls -l $(CIN)gnus-$(VERSION).tar.gz
325         @ls -l $(CIN)gnus-`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz
326
327 release-files-signed:   release-files release-sign-files
328
329 # Sign prepared files:
330 release-sign-files:
331         if [ "x$$GPG_AGENT_INFO" = "x" ]; then \
332           read -sp "Enter pass phrase: " phrase ; \
333           gpg_opt="--passphrase-fd 0"; \
334         else \
335           gpg_opt=""; phrase=""; \
336         fi; \
337         for i in $(CIN)gnus-$(VERSION).tar.gz \
338                  $(CIN)gnus-`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz; do \
339            echo "$$phrase" | gpg --detach-sign $$gpg_opt $$i; \
340         done; true
341         @ls -l $(CIN)gnus-$(VERSION).tar.gz{.sig,}
342         @ls -l $(CIN)gnus-`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz{.sig,}
343         @gpg --verify $(CIN)gnus-$(VERSION).tar.gz{.sig,}
344         @gpg --verify $(CIN)gnus-`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz{.sig,}
345
346 release-cvs-export $(CIN)gnus-$(VERSION):       release-check-settings
347         rm -fr $(CIN)gnus-$(VERSION)
348         cvs export -d $(CIN)gnus-$(VERSION) -r $(TAG) gnus
349
350 release-make-tar-ball:  $(CIN)gnus-$(VERSION)
351         [ -d $(CIN)gnus-$(VERSION) ] && cd $(CIN)gnus-$(VERSION) && \
352           rm $(CVS_IGNORE_FILES) || true
353         tar zcvf $(CIN)gnus-$(VERSION).tar.gz $(CIN)gnus-$(VERSION)
354         ls -l $(CIN)gnus-$(VERSION).tar.gz
355
356 # Make a diff between current and previous release.  Example:
357 # ftp://quimby.gnus.org/pub/gnus/ding-patches/gnus-5.10.5-5.10.6.diff.gz
358 release-diff:   release-check-settings
359         cvs diff -r $(OLD_TAG) -r $(TAG) | sed -e '/^\? /d' > temp.diff || true
360         mv temp.diff $(CIN)gnus-`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff
361         $(GZIP_PROG) $(CIN)gnus-`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff
362         ls -l        $(CIN)gnus-`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz
363
364 release-post-clean:     release-check-settings
365         rm -fr $(CIN)gnus-$(TAG) temp.diff
366
367 # # # # # # # # # # End of release targets
368
369 # Tell versions [3.59,3.63) of GNU make to not export all variables.
370 # Otherwise a system limit (for SysV at least) may be exceeded.
371 .NOEXPORT: