| ## Makefile.maint -- Makefile rules for libtool maintainers -*-Makefile-*- |
| ## |
| ## Copyright (C) 2004, 2005 Free Software Foundation, Inc. |
| ## Written by Scott James Remnant, 2004 |
| ## |
| ## This file is part of GNU Libtool. |
| ## |
| ## GNU Libtool is free software; you can redistribute it and/or modify |
| ## it under the terms of the GNU General Public License as published by |
| ## the Free Software Foundation; either version 2 of the License, or |
| ## (at your option) any later version. |
| ## |
| ## GNU Libtool is distributed in the hope that it will be useful, |
| ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| ## GNU General Public License for more details. |
| ## |
| ## You should have received a copy of the GNU General Public License |
| ## along with GNU Libtool; see the file COPYING. If not, a copy |
| ## can be downloaded from http://www.gnu.org/licenses/gpl.html, |
| ## or obtained by writing to the Free ## Software Foundation, Inc., |
| ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
| ##### |
| |
| # Need various variables defined by configure, a lot easier to just |
| # include the Makefile than figure out a way to put them in here too |
| include Makefile |
| Makefile: |
| @echo " *** Run maintainer rules from the build tree, with" |
| @echo " *** \`make -f../Makefile.maint' for example, where" |
| @echo " *** \`../' is the relative path back to the directory" |
| @echo " *** that contains the \`Makefile.maint'. Alternatively," |
| @echo " *** run \`./configure' in the source tree for an in" |
| @echo " *** tree build." |
| @exit 1 |
| |
| TEXI2HTML = texi2html |
| |
| $(srcdir)/commit: $(srcdir)/$(auxdir)/mailnotify clcommit.m4sh |
| $(timestamp); \ |
| cd $(srcdir); \ |
| rm -f commit commit.in commit.tmp; \ |
| $(M4SH) -B $(auxdir) clcommit.m4sh > commit.in; \ |
| input="clcommit.m4sh"; \ |
| $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" commit.in > commit.tmp; \ |
| chmod a+x commit.tmp; \ |
| chmod a-w commit.tmp; \ |
| mv -f commit.tmp commit; \ |
| rm -f commit.in |
| |
| announce-gen: $(auxdir)/announce-gen.m4sh $(auxdir)/getopt.m4sh |
| $(timestamp); \ |
| rm -f announce-gen announce-gen.in announce-gen.tmp; \ |
| $(M4SH) -B $(top_srcdir)/$(auxdir) $(top_srcdir)/$(auxdir)/announce-gen.m4sh > announce-gen.in; \ |
| input="announce-gen.m4sh"; \ |
| $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \ |
| -e "s,@LASTRELEASE\@,$(LASTRELEASE),g" \ |
| -e "s,@top_srcdir\@,$(top_srcdir),g" \ |
| announce-gen.in > announce-gen.tmp; \ |
| chmod a+x announce-gen.tmp; \ |
| chmod a-w announce-gen.tmp; \ |
| mv -f announce-gen.tmp announce-gen; \ |
| rm -f announce-gen.in |
| |
| $(srcdir)/$(auxdir)/mailnotify: $(auxdir)/mailnotify.m4sh |
| $(timestamp); \ |
| cd $(srcdir)/$(auxdir); \ |
| rm -f mailnotify mailnotify.in mailnotify.tmp; \ |
| $(M4SH) -B . mailnotify.m4sh > mailnotify.in; \ |
| input="mailnotify.m4sh"; \ |
| $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \ |
| mailnotify.in > mailnotify.tmp; \ |
| chmod a+x mailnotify.tmp; \ |
| chmod a-w mailnotify.tmp; \ |
| mv -f mailnotify.tmp mailnotify; \ |
| rm -f mailnotify.in |
| |
| .PHONY: git-release |
| git-release: version-check prev-tarball check-news fetch git-commit git-dist diffs web-manual |
| @tarname="$(PACKAGE)-$(VERSION).tar.gz"; \ |
| lzmaname="$(PACKAGE)-$(VERSION).tar.lzma"; \ |
| diffname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \ |
| echo " *** Upload $$tarname, $$tarname.sig,";\ |
| echo " *** $$tarname.directive.asc, $$lzmaname,";\ |
| echo " *** $$lzmaname.sig, $$lzmaname.directive.asc,";\ |
| echo " *** $$diffname, $$diffname.sig";\ |
| echo " *** and $$diffname.directive.asc to either"; \ |
| echo " *** /incoming/alpha or /incoming/ftp on ftp-upload.gnu.org." |
| echo " *** You might need to upload manual.html to webcvs/libtool." |
| |
| .PHONY: version-check |
| version-check: |
| @case $(VERSION) in \ |
| *[acegikmoqsuwy]) \ |
| echo "Version \`$(VERSION)' is not a releasable version, please read:"; \ |
| echo " http://www.gnu.org/software/libtool/contribute.html"; \ |
| exit 1; \ |
| ;; \ |
| esac |
| |
| GIT = git # set it to `:' to avoid git write operations |
| |
| .PHONY: check-commit |
| check-commit: |
| @if (cd $(srcdir) && test -d .git && \ |
| $(GIT) status | grep 'modified:'); then \ |
| echo "Cannot make git-dist before commit"; exit 1; else :; fi |
| |
| |
| .PHONY: check-news |
| check-news: |
| ## Make sure the NEWS file is up-to-date: |
| @if sed '1,2d;3q' $(srcdir)/NEWS | grep -e "$(VERSION)" >/dev/null; \ |
| then :; \ |
| else \ |
| echo "NEWS not updated; not releasing" 1>&2; \ |
| exit 1; \ |
| fi |
| |
| ## Program to use to fetch files. |
| WGET = wget |
| WGETSGO = $(WGET) 'http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~' |
| WGET_GIT = $(WGET) 'http://git.savannah.gnu.org/gitweb/?a=blob_plain;hb=HEAD;p=' |
| WGET_CGIT = $(WGET) 'http://git.savannah.gnu.org/cgit/config.git/plain' |
| |
| ## Files that we fetch and which we compare against. |
| ## FIXME should be a lot more here |
| FETCHFILES = \ |
| ./INSTALL \ |
| $(auxdir)/install-sh \ |
| $(auxdir)/config.guess \ |
| $(auxdir)/config.sub \ |
| $(auxdir)/texinfo.tex |
| |
| ## Fetch the latest versions of files we care about. |
| .PHONY: fetch |
| fetch: |
| rm -rf Fetchdir > /dev/null 2>&1 |
| mkdir Fetchdir |
| ## If a get fails then that is a problem. |
| (cd Fetchdir && \ |
| $(WGET_GIT)'gnulib.git;f=doc/INSTALL' -O INSTALL && \ |
| $(WGET_GIT)'automake.git;f=lib/install-sh' -O install-sh && \ |
| $(WGET_CGIT)/config.guess -O config.guess && \ |
| $(WGET_CGIT)/config.sub -O config.sub && \ |
| $(WGETSGO)/texinfo/texinfo/doc/texinfo.tex -O texinfo.tex ) |
| ## Don't exit after test because we want to give as many errors as |
| ## possible. |
| @stat=0; for file in $(FETCHFILES); do \ |
| fetchedfile=Fetchdir/`echo $$file | sed 's,.*/,,g'`; \ |
| if diff -u $(srcdir)/$$file $$fetchedfile \ |
| >>Fetchdir/update.patch 2>/dev/null; then :; \ |
| else \ |
| stat=1; \ |
| echo "Updating $(srcdir)/$$file..."; \ |
| cp $$fetchedfile $(srcdir)/$$file; \ |
| fi; \ |
| done; \ |
| test $$stat = 1 && \ |
| echo "See Fetchdir/update.patch for a log of the changes."; \ |
| exit $$stat |
| |
| |
| GPG = gpg # set it to `:' to avoid gpg operations |
| |
| .PHONY: git-commit |
| git-commit: check-news |
| cd $(srcdir) && $(SHELL) ./commit |
| |
| .PHONY: git-dist |
| git-dist: check-news check-commit |
| ## Build the distribution: |
| $(MAKE) distcheck |
| ## Finally, if everything was successful, tag the release |
| cd $(srcdir) \ |
| && $(GIT) tag -s "v$(VERSION)" |
| ## Generate signatures and directives for FSF ftp-upload: |
| for suffix in gz lzma; do \ |
| ofile="$(PACKAGE)-$(VERSION).tar.$$suffix"; \ |
| $(GPG) --detach-sign $$ofile \ |
| && echo "version: 1.1" > $$ofile.directive \ |
| && echo "directory: libtool" >> $$ofile.directive \ |
| && echo "filename: $$ofile" >> $$ofile.directive \ |
| && $(GPG) --clearsign $$ofile.directive \ |
| && rm -f $$ofile.directive; \ |
| done |
| |
| .PHONY: prev-tarball |
| prev-tarball: |
| ## Make sure we have the previous release tarball in the tree. |
| @if test -z "$(LASTRELEASE)"; \ |
| then echo "LASTRELEASE is not set"; exit 1; fi |
| @ofile="$(PACKAGE)-$(LASTRELEASE).tar.gz"; \ |
| if test -f $$ofile; then :; \ |
| else ofile="$(PACKAGE)-$(LASTRELEASE).tar.lzma"; \ |
| if test -f $$ofile; then :; \ |
| else echo "Cannot make diffs without $$ofile"; exit 1; fi; fi |
| |
| .PHONY: new-tarball |
| new-tarball: |
| ## Make sure we have the new release tarball in the tree. |
| @ofile="$(PACKAGE)-$(VERSION).tar.gz"; \ |
| if test -f $$ofile; then :; \ |
| else ofile="$(PACKAGE)-$(VERSION).tar.lzma"; \ |
| if test -f $$ofile; then :; \ |
| else echo "Cannot make diffs without $$ofile"; exit 1; fi; fi |
| |
| DIFF = diff |
| DIFF_OPTIONS = -ruNp |
| |
| .PHONY: diffs |
| diffs: prev-tarball new-tarball |
| ## Unpack the tarballs somewhere to diff them |
| rm -rf delta-diff |
| mkdir delta-diff |
| |
| cd delta-diff; \ |
| ofile="../$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \ |
| otar="../$(PACKAGE)-$(LASTRELEASE).tar"; \ |
| ntar="../$(PACKAGE)-$(VERSION).tar"; \ |
| test -f "$$otar.gz" && otar="$$otar.gz" && ounpack="gzip"; \ |
| test -f "$$ntar.gz" && ntar="$$ntar.gz" && nunpack="gzip"; \ |
| test -f "$$otar.lzma" && otar="$$otar.lzma" && ounpack="lzma"; \ |
| test -f "$$ntar.lzma" && ntar="$$ntar.lzma" && nunpack="zlma"; \ |
| $$ounpack -c -d "$$otar" | tar xf - \ |
| && $$nunpack -c -d "$$ntar" | tar xf - \ |
| && $(DIFF) $(DIFF_OPTIONS) \ |
| $(PACKAGE)-$(LASTRELEASE) $(PACKAGE)-$(VERSION) \ |
| | GZIP=$(GZIP_ENV) gzip -c > $$ofile \ |
| && $(GPG) --detach-sign $$ofile \ |
| && echo "version: 1.1" > $$ofile.directive \ |
| && echo "directory: libtool" >> $$ofile.directive \ |
| && echo "filename: $$ofile" |sed 's,: \.\./,: ,' >> $$ofile.directive \ |
| && $(GPG) --clearsign $$ofile.directive \ |
| && rm -f $$ofile.directive |
| |
| rm -rf delta-diff |
| |
| .PHONY: web-manual |
| web-manual: |
| cd $(srcdir)/doc; \ |
| rm -f gendocs.sh* gendocs_template*; \ |
| test -d manual && rm -rf manual; \ |
| $(WGETSGO)'/texinfo/texinfo/util/gendocs.sh' && \ |
| $(WGETSGO)'/texinfo/texinfo/util/gendocs_template' && \ |
| chmod 755 gendocs.sh && \ |
| ./gendocs.sh --email bug-libtool@gnu.org libtool "GNU Libtool Manual" |