## Process this file with automake to create Makefile.in
-AUTOMAKE_OPTIONS = gnits 1.4
-MAINT_CHARSET = latin1
+## Makefile for Automake.
+
+## Copyright 1995, 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
+
+## 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, 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; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+## 02111-1307, USA.
## We need `.' in SUBDIRS because we want `check' to build `.' before
## tests.
-SUBDIRS = . m4 tests
+SUBDIRS = . m4 lib tests
bin_SCRIPTS = automake aclocal
info_TEXINFOS = automake.texi
-amfiles = clean-hdr.am clean-kr.am clean.am comp-vars.am compile.am \
-data-clean.am data.am dejagnu.am depend.am depend2.am dist-vars.am \
-footer.am header-vars.am header.am java-clean.am java.am kr-extra.am \
-library.am libs-clean.am libs.am libtool.am lisp-clean.am lisp.am \
-ltlib-clean.am ltlib.am ltlibrary.am mans-vars.am mans.am multilib.am \
-program.am progs-clean.am progs.am remake-hdr.am remake.am scripts.am \
-subdirs.am tags-clean.am tags.am texi-vers.am texinfos.am
-
-dist_pkgdata_DATA = COPYING INSTALL texinfo.tex ansi2knr.c ansi2knr.1 \
-$(amfiles)
-
-## These must all be executable when installed. However, if we use
-## _SCRIPTS, then the program transform will be applied, which is not
-## what we want. So we make them executable by hand.
-scriptdir = $(pkgdatadir)
-dist_script_DATA = config.guess config.sub install-sh mdate-sh missing \
-mkinstalldirs elisp-comp ylwrap acinstall
-
-install-data-hook:
- @$(POST_INSTALL)
- @for prog in $(dist_script_DATA); do \
- echo " chmod +x $(DESTDIR)$(scriptdir)/$$prog"; \
- chmod +x $(DESTDIR)$(scriptdir)/$$prog; \
- done
+
+TAGS_FILES = automake.in aclocal.in
# The following requires a fixed version of the Emacs 19.30 etags.
-ETAGS_ARGS = automake.in aclocal.in --lang=none \
- --regex='/^@node[ \t]+\([^,]+\)/\1/' automake.texi
-TAGS_DEPENDENCIES = automake.in aclocal.in automake.texi
-
-## `test -x' is not portable. So we use Perl instead. If Perl
-## doesn't exist, then this test is meaningless anyway.
-installcheck-local:
- for file in $(dist_script_DATA); do \
- $(PERL) -e "exit ! -x '$(pkgdatadir)/$$file';" || exit 1; \
+ETAGS_ARGS = --lang=none \
+ --regex='/^@node[ \t]+\([^,]+\)/\1/' $(srcdir)/automake.texi
+TAGS_DEPENDENCIES = automake.texi
+
+EXTRA_DIST = ChangeLog.1996 ChangeLog.1998 ChangeLog.2000
+
+## Make versioned links. We only run the transform on the root name;
+## then we make a versioned link with the transformed base name. This
+## seemed like the most reasonable approach.
+install-exec-hook:
+ @$(POST_INSTALL)
+ @for p in $(bin_SCRIPTS); do \
+ f="`echo $$p|sed '$(transform)'`"; \
+ fv="$$f-$(APIVERSION)"; \
+ rm -f $(DESTDIR)$(bindir)/$$fv; \
+ echo " ln $(DESTDIR)$(bindir)/$$f $(DESTDIR)$(bindir)/$$fv"; \
+ ln $(DESTDIR)$(bindir)/$$f $(DESTDIR)$(bindir)/$$fv; \
done
-EXTRA_DIST = ChangeLog.1996 ChangeLog.1998
+uninstall-hook:
+ @for p in $(bin_SCRIPTS); do \
+ f="`echo $$p|sed '$(transform)'`"; \
+ fv="$$f-$(APIVERSION)"; \
+ rm -f $(DESTDIR)$(bindir)/$$fv; \
+ done
################################################################
##
## to anybody else
##
-# Run the test suite using Perl 4.
-perl4-check: automake aclocal
- @if $(SHELL) -c 'perl4.036 -v' > /dev/null 2>&1; then \
- $(MAKE) PERL=perl4.036 check; \
- else :; fi
-
# Some simple checks, and then ordinary check. These are only really
# guaranteed to work on my machine.
maintainer-check: automake aclocal
## This check avoids accidental configure substitutions in the source.
## There are exactly 7 lines that should be modified. This works out
## to 22 lines of diffs.
- @if test `diff $(srcdir)/automake.in automake | wc -l` -ne 22; then \
+ @if test `diff $(srcdir)/automake.in automake | wc -l` -ne 28; then \
echo "found too many diffs between automake.in and automake"; 1>&2; \
diff -c $(srcdir)/automake.in automake; \
exit 1; \
fi
## Syntax check with default Perl (on my machine, Perl 5).
- $(PERL) -c -w automake
- $(PERL) -c -w aclocal
+ perllibdir=$(srcdir)/lib $(PERL) -c -w automake
+ perllibdir=$(srcdir)/lib $(PERL) -c -w aclocal
## expect no instances of '${...}'. However, $${...} is ok, since that
## is a shell construct, not a Makefile construct.
## The backslash in `$${' is needed for some versions of bash.
- @if test `fgrep '\$${' $(srcdir)/[a-z]*.am | fgrep -v '$$$$' | wc -l` -ne 0; then \
- echo "found too many uses of '\$${'" 1>&2; \
+ @if fgrep '\$${' $(srcdir)/lib/am/[a-z]*.am | \
+ fgrep -v '$$$$'; then \
+ echo "Found too many uses of '\$${' in the lines above." 1>&2; \
+ exit 1; \
+ else :; fi
+## Make sure `rm' is called with `-f'.
+ @if egrep '\<rm ([^-]|\-[^f ]*\>)' \
+ $(srcdir)/lib/am/[a-z]*.am $(srcdir)/tests/*.test | \
+ fgrep -v '##'; then \
+ echo "Suspicious 'rm' invocation." 1>&2; \
exit 1; \
else :; fi
## Make sure all invocations of mkinstalldirs are correct.
- @if test `fgrep 'mkinstalldirs' $(srcdir)/[a-z]*.am | fgrep -v '$$(mkinstalldirs)' | wc -l` -ne 0; then \
- echo "found incorrect use of mkinstalldirs" 1>&2; \
+ @if fgrep -n 'mkinstalldirs' $(srcdir)/lib/am/[a-z]*.am | \
+ fgrep -v '$$(mkinstalldirs)'; then \
+ echo "Found incorrect use of mkinstalldirs in the lines above" 1>&2; \
exit 1; \
else :; fi
-## Another syntax check, this time with Perl 4, if it exists.
- @if $(SHELL) -c 'perl4.036 -v' >/dev/null 2>&1; then \
- perl4.036 -c -w automake; \
- perl4.036 -c -w aclocal; \
- else :; fi
-## We never want to use "undef", only "delete".
- @if grep undef $(srcdir)/automake.in > /dev/null 2>&1; then \
+## We never want to use "undef", only "delete", but for $/.
+ @if grep -n -w 'undef ' $(srcdir)/automake.in | \
+ fgrep -v 'undef $$/'; then \
echo "Found undef in automake.in; use delete instead" 1>&2; \
exit 1; \
fi
## We never want split (/ /,...), only split (' ', ...).
- @if fgrep 'split (/ /' $(srcdir)/automake.in > /dev/null 2>&1; then \
- echo "Found bad split in automake.in" 1>&2; \
+ @if fgrep -n 'split (/ /' $(srcdir)/automake.in; then \
+ echo "Found bad split in the lines above." 1>&2; \
+ exit 1; \
+ fi
+## Look for cd within backquotes
+ @if grep -n '^[^#]*` *cd ' $(srcdir)/automake.in \
+ $(srcdir)/lib/am/*.am; then \
+ echo "Consider using $$$$(am__cd) in the line above." 1>&2; \
+ exit 1; \
+ fi
+## Using @_ in a scalar context is most probably a programming error.
+ @if grep -Hn '[^) ] *= *@_' $(srcdir)/automake.in; then \
+ echo "Using @_ in a scalar context in the lines above." 1>&2; \
+ exit 1; \
+ fi
+## Forbid using parens with `local' to ease counting.
+ @if grep '^[ \t]*local *(' $(srcdir)/automake.in; then \
+ echo "Don't use \`local' with parens: use several \`local' above." >&2; \
+ exit 1; \
+ fi
+## Up to now we manage to limit to 1 use of local, but for `local $_;'.
+ @locals=`grep -v '^[ \t]*local \$$_;' $(srcdir)/automake.in | \
+ grep -c '^[ \t]*local [^*]'`; \
+ case $$locals in \
+ [0] ) \
+ echo "Wow, congrats! There are no \`local' now!." >&2; \
+ echo "Please update Makefile.am (maintainer-check)." >&2; \
+ exit 1; \
+ ;; \
+ 1 ) ;; \
+ * ) \
+ echo "Too many \`local'! Are you sure you need $$locals of them?" >&2; \
+ echo "Up to now 1 was enough." >&2; \
+ exit 1; \
+ ;; \
+ esac
+## Don't let AMDEP_TRUE substitution appear in automake.in.
+ @if grep '@AMDEP''_TRUE@' $(srcdir)/automake.in; then \
+ echo "Don't put AMDEP_TRUE substitution in automake.in" 1>&2; \
exit 1; \
fi
# Tag before making distribution. Also, don't make a distribution if
# checks fail. Also, make sure the NEWS file is up-to-date.
-cvs-dist: maintainer-check perl4-check distcheck
+cvs-dist: maintainer-check distcheck
@if sed 1q $(srcdir)/NEWS | grep -e "$(VERSION)" > /dev/null; then :; else \
echo "NEWS not updated; not releasing" 1>&2; \
exit 1; \
## of files on stdin, at least.
find . -print | xargs pathchk -p); \
status=$$?; \
- rm -rf $(distdir); \
+ chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir); \
exit $$status
-## Just get the .am files into TAGS. We don't really care too much if
-## any interesting tags show up.
-ETAGS_ARGS = $(amfiles)
-TAGS_DEPENDENCIES = $(ETAGS_ARGS)
+## Program to use to fetch files.
+WGET = wget
+
+## Files that we fetch and which we compare against.
+## FIXME should be a lot more here
+FETCHFILES = config.guess config.sub texinfo.tex Automake/XFile.pm
+
+## Fetch the latest versions of files we care about.
+fetch:
+ rm -rf Fetchdir > /dev/null 2>&1
+ mkdir Fetchdir; mkdir Fetchdir/Automake
+## If a get fails then that is a problem.
+ (cd Fetchdir && \
+ $(WGET) ftp://ftp.gnu.org/gnu/config/config.guess; \
+ $(WGET) ftp://ftp.gnu.org/gnu/config/config.sub; \
+ $(WGET) ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex; \
+ $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/autoconf/autoconf/lib/Autom4te/XFile.pm?content-type=text/plain -O Automake/XFile.pm)
+ perl -pi -e 's/Autom4te::/Automake::/g' Fetchdir/Automake/XFile.pm
+## Don't exit after test because we want to give as many errors as
+## possible.
+ @stat=0; for file in $(FETCHFILES); do \
+ if diff -u $(srcdir)/lib/$$file Fetchdir/$$file \
+ >>Fetchdir/update.patch 2>/dev/null; then :; \
+ else \
+ stat=1; \
+ echo "Updating $(srcdir)/lib/$$file..."; \
+ cp Fetchdir/$$file $(srcdir)/lib/$$file; \
+ fi; \
+ done; \
+ test $$stat = 1 && \
+ echo "See Fetchdir/update.patch for a log of the changes."; \
+ exit $$stat