On Wed May 22 21:40 2002 -0500, Mark D. Roth wrote: > On Wed May 22 15:50 2002 -0700, Paul Eggert wrote: > > My own reaction is positive, but I would suggest that you write up the > > proposal, as a proposed patch to the manual. (Often the documentation > > is the hardest to write, so perhaps it'll be easier for you if you > > implement it and then document it. :-) > > No problem. I'll mail the documentation patch to the list when I have > it done.
I've attached the first draft of a patch to add the functionality I've proposed. It fixes the order in which the `-I' directories are searched, and it includes updates to the documentation. I'm particularly interested in feedback from Paul and Akim, but I'd also like to know what everyone else thinks. Thanks! -- Mark D. Roth <[EMAIL PROTECTED]> http://www.feep.net/~roth/
cvs server: Diffing . Index: configure.ac =================================================================== RCS file: /cvsroot/autoconf/autoconf/configure.ac,v retrieving revision 1.38 diff -u -r1.38 configure.ac --- configure.ac 22 Apr 2002 14:33:05 -0000 1.38 +++ configure.ac 25 May 2002 04:07:13 -0000 @@ -31,6 +31,14 @@ AM_INIT_AUTOMAKE +AC_ARG_ENABLE([site-macro-dir], + AC_HELP_STRING([--enable-site-macro-dir=DIR], + [use site macro directory DIR @<:@DATADIR/autoconf/site_macros@:>@]), + , + [enable_site_macro_dir='${datadir}/autoconf/site_macros']) +SITE_MACRO_DIR="${enable_site_macro_dir}"; +AC_SUBST([SITE_MACRO_DIR]) + # Initialize the test suite and build position independent wrappers. AC_CONFIG_TESTDIR([tests]) AC_CONFIG_FILES([tests/Makefile tests/atlocal]) cvs server: Diffing bin Index: bin/Makefile.am =================================================================== RCS file: /cvsroot/autoconf/autoconf/bin/Makefile.am,v retrieving revision 1.5 diff -u -r1.5 Makefile.am --- bin/Makefile.am 10 Apr 2002 15:58:19 -0000 1.5 +++ bin/Makefile.am 25 May 2002 04:07:13 -0000 @@ -45,7 +45,8 @@ -e 's,@M4\@,$(M4),g' \ -e 's,@AWK\@,$(AWK),g' \ -e 's,@VERSION\@,$(VERSION),g' \ - -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' + -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \ + -e 's,@SITE_MACRO_DIR\@,$(SITE_MACRO_DIR),g' # autoconf is written in M4sh. AUTOM4SH = $(top_builddir)/tests/autom4te --language M4sh Index: bin/autoconf.in =================================================================== RCS file: /cvsroot/autoconf/autoconf/bin/autoconf.in,v retrieving revision 1.147 diff -u -r1.147 autoconf.in --- bin/autoconf.in 22 Apr 2002 09:13:43 -0000 1.147 +++ bin/autoconf.in 25 May 2002 04:07:13 -0000 @@ -252,6 +252,16 @@ esac done +# Add $AC_MACRO_PATH +if test -n "${AC_MACRO_PATH}"; then + AUTOM4TE="$AUTOM4TE -I `echo ${AC_MACRO_PATH}|sed 's/:/ -I /'`"; +fi + +# Add site macro dir +if test "@SITE_MACRO_DIR@" != "no"; then + AUTOM4TE="$AUTOM4TE -I@SITE_MACRO_DIR@"; +fi + # Find the input file. case $# in 0) Index: bin/autom4te.in =================================================================== RCS file: /cvsroot/autoconf/autoconf/bin/autom4te.in,v retrieving revision 1.61 diff -u -r1.61 autom4te.in --- bin/autom4te.in 20 Apr 2002 06:09:01 -0000 1.61 +++ bin/autom4te.in 25 May 2002 04:07:13 -0000 @@ -267,6 +267,7 @@ my @warning; # M4 include path. +my @std_include; my @include; # 0 for EXIT_SUCCESS. @@ -389,7 +390,8 @@ The environment variable \`WARNINGS\' is honored. Library directories: - -I, --include=DIR look for FILES in DIR (cumulative) + -s, --std-include=DIR use standard include direcotry DIR + -I, --include=DIR look for FILES in DIR (cumulative) Tracing: -t, --trace=MACRO report the MACRO invocations @@ -493,6 +495,7 @@ "M|melt" => \$melt, # Library directories: + "s|std-include=s" => \@std_include, "I|include=s" => \@include, # Tracing: @@ -525,7 +528,10 @@ # a pain since it introduces a useless difference in the path which # invalidates the cache. And strip `.' which is implicit and always # first. - @include = grep { !/^\.$/ } uniq (@include); + @include = (@std_include, grep { !/^\.$/ } uniq (@include)); + #print "$me: include path:\n"; + #foreach (@include) { print "\t$_\n"; } + #print "\n"; # Convert @trace to %trace, and work around the M4 builtins tracing # problem. @@ -599,13 +605,10 @@ # # Neutralize its stdin, so that GNU M4 1.5 doesn't neutralize SIGINT. # - # Be extremely cautious to reverse the includes when talking to M4: - # it doesn't speak the same --include as we do. - # # We don't output directly to the cache files, to avoid problems # when we are interrupted (that leaves corrupted files). my $command = ("$m4" - . join (' --include=', '', reverse @include) + . join (' --include=', '', @include) . " --define=m4_warnings=$m4_warnings" . ' --debug=aflq' . " --error-output=$tcache" . $req->id . "t" @@ -1047,7 +1050,7 @@ # output but comments and empty lines. my $command = ("$m4" . ' --fatal-warning' - . join (' --include=', '', reverse @include) + . join (' --include=', '', @include) . ' --define=divert' . " @ARGV" . ' </dev/null'); @@ -1070,7 +1073,7 @@ # or an improper paren etc. $command = ("$m4" . ' --fatal-warning' - . join (' --include=', '', reverse @include) + . join (' --include=', '', @include) . " --freeze-state=$output" . " @ARGV" . ' </dev/null'); cvs server: Diffing config cvs server: Diffing doc Index: doc/autoconf.texi =================================================================== RCS file: /cvsroot/autoconf/autoconf/doc/autoconf.texi,v retrieving revision 1.627 diff -u -r1.627 autoconf.texi --- doc/autoconf.texi 23 May 2002 17:53:10 -0000 1.627 +++ doc/autoconf.texi 25 May 2002 04:07:15 -0000 @@ -1083,7 +1083,7 @@ @item --include=@var{dir} @itemx -I @var{dir} Also look for input files in @var{dir}. Multiple invocations -accumulate. Directories are browsed from last to first. +accumulate. @end table @node ifnames Invocation @@ -1168,7 +1168,13 @@ @item --include=@var{dir} @itemx -I @var{dir} Also look for input files in @var{dir}. Multiple invocations -accumulate. Directories are browsed from last to first. +accumulate. + +After searching any directories specified using @option{--include}, +@command{autoconf} will also search the directories specified in +the @code{AC_MACRO_PATH} environment variable, if set. And finally, +@command{autoconf} will also search the system-wide site macro directory, +which is set to @samp{$@{datadir@}/autoconf/site_macros} by default. @item --output=@var{file} @itemx -o @var{file} @@ -1441,7 +1447,7 @@ @item --include=@var{dir} @itemx -I @var{dir} Also look for input files in @var{dir}. Multiple invocations -accumulate. Directories are browsed from last to first. +accumulate. @end table @@ -2527,7 +2533,6 @@ @item --include=@var{dir} @itemx -I @var{dir} Also look for input files in @var{dir}. Multiple invocations accumulate. -Directories are browsed from last to first. @item --warnings=@var{category} @itemx -W @var{category} @@ -6980,8 +6985,7 @@ @item --include=@var{dir} @itemx -I @var{dir} Also look for input files in @var{dir}. Multiple invocations -accumulate. Contrary to M4 but in agreement with common sense, -directories are browsed from last to first. +accumulate. @item --output=@var{file} @itemx -o @var{file} @@ -7241,6 +7245,12 @@ @item Autoconf create Autoconf executable configure scripts. @end table + +@item --std-include=@var{dir} +@itemx -s @var{dir} +Use standard include directory @var{dir}. This directory is prepended +to the include path so that the language-specific files are always +included first. @end table @cindex @file{autom4te.cfg} cvs server: Diffing lib Index: lib/autom4te.in =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/autom4te.in,v retrieving revision 1.11 diff -u -r1.11 autom4te.in --- lib/autom4te.in 3 Apr 2002 13:35:59 -0000 1.11 +++ lib/autom4te.in 25 May 2002 04:07:15 -0000 @@ -126,7 +126,7 @@ ## ---------- ## begin-language: "Autoconf" -args: --include @datadir@ +args: --std-include @datadir@ args: autoconf/autoconf.m4f args: acsite.m4? args: aclocal.m4? @@ -144,7 +144,7 @@ ## -------- ## begin-language: "Autotest" -args: --include @datadir@ +args: --std-include @datadir@ args: autotest/autotest.m4f args: package.m4? args: --mode 777 @@ -157,7 +157,7 @@ ## ---- ## begin-language: "M4sh" -args: --include @datadir@ +args: --std-include @datadir@ args: m4sugar/m4sh.m4f args: --mode 777 args: --language M4sugar @@ -169,7 +169,7 @@ ## ------- ## begin-language: "M4sugar" -args: --include @datadir@ +args: --std-include @datadir@ args: m4sugar/m4sugar.m4f args: --warning syntax end-language: "M4sugar" cvs server: Diffing lib/Autom4te cvs server: Diffing lib/autoconf cvs server: Diffing lib/autoscan cvs server: Diffing lib/autotest cvs server: Diffing lib/emacs cvs server: Diffing lib/m4sugar cvs server: Diffing man cvs server: Diffing tests