| ## Makefile.maint -- Makefile rules for libtool maintainers -*-Makefile-*- |
| ## |
| ## Copyright (C) 2004 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 |
| |
| $(top_srcdir)/commit: $(top_srcdir)/config/mailnotify clcommit.m4sh |
| $(timestamp); \ |
| cd $(top_srcdir); \ |
| rm -f commit commit.in commit.tmp; \ |
| $(M4SH) -B ./config 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 |
| |
| $(top_srcdir)/config/mailnotify: config/mailnotify.m4sh |
| $(timestamp); \ |
| cd $(top_srcdir)/config; \ |
| 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 \ |
| config/config.guess \ |
| config/config.sub \ |
| config/install-sh \ |
| config/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 |