Fixes the `AC_ARG_VAR' test failures.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES): Don't use cmp.
* lib/freeze.mk (check-forbidden-patterns): New.
* lib/autoconf/Makefile.am, lib/autotest/Makefile.am
* lib/m4sugar/Makefile.am (check-local): Use it to catch `cmp'.
* doc/autoconf.texi (Limitations of Usual Tools): HP-UX' cmp and
/dev/null.
Reported months ago by H. Merijn Brand.
+2002-10-17 Akim Demaille <akim@epita.fr>
+
+ * lib/autoconf/general.m4 (AC_CACHE_SAVE): Don't use cmp.
+ Fixes the `AC_ARG_VAR' test failures.
+ * lib/autoconf/status.m4 (_AC_OUTPUT_FILES): Don't use cmp.
+ * lib/freeze.mk (check-forbidden-patterns): New.
+ * lib/autoconf/Makefile.am, lib/autotest/Makefile.am
+ * lib/m4sugar/Makefile.am (check-local): Use it to catch `cmp'.
+ * doc/autoconf.texi (Limitations of Usual Tools): HP-UX' cmp and
+ /dev/null.
+ Reported months ago by H. Merijn Brand.
+
2002-10-17 Akim Demaille <akim@epita.fr>
* tests/tools.at (autoheader): Put randoms `@' to stress Perl.
- Portability of the Autoconf package to Solaris.
+- Cache files and HP-UX
+ Because of HP-UX' cmp, cache files probably never worked properly.
+ Autoconf no longer uses cmp at all.
+
- Spurious warnings caused by config.status.
This bug is benign, but painful: on some systems (typically
FreeBSD), warnings such as:
Hans Olsson Hans.Olsson@dna.lth.se
Harlan Stenn stenn@whimsy.udel.edu
H.J. Lu hjl@gnu.org
+H. Merijn Brand h.m.brand@hccnet.nl
Ian Lance Taylor ian@cygnus.com
James A. Lupo lupoja@feynman.ml.wpafb.af.mil
Jason Molenda jsm@cygnus.com
@command{diff} to avoid spurious differences due to differences of
newline encoding.
+Under HP-UX 11, @command{cmp} is unable to process @file{/dev/null}, and
+even exits with success:
+
+@example
+$ @kbd{cmp /dev/null configure}
+@error{}Premature end of file /dev/null at -1
+$ @kbd{echo $?}
+0
+@end example
+
+For all these reasons, it seems safer to always use @command{diff}.
@item @command{cp}
@c ---------------
## Checks. ##
## -------- ##
-check-local:
- if (cd $(srcdir) && \
- grep '^_*EOF' $(dist_autoconflib_DATA)) >eof.log; then \
- echo "ERROR: user EOF tags were used:" >&2; \
- sed "s,^,$*.m4: ," <eof.log >&2; \
- echo >&2; \
- exit 1; \
- else \
- rm -f eof.log; \
- fi
+check-local: check-forbidden-patterns
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autoconflib_DATA)
## ------------------ ##
TAGS_FILES = $(dist_autoconflib_DATA)
ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autoconflib_DATA)
SUFFIXES = .m4 .m4f
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- $(mkinstalldirs) $(distdir)/$(srcdir)/..
+ $(mkinstalldirs) $(distdir)/./..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
uninstall-nodist_autoconflibDATA
-check-local:
- if (cd $(srcdir) && \
- grep '^_*EOF' $(dist_autoconflib_DATA)) >eof.log; then \
- echo "ERROR: user EOF tags were used:" >&2; \
- sed "s,^,$*.m4: ," <eof.log >&2; \
- echo >&2; \
- exit 1; \
- else \
- rm -f eof.log; \
- fi
+check-local: check-forbidden-patterns
autoconf.m4f: $(autoconf_m4f_dependencies)
$(MY_AUTOM4TE):
# For parallel builds.
$(build_libdir)/m4sugar/version.m4:
cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+
+check-forbidden-patterns:
+ if (cd $(srcdir) && \
+ grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+ >forbidden.log; then \
+ echo "ERROR: forbidden patterns were found:" >&2; \
+ sed "s,^,$*.m4: ," <forbidden.log >&2; \
+ echo >&2; \
+ exit 1; \
+ else \
+ rm -f forbidden.log; \
+ fi
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
t end
/^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
: end'] >>confcache
-if cmp -s $cache_file confcache; then :; else
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
if test -w $cache_file; then
test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
cat confcache >$cache_file
cat $tmp/in >>$tmp/config.h
rm -f $tmp/in
if test x"$ac_file" != x-; then
- if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
AC_MSG_NOTICE([$ac_file is unchanged])
else
ac_dir=`AS_DIRNAME(["$ac_file"])`
" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
rm -f $tmp/stdin
dnl This would break Makefile dependencies.
-dnl if cmp -s $ac_file $tmp/out 2>/dev/null; then
+dnl if diff $ac_file $tmp/out >/dev/null 2>&1; then
dnl echo "$ac_file is unchanged"
dnl else
dnl rm -f $ac_file
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- $(mkinstalldirs) $(distdir)/$(srcdir)/..
+ $(mkinstalldirs) $(distdir)/./..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
$(build_libdir)/m4sugar/version.m4:
cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+check-forbidden-patterns:
+ if (cd $(srcdir) && \
+ grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+ >forbidden.log; then \
+ echo "ERROR: forbidden patterns were found:" >&2; \
+ sed "s,^,$*.m4: ," <forbidden.log >&2; \
+ echo >&2; \
+ exit 1; \
+ else \
+ rm -f forbidden.log; \
+ fi
+
autoscan.list: $(srcdir)/autoscan.pre $(autoconf_m4f_dependencies) Makefile.am
echo '# Automatically Generated: do not edit this file' > autoscan.list
sed '/^[#]/!q' $(srcdir)/autoscan.pre >>autoscan.list
## Checks. ##
## -------- ##
-check-local:
- if (cd $(srcdir) && \
- grep '^_*EOF' $(dist_autotestlib_DATA)) >eof.log; then \
- echo "ERROR: user EOF tags were used:" >&2; \
- sed "s,^,$*.m4: ," <eof.log >&2; \
- echo >&2; \
- exit 1; \
- else \
- rm -f eof.log; \
- fi
+check-local: check-forbidden-patterns
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autotestlib_DATA)
## ------------------ ##
TAGS_FILES = $(dist_autotestlib_DATA)
ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autotestlib_DATA)
SUFFIXES = .m4 .m4f
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- $(mkinstalldirs) $(distdir)/$(srcdir)/..
+ $(mkinstalldirs) $(distdir)/./..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
uninstall-nodist_autotestlibDATA
-check-local:
- if (cd $(srcdir) && \
- grep '^_*EOF' $(dist_autotestlib_DATA)) >eof.log; then \
- echo "ERROR: user EOF tags were used:" >&2; \
- sed "s,^,$*.m4: ," <eof.log >&2; \
- echo >&2; \
- exit 1; \
- else \
- rm -f eof.log; \
- fi
+check-local: check-forbidden-patterns
autotest.m4f: $(autotest_m4f_dependencies)
$(MY_AUTOM4TE):
# For parallel builds.
$(build_libdir)/m4sugar/version.m4:
cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+
+check-forbidden-patterns:
+ if (cd $(srcdir) && \
+ grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+ >forbidden.log; then \
+ echo "ERROR: forbidden patterns were found:" >&2; \
+ sed "s,^,$*.m4: ," <forbidden.log >&2; \
+ echo >&2; \
+ exit 1; \
+ else \
+ rm -f forbidden.log; \
+ fi
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
$(ETAGS_FOR_M4SUGAR) \
--regex='/\(A[CU]_DEFUN\|AU_ALIAS\)(\[\([^]]*\)\]/\2/' \
--regex='/AN_\(FUNCTION\|HEADER\|IDENTIFIER\|LIBRARY\|MAKEVAR\|PROGRAM\)(\[\([^]]*\)\]/\2/'
+
+
+## -------------------------------- ##
+## Looking for forbidden patterns. ##
+## -------------------------------- ##
+
+check-forbidden-patterns:
+ if (cd $(srcdir) && \
+ grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+ >forbidden.log; then \
+ echo "ERROR: forbidden patterns were found:" >&2; \
+ sed "s,^,$*.m4: ," <forbidden.log >&2; \
+ echo >&2; \
+ exit 1; \
+ else \
+ rm -f forbidden.log; \
+ fi
## Checks. ##
## -------- ##
-check-local:
- if (cd $(srcdir) && \
- grep '^_*EOF' $(dist_m4sugarlib_DATA)) >eof.log; then \
- echo "ERROR: user EOF tags were used:" >&2; \
- sed "s,^,$*.m4: ," <eof.log >&2; \
- echo >&2; \
- exit 1; \
- else \
- rm -f eof.log; \
- fi
+check-local: check-forbidden-patterns
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_m4sugarlib_DATA)
+
## ------------------ ##
TAGS_FILES = $(dist_m4sugarlib_DATA)
ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_m4sugarlib_DATA)
SUFFIXES = .m4 .m4f
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- $(mkinstalldirs) $(distdir)/$(srcdir)/..
+ $(mkinstalldirs) $(distdir)/./..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
echo 'm4_define([m4_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >version.m4
-check-local:
- if (cd $(srcdir) && \
- grep '^_*EOF' $(dist_m4sugarlib_DATA)) >eof.log; then \
- echo "ERROR: user EOF tags were used:" >&2; \
- sed "s,^,$*.m4: ," <eof.log >&2; \
- echo >&2; \
- exit 1; \
- else \
- rm -f eof.log; \
- fi
+check-local: check-forbidden-patterns
m4sugar.m4f: $(m4sugar_m4f_dependencies)
m4sh.m4f: $(m4sh_m4f_dependencies)
# For parallel builds.
$(build_libdir)/m4sugar/version.m4:
cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+
+check-forbidden-patterns:
+ if (cd $(srcdir) && \
+ grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+ >forbidden.log; then \
+ echo "ERROR: forbidden patterns were found:" >&2; \
+ sed "s,^,$*.m4: ," <forbidden.log >&2; \
+ echo >&2; \
+ exit 1; \
+ else \
+ rm -f forbidden.log; \
+ fi
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- $(mkinstalldirs) $(distdir)/$(srcdir)/../lib
+ $(mkinstalldirs) $(distdir)/./../lib
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
$(build_libdir)/m4sugar/version.m4:
cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+check-forbidden-patterns:
+ if (cd $(srcdir) && \
+ grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+ >forbidden.log; then \
+ echo "ERROR: forbidden patterns were found:" >&2; \
+ sed "s,^,$*.m4: ," <forbidden.log >&2; \
+ echo >&2; \
+ exit 1; \
+ else \
+ rm -f forbidden.log; \
+ fi
+
# Import the dependencies on Autotest and M4sh.
$(srcdir)/package.m4: $(top_srcdir)/configure.ac