## 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 $(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=' ## 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 && \ $(WGETSGO)/config/config/config.guess -O config.guess && \ $(WGETSGO)/config/config/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 "directory: libtool" > $$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 "directory: libtool" > $$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 libtool "GNU Libtool Manual"