## Makefile.maint -- Makefile rules for libtool maintainers -*-Makefile-*- ## ## Copyright (C) 2004, 2005 Free Software Foundation ## ## This program 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. ## ## This program 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 this program; see the file COPYING. If not, write 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: cvs-release cvs-release: version-check prev-tarball cvs-news fetch cvs-commit cvs-dist deltas web-manual @tarname="$(PACKAGE)-$(VERSION).tar.gz"; \ diffname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \ xdeltaname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).xdelta"; \ echo " *** Upload $$tarname, $$tarname.sig,";\ echo " *** $$tarname.directive.asc, $$diffname,"; \ echo " *** $$diffname.sig, $$diffname.directive.asc,"; \ echo " *** $$xdeltaname, $$xdeltaname.sig and";\ echo " *** $$xdeltaname.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 .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 echo "Cannot make deltas without $$ofile"; exit 1; fi # TSDEPS will be defined to TSDEPS_DIST at `make dist' time TSDEPS = TSDEPS_DIST = ChangeLog m4/libtool.m4 CVS = cvs # set it to `:' to avoid CVS operations .PHONY: timestamps update-timestamps timestamps: update-timestamps update-timestamps: @if (cd $(srcdir) && test -d CVS && \ $(CVS) -n update $(TSDEPS_DIST) | grep '^M'); then \ echo "Cannot make cvs-dist before commit"; exit 1; else :; fi .PHONY: cvs-news cvs-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~ ## 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 && \ $(WGETSGO)/autoconf/autoconf/INSTALL; \ $(WGETSGO)/automake/automake/lib/install-sh; \ $(WGETSGO)/config/config/config.guess; \ $(WGETSGO)/config/config/config.sub; \ $(WGETSGO)/texinfo/texinfo/doc/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: cvs-commit cvs-commit: cvs-news cd $(srcdir) && $(SHELL) ./commit .PHONY: cvs-dist cvs-dist: cvs-news timestamps ## Build the distribution: $(MAKE) distcheck ## Finally, if everything was successful, tag the release cd $(srcdir) \ && $(CVS) -q tag `echo "release-$(VERSION)" | sed 's/\./-/g'` ## Generate signatures and directives for FSF ftp-upload: for suffix in .gz .bz2; 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: 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 echo "Cannot make deltas without $$ofile"; exit 1; fi .PHONY: got-xdelta got-xdelta: ## Make sure xdelta exists; @if ($(XDELTA) --version 2>&1 | grep version)>/dev/null 2>/dev/null; \ then :;\ else \ echo "Get xdelta from http://sourceforge.net/projects/xdelta."; \ exit 1; \ fi .PHONY: deltas deltas: delta-diff delta-xdelta DIFF = diff DIFF_OPTIONS = -ruNp .PHONY: delta-diff delta-diff: prev-tarball new-tarball ## Unpack the tarballs somewhere to diff them rm -rf delta-diff mkdir delta-diff ofile="../$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \ cd delta-diff \ && tar xzf "../$(PACKAGE)-$(LASTRELEASE).tar.gz" \ && tar xzf "../$(PACKAGE)-$(VERSION).tar.gz" \ && $(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 XDELTA = xdelta XDELTA_OPTIONS = -9 .PHONY: delta-xdelta delta-xdelta: prev-tarball new-tarball got-xdelta ## Generate the delta file (xdelta has wierd exit statuses, so we need to ## add some shell code to keep make happy), and then generate the signatures ## for FSF ftp-upload: ofile="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).xdelta"; \ ( test -z `$(XDELTA) delta $(XDELTA_OPTIONS) \ $(PACKAGE)-$(LASTRELEASE).tar.gz $(PACKAGE)-$(VERSION).tar.gz \ $$ofile 2>&1` \ && : ) \ && $(GPG) --detach-sign $$ofile \ && echo "directory: libtool" > $$ofile.directive \ && $(GPG) --clearsign $$ofile.directive \ && rm -f $$ofile.directive .PHONY: web-manual web-manual: @rm -f doc/manual.texi manual.html @$(LN_S) $(abs_srcdir)/doc/libtool.texi doc/manual.texi $(TEXI2HTML) -I doc -I $(srcdir)/doc -monolithic -number -verbose doc/manual.texi @test -f manual.html || mv doc/manual.html manual.html @rm -f doc/manual.texi