From f78ae3e5d5c41557f24a9233fae88df4b7b9f1b4 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Tue, 5 Feb 2002 08:24:06 +0000 Subject: [PATCH] Implement `autom4te --freeze'. * bin/autom4te.in (&freeze): New. * lib/autoconf/autoconf.m4, lib/autotest/general.m4, * lib/m4sugar/m4sh.m4: Don't include files given by autom4te. --- Makefile.am | 6 ++- Makefile.in | 4 +- aclocal.m4 | 2 +- lib/Makefile.am | 19 ++++++- lib/Makefile.in | 2 +- lib/autoconf/Makefile.am | 72 ++----------------------- lib/autoconf/Makefile.in | 113 ++++++++++++++++++++------------------- lib/autotest/Makefile.am | 30 +++++++++-- lib/autotest/Makefile.in | 113 +++++++++++++++++++++++++++++++++++---- lib/m4sugar/Makefile.am | 33 ++++++++++-- lib/m4sugar/Makefile.in | 84 +++++++++++++++++++++++++++-- man/autom4te.1 | 8 ++- 12 files changed, 334 insertions(+), 152 deletions(-) diff --git a/Makefile.am b/Makefile.am index 4ef70a49..6e3844bb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ ## Process this file with automake to create Makefile.in. -*-Makefile-*- ## Makefile for Autoconf. -## Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +## Copyright (C) 1999, 2000, 2001, 2002 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 @@ -20,7 +20,9 @@ AUTOMAKE_OPTIONS = check-news 1.5b dist-bzip2 readme-alpha -SUBDIRS = . lib bin config man doc tests +# bin/ and tests/ must be run first, as they build the tests executables +# (tests/autom4te etc.), that we happen to use here. +SUBDIRS = bin tests . lib config man doc ACLOCAL_AMFLAGS = -I config diff --git a/Makefile.in b/Makefile.in index cacc99b8..ad8b5bc0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -81,7 +81,9 @@ lispdir = @lispdir@ AUTOMAKE_OPTIONS = check-news 1.5b dist-bzip2 readme-alpha -SUBDIRS = . lib bin config man doc tests +# bin/ and tests/ must be run first, as they build the tests executables +# (tests/autom4te etc.), that we happen to use here. +SUBDIRS = bin tests . lib config man doc ACLOCAL_AMFLAGS = -I config diff --git a/aclocal.m4 b/aclocal.m4 index 03f5c019..f4b0d6a1 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -# aclocal.m4 generated automatically by aclocal 1.5c -*- Autoconf -*- +# aclocal.m4t generated automatically by aclocal 1.5c -*- Autoconf -*- # Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. diff --git a/lib/Makefile.am b/lib/Makefile.am index 2d18d3a5..ef3bc384 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,8 +1,25 @@ ## Process this file with automake to create Makefile.in +## Copyright 2002 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. + SUBDIRS = Autom4te m4sugar autoconf autotest autoscan emacs nodist_pkgdata_DATA = autom4te.cfg -EXTRA_DIST = autom4te.in +EXTRA_DIST = autom4te.in freeze.mk edit = sed \ -e 's,@SHELL\@,$(SHELL),g' \ diff --git a/lib/Makefile.in b/lib/Makefile.in index af831b1a..831b23a4 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -81,7 +81,7 @@ lispdir = @lispdir@ SUBDIRS = Autom4te m4sugar autoconf autotest autoscan emacs nodist_pkgdata_DATA = autom4te.cfg -EXTRA_DIST = autom4te.in +EXTRA_DIST = autom4te.in freeze.mk edit = sed \ -e 's,@SHELL\@,$(SHELL),g' \ diff --git a/lib/autoconf/Makefile.am b/lib/autoconf/Makefile.am index 7b0fad34..6ffbad9d 100644 --- a/lib/autoconf/Makefile.am +++ b/lib/autoconf/Makefile.am @@ -26,7 +26,7 @@ dist_autoconflib_DATA = \ functions.m4 headers.m4 types.m4 libs.m4 programs.m4 nodist_autoconflib_DATA = autoconf.m4f - +CLEANFILES = $(nodist_autoconflib_DATA) ## --------------- ## @@ -62,71 +62,5 @@ check-local: ## The frozen files. ## ## ------------------ ## -SUFFIXES = .m4 .m4f -M4_INCLUDES = --include $(srcdir) \ - --include $(top_builddir)/lib \ - --include $(top_srcdir)/lib - -# When processing the file with diversion disabled, there must be no -# output but comments and empty lines. -# If freezing produces output, something went wrong: a bad `divert', -# or an improper paren etc. -# It may happen that the output does not end with a end of line, hence -# force an end of line when reporting errors. -.m4.m4f: - $(M4) $(M4_INCLUDES) --fatal-warning --define divert \ - $*.m4 2>error.log | \ - sed 's/#.*//;/^$$/d' >process.log - if grep . error.log >/dev/null 2>&1; then \ - echo "ERROR: Processing $*.m4 produced errors:" >&2; \ - sed "s,^,$*.m4: ," &2; \ - echo >&2; \ - exit 1; \ - else \ - rm -f error.log; \ - fi - if grep . process.log >/dev/null 2>&1; then \ - echo "ERROR: Processing $*.m4 produced output:" >&2; \ - sed "s,^,$*.m4: ," &2; \ - echo >&2; \ - exit 1; \ - else \ - rm -f process.log; \ - fi - $(M4) $(M4_INCLUDES) --fatal-warning --freeze-state=$*.m4f \ - $*.m4 >freeze.log - if grep . freeze.log >/dev/null 2>&1; then \ - echo "ERROR: Freezing $(libdir)/$*.m4 produced output:" >&2; \ - sed "s,^,$*.m4: ," &2; \ - echo >&2; \ - exit 1; \ - else \ - rm -f freeze.log; \ - fi - - -# Some day we should explain to Automake how to use autom4te to compute -# the dependencies... -srclibdir = $(top_srcdir)/lib -autoconf.m4f: $(srclibdir)/m4sugar/m4sugar.m4 \ - ../m4sugar/version.m4 \ - $(srclibdir)/m4sugar/m4sh.m4 \ - $(srclibdir)/autoconf/autoconf.m4 \ - $(srclibdir)/autoconf/general.m4 \ - $(srclibdir)/autoconf/autoheader.m4 \ - $(srclibdir)/autoconf/autoupdate.m4 \ - $(srclibdir)/autoconf/autotest.m4 \ - $(srclibdir)/autoconf/status.m4 \ - $(srclibdir)/autoconf/oldnames.m4 \ - $(srclibdir)/autoconf/specific.m4 \ - $(srclibdir)/autoconf/lang.m4 \ - $(srclibdir)/autoconf/c.m4 \ - $(srclibdir)/autoconf/fortran.m4 \ - $(srclibdir)/autoconf/functions.m4 \ - $(srclibdir)/autoconf/headers.m4 \ - $(srclibdir)/autoconf/types.m4 \ - $(srclibdir)/autoconf/libs.m4 \ - $(srclibdir)/autoconf/programs.m4 - -# Files that should be removed, but which Automake does not know. -CLEANFILES = autoconf.m4f +autoconf.m4f: $(autoconf_m4f_dependencies) +include ../freeze.mk diff --git a/lib/autoconf/Makefile.in b/lib/autoconf/Makefile.in index 54f3464e..c0bace59 100644 --- a/lib/autoconf/Makefile.in +++ b/lib/autoconf/Makefile.in @@ -89,6 +89,7 @@ dist_autoconflib_DATA = \ nodist_autoconflib_DATA = autoconf.m4f +CLEANFILES = $(nodist_autoconflib_DATA) TAGS_FILES = $(dist_autoconflib_DATA) @@ -97,17 +98,55 @@ ETAGS_ARGS = --lang=none \ SUFFIXES = .m4 .m4f -M4_INCLUDES = --include $(srcdir) \ - --include $(top_builddir)/lib \ - --include $(top_srcdir)/lib +AUTOM4TE = $(top_builddir)/tests/autom4te +AUTOM4TE_CFG = $(top_builddir)/lib/autom4te.cfg + +# Factor the dependencies between all the frozen files. # Some day we should explain to Automake how to use autom4te to compute # the dependencies... -srclibdir = $(top_srcdir)/lib +src_libdir = $(top_srcdir)/lib +build_libdir = $(top_builddir)/lib + +m4f_dependencies = $(AUTOM4TE) $(AUTOM4TE_CFG) + +m4sugar_m4f_dependencies = \ + $(m4f_dependencies) \ + $(src_libdir)/m4sugar/m4sugar.m4 \ + $(build_libdir)/m4sugar/version.m4 + + +m4sh_m4f_dependencies = \ + $(m4sugar_m4f_dependencies) \ + $(src_libdir)/m4sugar/m4sh.m4 + + +autotest_m4f_dependencies = \ + $(m4sh_m4f_dependencies) \ + $(src_libdir)/autotest/autotest.m4 \ + $(src_libdir)/autotest/general.m4 + + +autoconf_m4f_dependencies = \ + $(m4sh_m4f_dependencies) \ + $(src_libdir)/autoconf/general.m4 \ + $(src_libdir)/autoconf/autoheader.m4 \ + $(src_libdir)/autoconf/autoupdate.m4 \ + $(src_libdir)/autoconf/autotest.m4 \ + $(src_libdir)/autoconf/status.m4 \ + $(src_libdir)/autoconf/oldnames.m4 \ + $(src_libdir)/autoconf/specific.m4 \ + $(src_libdir)/autoconf/lang.m4 \ + $(src_libdir)/autoconf/c.m4 \ + $(src_libdir)/autoconf/fortran.m4 \ + $(src_libdir)/autoconf/functions.m4 \ + $(src_libdir)/autoconf/headers.m4 \ + $(src_libdir)/autoconf/types.m4 \ + $(src_libdir)/autoconf/libs.m4 \ + $(src_libdir)/autoconf/programs.m4 \ + $(src_libdir)/autoconf/autoconf.m4 -# Files that should be removed, but which Automake does not know. -CLEANFILES = autoconf.m4f subdir = lib/autoconf mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs CONFIG_CLEAN_FILES = @@ -119,7 +158,7 @@ all: all-am .SUFFIXES: .SUFFIXES: .m4 .m4f -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) +$(srcdir)/Makefile.in: Makefile.am $(srcdir)/../freeze.mk $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/autoconf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @@ -315,6 +354,12 @@ check-local: rm -f eof.log; \ fi +autoconf.m4f: $(autoconf_m4f_dependencies) +$(AUTOM4TE): + cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) autom4te +$(AUTOM4TE_CFG): + cd $(top_builddir)/lib && $(MAKE) $(AM_MAKEFLAGS) autom4te.cfg + # When processing the file with diversion disabled, there must be no # output but comments and empty lines. # If freezing produces output, something went wrong: a bad `divert', @@ -322,54 +367,12 @@ check-local: # It may happen that the output does not end with a end of line, hence # force an end of line when reporting errors. .m4.m4f: - $(M4) $(M4_INCLUDES) --fatal-warning --define divert \ - $*.m4 2>error.log | \ - sed 's/#.*//;/^$$/d' >process.log - if grep . error.log >/dev/null 2>&1; then \ - echo "ERROR: Processing $*.m4 produced errors:" >&2; \ - sed "s,^,$*.m4: ," &2; \ - echo >&2; \ - exit 1; \ - else \ - rm -f error.log; \ - fi - if grep . process.log >/dev/null 2>&1; then \ - echo "ERROR: Processing $*.m4 produced output:" >&2; \ - sed "s,^,$*.m4: ," &2; \ - echo >&2; \ - exit 1; \ - else \ - rm -f process.log; \ - fi - $(M4) $(M4_INCLUDES) --fatal-warning --freeze-state=$*.m4f \ - $*.m4 >freeze.log - if grep . freeze.log >/dev/null 2>&1; then \ - echo "ERROR: Freezing $(libdir)/$*.m4 produced output:" >&2; \ - sed "s,^,$*.m4: ," &2; \ - echo >&2; \ - exit 1; \ - else \ - rm -f freeze.log; \ - fi -autoconf.m4f: $(srclibdir)/m4sugar/m4sugar.m4 \ - ../m4sugar/version.m4 \ - $(srclibdir)/m4sugar/m4sh.m4 \ - $(srclibdir)/autoconf/autoconf.m4 \ - $(srclibdir)/autoconf/general.m4 \ - $(srclibdir)/autoconf/autoheader.m4 \ - $(srclibdir)/autoconf/autoupdate.m4 \ - $(srclibdir)/autoconf/autotest.m4 \ - $(srclibdir)/autoconf/status.m4 \ - $(srclibdir)/autoconf/oldnames.m4 \ - $(srclibdir)/autoconf/specific.m4 \ - $(srclibdir)/autoconf/lang.m4 \ - $(srclibdir)/autoconf/c.m4 \ - $(srclibdir)/autoconf/fortran.m4 \ - $(srclibdir)/autoconf/functions.m4 \ - $(srclibdir)/autoconf/headers.m4 \ - $(srclibdir)/autoconf/types.m4 \ - $(srclibdir)/autoconf/libs.m4 \ - $(srclibdir)/autoconf/programs.m4 + $(AUTOM4TE) \ + --language=$* \ + --freeze \ + --include=$(srcdir)/.. \ + --include=.. \ + --output=$@ # 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: diff --git a/lib/autotest/Makefile.am b/lib/autotest/Makefile.am index bbda1df0..73ef2c3e 100644 --- a/lib/autotest/Makefile.am +++ b/lib/autotest/Makefile.am @@ -1,10 +1,26 @@ ## Process this file with automake to create Makefile.in +## Copyright 2001, 2002 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. + autotestlibdir = $(pkgdatadir)/autotest - dist_autotestlib_DATA = autotest.m4 general.m4 - - +nodist_autotestlib_DATA = autotest.m4f +CLEANFILES = $(nodist_autotestlib_DATA) ## --------------- ## ## Building TAGS. ## @@ -30,3 +46,11 @@ check-local: else \ rm -f eof.log; \ fi + + +## ------------------ ## +## The frozen files. ## +## ------------------ ## + +autotest.m4f: $(autotests_m4f_dependencies) +include ../freeze.mk diff --git a/lib/autotest/Makefile.in b/lib/autotest/Makefile.in index a1f1ea71..0cc40aa5 100644 --- a/lib/autotest/Makefile.in +++ b/lib/autotest/Makefile.in @@ -80,25 +80,78 @@ install_sh = @install_sh@ lispdir = @lispdir@ autotestlibdir = $(pkgdatadir)/autotest - dist_autotestlib_DATA = autotest.m4 general.m4 +nodist_autotestlib_DATA = autotest.m4f +CLEANFILES = $(nodist_autotestlib_DATA) TAGS_FILES = $(dist_autotestlib_DATA) ETAGS_ARGS = --lang=none \ --regex='/\(A[CU]_DEFUN\|m4_\(defun\|define\)\|define\)(\[\([^]]*\)\]/\3/' + +SUFFIXES = .m4 .m4f + +AUTOM4TE = $(top_builddir)/tests/autom4te + +AUTOM4TE_CFG = $(top_builddir)/lib/autom4te.cfg + +# Factor the dependencies between all the frozen files. +# Some day we should explain to Automake how to use autom4te to compute +# the dependencies... +src_libdir = $(top_srcdir)/lib +build_libdir = $(top_builddir)/lib + +m4f_dependencies = $(AUTOM4TE) $(AUTOM4TE_CFG) + +m4sugar_m4f_dependencies = \ + $(m4f_dependencies) \ + $(src_libdir)/m4sugar/m4sugar.m4 \ + $(build_libdir)/m4sugar/version.m4 + + +m4sh_m4f_dependencies = \ + $(m4sugar_m4f_dependencies) \ + $(src_libdir)/m4sugar/m4sh.m4 + + +autotest_m4f_dependencies = \ + $(m4sh_m4f_dependencies) \ + $(src_libdir)/autotest/autotest.m4 \ + $(src_libdir)/autotest/general.m4 + + +autoconf_m4f_dependencies = \ + $(m4sh_m4f_dependencies) \ + $(src_libdir)/autoconf/general.m4 \ + $(src_libdir)/autoconf/autoheader.m4 \ + $(src_libdir)/autoconf/autoupdate.m4 \ + $(src_libdir)/autoconf/autotest.m4 \ + $(src_libdir)/autoconf/status.m4 \ + $(src_libdir)/autoconf/oldnames.m4 \ + $(src_libdir)/autoconf/specific.m4 \ + $(src_libdir)/autoconf/lang.m4 \ + $(src_libdir)/autoconf/c.m4 \ + $(src_libdir)/autoconf/fortran.m4 \ + $(src_libdir)/autoconf/functions.m4 \ + $(src_libdir)/autoconf/headers.m4 \ + $(src_libdir)/autoconf/types.m4 \ + $(src_libdir)/autoconf/libs.m4 \ + $(src_libdir)/autoconf/programs.m4 \ + $(src_libdir)/autoconf/autoconf.m4 + subdir = lib/autotest mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs CONFIG_CLEAN_FILES = DIST_SOURCES = -DATA = $(dist_autotestlib_DATA) +DATA = $(dist_autotestlib_DATA) $(nodist_autotestlib_DATA) DIST_COMMON = $(dist_autotestlib_DATA) Makefile.am Makefile.in all: all-am .SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) +.SUFFIXES: .m4 .m4f +$(srcdir)/Makefile.in: Makefile.am $(srcdir)/../freeze.mk $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/autotest/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @@ -122,6 +175,24 @@ uninstall-dist_autotestlibDATA: echo " rm -f $(DESTDIR)$(autotestlibdir)/$$f"; \ rm -f $(DESTDIR)$(autotestlibdir)/$$f; \ done +nodist_autotestlibDATA_INSTALL = $(INSTALL_DATA) +install-nodist_autotestlibDATA: $(nodist_autotestlib_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(autotestlibdir) + @list='$(nodist_autotestlib_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(nodist_autotestlibDATA_INSTALL) $$d$$p $(DESTDIR)$(autotestlibdir)/$$f"; \ + $(nodist_autotestlibDATA_INSTALL) $$d$$p $(DESTDIR)$(autotestlibdir)/$$f; \ + done + +uninstall-nodist_autotestlibDATA: + @$(NORMAL_UNINSTALL) + @list='$(nodist_autotestlib_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(autotestlibdir)/$$f"; \ + rm -f $(DESTDIR)$(autotestlibdir)/$$f; \ + done ETAGS = etags ETAGSFLAGS = @@ -188,7 +259,7 @@ check: check-am all-am: Makefile $(DATA) installdirs: - $(mkinstalldirs) $(DESTDIR)$(autotestlibdir) + $(mkinstalldirs) $(DESTDIR)$(autotestlibdir) $(DESTDIR)$(autotestlibdir) install: install-am install-exec: install-exec-am @@ -207,6 +278,7 @@ install-strip: mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* @@ -230,7 +302,8 @@ info: info-am info-am: -install-data-am: install-dist_autotestlibDATA +install-data-am: install-dist_autotestlibDATA \ + install-nodist_autotestlibDATA install-exec-am: @@ -248,17 +321,19 @@ mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic -uninstall-am: uninstall-dist_autotestlibDATA uninstall-info-am +uninstall-am: uninstall-dist_autotestlibDATA uninstall-info-am \ + uninstall-nodist_autotestlibDATA .PHONY: GTAGS all all-am check check-am check-local clean clean-generic \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ info info-am install install-am install-data install-data-am \ install-dist_autotestlibDATA install-exec install-exec-am \ - install-info install-info-am install-man install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ + install-info install-info-am install-man \ + install-nodist_autotestlibDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic tags \ uninstall uninstall-am uninstall-dist_autotestlibDATA \ - uninstall-info-am + uninstall-info-am uninstall-nodist_autotestlibDATA check-local: @@ -271,6 +346,26 @@ check-local: else \ rm -f eof.log; \ fi + +autotest.m4f: $(autotests_m4f_dependencies) +$(AUTOM4TE): + cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) autom4te +$(AUTOM4TE_CFG): + cd $(top_builddir)/lib && $(MAKE) $(AM_MAKEFLAGS) autom4te.cfg + +# When processing the file with diversion disabled, there must be no +# output but comments and empty lines. +# If freezing produces output, something went wrong: a bad `divert', +# or an improper paren etc. +# It may happen that the output does not end with a end of line, hence +# force an end of line when reporting errors. +.m4.m4f: + $(AUTOM4TE) \ + --language=$* \ + --freeze \ + --include=$(srcdir)/.. \ + --include=.. \ + --output=$@ # 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: diff --git a/lib/m4sugar/Makefile.am b/lib/m4sugar/Makefile.am index ec7329db..3d7761d6 100644 --- a/lib/m4sugar/Makefile.am +++ b/lib/m4sugar/Makefile.am @@ -1,9 +1,26 @@ ## Process this file with automake to create Makefile.in +## Copyright 2001, 2002 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. + m4sugarlibdir = $(pkgdatadir)/m4sugar dist_m4sugarlib_DATA = m4sugar.m4 m4sh.m4 -nodist_m4sugarlib_DATA = version.m4 -DISTCLEANFILES = $(nodist_m4sugarlib_DATA) +nodist_m4sugarlib_DATA = version.m4 m4sugar.m4f m4sh.m4f +CLEANFILES = $(nodist_m4sugarlib_DATA) ## ------------ ## ## version.m4. ## @@ -13,7 +30,8 @@ version.m4: $(top_srcdir)/configure.ac { \ echo '# This file is part of -*- Autoconf -*-.'; \ echo '# Version of Autoconf.'; \ - echo '# Copyright 1999, 2000, 2001 Free Software Foundation, Inc.'; \ + echo '# Copyright (C) 1999, 2000, 2001, 2002'; \ + echo '# Free Software Foundation, Inc.'; \ echo ;\ echo 'm4_define([m4_PACKAGE_NAME], [@PACKAGE_NAME@])'; \ echo 'm4_define([m4_PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \ @@ -47,3 +65,12 @@ check-local: else \ rm -f eof.log; \ fi + + +## ------------------ ## +## The frozen files. ## +## ------------------ ## + +m4sugar.m4f: $(m4sugar_m4f_dependencies) +m4sh.m4f: $(m4sh_m4f_dependencies) +include ../freeze.mk diff --git a/lib/m4sugar/Makefile.in b/lib/m4sugar/Makefile.in index 7eb0f58a..022d63ca 100644 --- a/lib/m4sugar/Makefile.in +++ b/lib/m4sugar/Makefile.in @@ -81,14 +81,65 @@ lispdir = @lispdir@ m4sugarlibdir = $(pkgdatadir)/m4sugar dist_m4sugarlib_DATA = m4sugar.m4 m4sh.m4 -nodist_m4sugarlib_DATA = version.m4 -DISTCLEANFILES = $(nodist_m4sugarlib_DATA) +nodist_m4sugarlib_DATA = version.m4 m4sugar.m4f m4sh.m4f +CLEANFILES = $(nodist_m4sugarlib_DATA) TAGS_FILES = $(dist_m4sugarlib_DATA) ETAGS_ARGS = --lang=none \ --regex='/\(A[CU]_DEFUN\|m4_\(defun\|define\)\|define\)(\[\([^]]*\)\]/\3/' + +SUFFIXES = .m4 .m4f + +AUTOM4TE = $(top_builddir)/tests/autom4te + +AUTOM4TE_CFG = $(top_builddir)/lib/autom4te.cfg + +# Factor the dependencies between all the frozen files. +# Some day we should explain to Automake how to use autom4te to compute +# the dependencies... +src_libdir = $(top_srcdir)/lib +build_libdir = $(top_builddir)/lib + +m4f_dependencies = $(AUTOM4TE) $(AUTOM4TE_CFG) + +m4sugar_m4f_dependencies = \ + $(m4f_dependencies) \ + $(src_libdir)/m4sugar/m4sugar.m4 \ + $(build_libdir)/m4sugar/version.m4 + + +m4sh_m4f_dependencies = \ + $(m4sugar_m4f_dependencies) \ + $(src_libdir)/m4sugar/m4sh.m4 + + +autotest_m4f_dependencies = \ + $(m4sh_m4f_dependencies) \ + $(src_libdir)/autotest/autotest.m4 \ + $(src_libdir)/autotest/general.m4 + + +autoconf_m4f_dependencies = \ + $(m4sh_m4f_dependencies) \ + $(src_libdir)/autoconf/general.m4 \ + $(src_libdir)/autoconf/autoheader.m4 \ + $(src_libdir)/autoconf/autoupdate.m4 \ + $(src_libdir)/autoconf/autotest.m4 \ + $(src_libdir)/autoconf/status.m4 \ + $(src_libdir)/autoconf/oldnames.m4 \ + $(src_libdir)/autoconf/specific.m4 \ + $(src_libdir)/autoconf/lang.m4 \ + $(src_libdir)/autoconf/c.m4 \ + $(src_libdir)/autoconf/fortran.m4 \ + $(src_libdir)/autoconf/functions.m4 \ + $(src_libdir)/autoconf/headers.m4 \ + $(src_libdir)/autoconf/types.m4 \ + $(src_libdir)/autoconf/libs.m4 \ + $(src_libdir)/autoconf/programs.m4 \ + $(src_libdir)/autoconf/autoconf.m4 + subdir = lib/m4sugar mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs CONFIG_CLEAN_FILES = @@ -99,7 +150,8 @@ DIST_COMMON = $(dist_m4sugarlib_DATA) Makefile.am Makefile.in all: all-am .SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) +.SUFFIXES: .m4 .m4f +$(srcdir)/Makefile.in: Makefile.am $(srcdir)/../freeze.mk $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/m4sugar/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @@ -226,10 +278,10 @@ install-strip: mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -288,7 +340,8 @@ version.m4: $(top_srcdir)/configure.ac { \ echo '# This file is part of -*- Autoconf -*-.'; \ echo '# Version of Autoconf.'; \ - echo '# Copyright 1999, 2000, 2001 Free Software Foundation, Inc.'; \ + echo '# Copyright (C) 1999, 2000, 2001, 2002'; \ + echo '# Free Software Foundation, Inc.'; \ echo ;\ echo 'm4_define([m4_PACKAGE_NAME], [@PACKAGE_NAME@])'; \ echo 'm4_define([m4_PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \ @@ -307,6 +360,27 @@ check-local: else \ rm -f eof.log; \ fi + +m4sugar.m4f: $(m4sugar_m4f_dependencies) +m4sh.m4f: $(m4sh_m4f_dependencies) +$(AUTOM4TE): + cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) autom4te +$(AUTOM4TE_CFG): + cd $(top_builddir)/lib && $(MAKE) $(AM_MAKEFLAGS) autom4te.cfg + +# When processing the file with diversion disabled, there must be no +# output but comments and empty lines. +# If freezing produces output, something went wrong: a bad `divert', +# or an improper paren etc. +# It may happen that the output does not end with a end of line, hence +# force an end of line when reporting errors. +.m4.m4f: + $(AUTOM4TE) \ + --language=$* \ + --freeze \ + --include=$(srcdir)/.. \ + --include=.. \ + --output=$@ # 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: diff --git a/man/autom4te.1 b/man/autom4te.1 index cd9c547e..6613665a 100644 --- a/man/autom4te.1 +++ b/man/autom4te.1 @@ -6,8 +6,8 @@ autom4te \- Generate files and scripts thanks to M4 .B autom4te [\fIOPTION\fR] ... [\fIFILES\fR] .SH DESCRIPTION -Run GNU M4 on the FILES, avoiding useless runs. If tracing, the output -consists of the traces only, otherwise output the expansion of the FILES. +Run GNU M4 on the FILES, avoiding useless runs. Output the traces if tracing, +the frozen file if freezing, otherwise the expansion of the FILES. .PP If some of the FILES are named `FILE.m4f' they are considered to be M4 frozen files of all the previous files (which are therefore not loaded). @@ -96,6 +96,10 @@ report the MACRO invocations .TP \fB\-p\fR, \fB\-\-preselect\fR=\fIMACRO\fR prepare to trace MACRO in a future run +.SS "Freezing:" +.TP +\fB\-F\fR, \fB\-\-freeze\fR +produce an M4 frozen state file for FILES .SH AUTHOR Written by Akim Demaille. .PP