diff options
author | Akim Demaille <akim@epita.fr> | 1999-09-17 08:17:40 +0000 |
---|---|---|
committer | Akim Demaille <akim@epita.fr> | 1999-09-17 08:17:40 +0000 |
commit | 246661b54506af039e235629bfed92f8ac04ceef (patch) | |
tree | 698139349d0d1f341d3463c07cf73afb3962c3ff | |
parent | 4e86ec447cfc248cfd31d1e27733143d60539a84 (diff) | |
download | autoconf-246661b54506af039e235629bfed92f8ac04ceef.tar.gz |
1999-09-17 Akim Demaille <akim@epita.fr>
* acgeneral.m4 (AC_INIT_PARSE_ARGS): Improve configure's --help.
* acgeneral.m4 (AC_OUTPUT): Change the root of filenames of
config.status from $conftest to $confstat.
The previous patch to make config.status reentrant was wrong,
because it changed some `conftest' that are used by configure into
`$conftest', while it was for config.status only. To avoid
another confusion like this, all the filenames of config.status
should be `$confstat*', and those of configure should be
`conftest*'.
(AC_OUTPUT): Rename the uses of `ac_file' for the sed fragments as
`ac_sed_frag'.
* acgeneral.m4 (AC_OUTPUT): This macro used to open the here
documents that configure uses to generate config.status, included
that of the submacros. Now, it no longer handles the here
documents for its subroutines (it was far to hard to track).
(AC_OUTPUT_FILES): Open and close your here documents to
$CONFIG_STATUS.
(AC_OUTPUT_HEADER): Likewise.
(AC_OUTPUT_LINKS): Likewise.
* acgeneral.m4 (AC_OUTPUT_FILES): Move $ac_vpsub and $extrasub
from the AC_SUBST substitutions (i.e., that of @SHELL@ etc.) to
the specific section (that of @srcdir@ etc.).
Now the ``general substitution'' section is absolutely uniform.
* acgeneral.m4 (AC_SUBST): Change sed call from `s%@from@%to%g'
into `s%@from@%to%;t t'.
(AC_SUBST_FILE): Likewise.
(AC_OUTPUT_FILES): Optimize the sed scripts by branching if there
are no `@' on the line. Impressive speed up.
* Makefile.in (DISTFILES): Add THANKS.
* THANKS: New file.
-rw-r--r-- | ChangeLog | 41 | ||||
-rw-r--r-- | Makefile.in | 10 | ||||
-rw-r--r-- | THANKS | 42 | ||||
-rw-r--r-- | acgeneral.m4 | 233 | ||||
-rwxr-xr-x | configure | 174 | ||||
-rw-r--r-- | doc/Makefile.in | 10 | ||||
-rw-r--r-- | lib/autoconf/general.m4 | 233 |
7 files changed, 488 insertions, 255 deletions
@@ -1,3 +1,42 @@ +1999-09-17 Akim Demaille <akim@epita.fr> + + * acgeneral.m4 (AC_INIT_PARSE_ARGS): Improve configure's --help. + + * acgeneral.m4 (AC_OUTPUT): Change the root of filenames of + config.status from $conftest to $confstat. + The previous patch to make config.status reentrant was wrong, + because it changed some `conftest' that are used by configure into + `$conftest', while it was for config.status only. To avoid + another confusion like this, all the filenames of config.status + should be `$confstat*', and those of configure should be + `conftest*'. + (AC_OUTPUT): Rename the uses of `ac_file' for the sed fragments as + `ac_sed_frag'. + + * acgeneral.m4 (AC_OUTPUT): This macro used to open the here + documents that configure uses to generate config.status, included + that of the submacros. Now, it no longer handles the here + documents for its subroutines (it was far to hard to track). + (AC_OUTPUT_FILES): Open and close your here documents to + $CONFIG_STATUS. + (AC_OUTPUT_HEADER): Likewise. + (AC_OUTPUT_LINKS): Likewise. + + * acgeneral.m4 (AC_OUTPUT_FILES): Move $ac_vpsub and $extrasub + from the AC_SUBST substitutions (i.e., that of @SHELL@ etc.) to + the specific section (that of @srcdir@ etc.). + Now the ``general substitution'' section is absolutely uniform. + + * acgeneral.m4 (AC_SUBST): Change sed call from `s%@from@%to%g' + into `s%@from@%to%;t t'. + (AC_SUBST_FILE): Likewise. + (AC_OUTPUT_FILES): Optimize the sed scripts by branching if there + are no `@' on the line. Impressive speed up. + + * Makefile.in (DISTFILES): Add THANKS. + + * THANKS: New file. + 1999-09-15 Akim Demaille <akim@epita.fr> * acgeneral.m4 (AC_CHECK_FILE): Use ifset. @@ -988,7 +1027,7 @@ Wed Sep 11 15:35:19 1997 Chris Provenzano <proven@cygnus.com> Thu Sep 4 22:30:40 1997 Jeffrey A Law (law@cygnus.com) - * acspecific (AC_PROC_INSTALL): Don't use installbsd on OSF.. + * acspecific (AC_PROC_INSTALL): Don't use installbsd on OSF. Wed Sep 3 23:00:44 1997 Chris Provenzano <proven@cygnus.com> diff --git a/Makefile.in b/Makefile.in index f98fa184..7ccda43e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -32,7 +32,7 @@ AWK = @AWK@ PERL = @PERL@ # Programs that are ALWAYS installed (and are created in the build dir). -ASCRIPTS = autoconf autoheader autoreconf autoupdate ifnames +ASCRIPTS = autoconf autoheader autoreconf autoupdate ifnames # M4 input that is frozen. M4FROZEN = autoconf.m4f autoheader.m4f @@ -66,7 +66,7 @@ M4FILES = autoconf.m4 acgeneral.m4 acoldnames.m4 acspecific.m4 autoheader.m4 # Files that can be generated, but should be up to date for a distribution. DISTDEP = info Makefile # Files to distribute. -DISTFILES = AUTHORS COPYING ChangeLog ChangeLog.1 INSTALL \ +DISTFILES = AUTHORS THANKS COPYING ChangeLog ChangeLog.1 INSTALL \ Makefile.in NEWS README TODO $(M4FILES) \ acconfig.h acfunctions acheaders acidentifiers \ acmakevars acprograms autoconf.info* \ @@ -190,7 +190,11 @@ uninstall: if test -f standards.info || test -f $(srcdir)/standards.info; \ then cd $(infodir) && rm -f standards.info*; fi +# Why don't we run ./autoconf here? There are substitutions performed +# by autoconf which are necessary. Now, the Makefile breaks configure, +# and one has to ./autoconf to have the right thing happen. ${srcdir}/configure: configure.in $(M4FILES) + echo "FIXME: Why not running ./autoconf -m . ?" cd $(srcdir) && \ rm -f configure configure.tmp && \ $(M4) autoconf.m4 configure.in > configure.tmp && \ @@ -212,7 +216,7 @@ clean mostlyclean distclean maintainer-clean:: done clean mostlyclean distclean maintainer-clean:: - rm -f $(SCRIPTS) *.tmp + rm -f $(SCRIPTS) *.tmp rm -f $(M4FROZEN) rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.log rm -f *.pg *.pgs *.toc *.tp *.tps *.vr *.vrs @@ -0,0 +1,42 @@ +Autoconf was originally written by David J. MacKenzie <djm@uunet.uu.net>. +It would not be what it is today without the invaluable help of these +people: + +Aaron Crane <aaronc@pobox.com> +Akim Demaille <akim@epita.fr> +Alexandre Oliva <oliva@dcc.unicamp.br> +Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> +Ben Elliston <bje@cygnus.com> +Chris Provenzano <proven@cygnus.com> +Christian Krone <krischan@sql.de> +Dave Adams <adams@hpesdwa.fc.hp.com> +Didier Verna <verna@inf.enst.fr> +Doug Evans <dje@canuck.cygnus.com> +Eric Mumpower <nocturne@cygnus.com> +Felix Lee <flee@cygnus.com> +Gary V. Vaughan <gvaughan@oranda.demon.co.uk> +Gordon Matzigkeit <gord@trick.fig.org> +H.J. Lu <hjl@gnu.org> +Ian Lance Taylor <ian@cygnus.com> +J"orn Rennecke <amylaar@cygnus.co.uk> +James A. Lupo <lupoja@feynman.ml.wpafb.af.mil> +Jason Molenda <crash@cygnus.co.jp> +Jeff Garzik <jgarzik@pobox.com> +Jeffrey A Law (law@cygnus.com) +Karl Berry <karl@cs.umb.edu> +Matthew D. Langston <langston@SLAC.Stanford.EDU> +Mike Stump <mrs@wrs.com> +Miles Bader <miles@gnu.ai.mit.edu> +Paul Eggert <eggert@twinsun.com> +Pavel Roskin <pavel_roskin@geocities.com> +Philipp Thomas <kthomas@gwdg.de> +Richard Stallman <rms@gnu.org> +Roland McGrath <roland@gnu.org> +Scott Bambrough <scottb@corelcomputer.com> +Steven G. Johnson <stevenj@alum.mit.edu> +Stu Grossman <grossman@cygnus.com> +Syd Polk <spolk@cygnus.com> +Tom Tromey <tromey@cygnus.com> + +Many people are not named here because we lost track of them. We +thank them! Please, help us keeping this list up to date. diff --git a/acgeneral.m4 b/acgeneral.m4 index a85f0a0c..38917602 100644 --- a/acgeneral.m4 +++ b/acgeneral.m4 @@ -373,7 +373,7 @@ dnl | echo (2,3) dnl dnl which is not what is expected. dnl -dnl Once you understood this, you turn yourself into a quopting wizard, +dnl Once you understood this, you turn yourself into a quoting wizard, dnl and come up with the following solution: dnl dnl | # foreach(x, (item_1, item_2, ..., item_n), stmt) @@ -745,8 +745,16 @@ changequote([, ])dnl # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF changequote(, )dnl -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] +`configure' configures software source code packages to adapt to many +kinds of systems. + +Usage: configure [OPTION]... [VAR=VALUE]... [HOST] + +To safely assign special values to environment variables (e.g., CC, +CFLAGS...), give to `configure' the definition as VAR=VALUE. + +Defaults for the options are specified in brackets. + Configuration: --cache-file=FILE cache test results in FILE [--env-]VAR=VALUE set environment variable VAR to VALUE @@ -754,6 +762,7 @@ Configuration: --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure + Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -774,16 +783,20 @@ Directory and file names: --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] + +Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names + EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] + Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] @@ -794,7 +807,8 @@ Features and packages: changequote([, ])dnl EOF if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" + echo " +--enable and --with options recognized:$ac_help" fi exit 0 ;; @@ -995,7 +1009,7 @@ changequote([, ])dnl -*) AC_MSG_ERROR([$ac_option: invalid option; use --help to show usage]) ;; - *=*) + *=*) ac_envvar=`echo $ac_option|sed -e 's/=.*//'` # Reject names that are not valid shell variable names. changequote(, )dnl @@ -1241,6 +1255,7 @@ dnl ### Transforming program names. dnl AC_ARG_PROGRAM() +dnl ---------------- dnl FIXME: Must be run only once. Introduce AC_DEFUN_ONCE? AC_DEFUN(AC_ARG_PROGRAM, [if test "$program_transform_name" = s,x,x,; then @@ -1606,7 +1621,7 @@ define(AC_SUBST, [ifdef([AC_SUBST_$1], , [define([AC_SUBST_$1], )dnl AC_DIVERT_PUSH(AC_DIVERSION_SED)dnl -s%@$1@%[$]$1%g +s%@$1@%[$]$1%;t t AC_DIVERT_POP()dnl ])]) @@ -1616,7 +1631,7 @@ define(AC_SUBST_FILE, [define([AC_SUBST_$1], )dnl AC_DIVERT_PUSH(AC_DIVERSION_SED)dnl /@$1@/r [$]$1 -s%@$1@%%g +s%@$1@%%;t t AC_DIVERT_POP()dnl ])]) @@ -2442,7 +2457,7 @@ choke me f = $1; #endif ], AC_VAR_SET(ac_var, yes), AC_VAR_SET(ac_var, no))]) -dnl The riduculous following `:' are coming from the fact that we +dnl The ridiculous following `:' are coming from the fact that we dnl need to have a body for these tests, otherwise some shells will dnl die. FIXME: We should write a macro specifically to handle this kind dnl of switches, since they are very common in Autoconf. @@ -2537,10 +2552,11 @@ AC_DEFUN(AC_LINK_FILES, define([AC_LIST_FILES], ifdef([AC_LIST_FILES], [AC_LIST_FILES ],)[$1])dnl define([AC_LIST_LINKS], ifdef([AC_LIST_LINKS], [AC_LIST_LINKS ],)[$2])]) +dnl AC_OUTPUT_COMMANDS(EXTRA-CMDS, INIT-CMDS) +dnl ----------------------------------------- dnl Add additional commands for AC_OUTPUT to put into config.status. dnl Use diversions instead of macros so we can be robust in the dnl presence of commas in $1 and/or $2. -dnl AC_OUTPUT_COMMANDS(EXTRA-CMDS, INIT-CMDS) AC_DEFUN(AC_OUTPUT_COMMANDS, [AC_DIVERT_PUSH(AC_DIVERSION_CMDS)dnl [$1] @@ -2562,6 +2578,8 @@ dnl ------------------------------------------------- dnl The big finish. dnl Produce config.status, config.h, and links; and configure subdirs. dnl The CONFIG_HEADERS are defined in the m4 variable AC_LIST_HEADER. +dnl Pay special attention not to have too long here docs: some old +dnl shells die. Unfortunately the limit is not known precisely... define(AC_OUTPUT, [trap '' 1 2 15 AC_CACHE_SAVE @@ -2646,9 +2664,15 @@ done ac_given_srcdir=$srcdir ifdef([AC_PROVIDE_AC_PROG_INSTALL], [ac_given_INSTALL="$INSTALL" ])dnl -# Allow concurrent executions -conftest=cft\$\$ +dnl We use a different name than CONFTEST just to help the maintainers +dnl to make the difference between `conftest' which is the root of the +dnl files used by configure, and `confstat' which is the root of the +dnl files of config.status. +# Allow concurrent executions. +confstat=cft\$\$ +EOF +cat >> $CONFIG_STATUS <<EOF dnl Remove all of CONFIG_FILES and CONFIG_HEADERS, and trap to remove dnl the temp files. There is no need to trap for the config files dnl since they are built from `mv tmp-file config-file', hence their @@ -2657,12 +2681,14 @@ dnl update is atomic. ifdef([AC_LIST_HEADER], [: \${CONFIG_HEADERS=AC_LIST_HEADER} ])dnl rm -fr \`echo "\$CONFIG_FILES ifdef([AC_LIST_HEADER], \$CONFIG_HEADERS)" | sed "s/:@BKL@^ @BKR@*//g"\` -trap 'rm -fr \$conftest*; exit 1' 1 2 15 - +trap 'rm -fr \$confstat*; exit 1' 1 2 15 +EOF +dnl The following three sections are in charge of their own here +dnl documenting into $CONFIG_STATUS. AC_OUTPUT_FILES($1) ifdef([AC_LIST_HEADER], [AC_OUTPUT_HEADER(AC_LIST_HEADER)])dnl ifdef([AC_LIST_LINKS], [AC_OUTPUT_LINKS(AC_LIST_FILES, AC_LIST_LINKS)])dnl -EOF + cat >> $CONFIG_STATUS <<EOF undivert(AC_DIVERSION_ICMDS)dnl $3 @@ -2677,12 +2703,14 @@ rm -fr confdefs* $ac_clean_files test "$no_create" = yes || $SHELL $CONFIG_STATUS || exit 1 dnl config.status should not do recursion. ifdef([AC_LIST_SUBDIRS], [AC_OUTPUT_SUBDIRS(AC_LIST_SUBDIRS)])dnl -])dnl +])dnl AC_OUTPUT + +dnl AC_OUTPUT_MAKE_DEFS() +dnl --------------------- dnl Set the DEFS variable to the -D options determined earlier. dnl This is a subroutine of AC_OUTPUT. dnl It is called inside configure, outside of config.status. -dnl AC_OUTPUT_MAKE_DEFS() define(AC_OUTPUT_MAKE_DEFS, [# Transform confdefs.h into DEFS. dnl Using a here document instead of a string reduces the quoting nightmare. @@ -2692,7 +2720,7 @@ dnl Using a here document instead of a string reduces the quoting nightmare. # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the cleanup section. Otherwise, # look for a macro that doesn't take arguments. -cat > $conftest.defs <<\EOF +cat > $confstat.defs <<\EOF changequote(<<, >>)dnl s%^[ ]*<<#>>[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)%-D\1=\2%g t cleanup @@ -2712,29 +2740,28 @@ EOF # would break. ac_LF_and_DOT="`echo; echo .`" DEFS=`sed -f $conftest.defs confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f $conftest.defs +rm -f $confstat.defs ]) dnl AC_OUTPUT_FILES(CONFIG_FILES...) dnl -------------------------------- dnl Do the variable substitutions to create the Makefiles or whatever. -dnl This is a subroutine of AC_OUTPUT. It is called inside an unquoted -dnl here document whose contents are going into config.status, but -dnl upon returning, the here document is being quoted. +dnl This is a subroutine of AC_OUTPUT. +dnl +dnl It has to send itself into $CONFIG_STATUS (eg, via here documents). +dnl Upon exit, no here document shall be opened. define(AC_OUTPUT_FILES, -[# Protect against being on the right side of a sed subst in config.status. +[cat >>$CONFIG_STATUS <<EOF +# Protect against being on the right side of a sed subst in config.status. changequote(, )dnl sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > \$conftest.subs <<\\CEOF + s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > \$confstat.subs <<\\CEOF changequote([, ])dnl dnl These here document variables are unquoted when configure runs dnl but quoted when config.status runs, so variables are expanded once. -$ac_vpsub -dnl Shell code in configure.in might set extrasub. -$extrasub dnl Insert the sed substitutions of variables. -undivert(AC_DIVERSION_SED) +undivert(AC_DIVERSION_SED)dnl CEOF EOF @@ -2742,35 +2769,41 @@ cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. +ac_max_sed_lines=90 # Maximum number of lines to put in a sed script. +ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $conftest.subs > $conftest.s$ac_file + sed "1,${ac_beg}d; ${ac_end}q" $confstat.subs > $confstat.sfrag else - sed "${ac_end}q" $conftest.subs > $conftest.s$ac_file + sed "${ac_end}q" $confstat.subs > $confstat.sfrag fi - if test ! -s $conftest.s$ac_file; then + if test ! -s $confstat.sfrag; then ac_more_lines=false - rm -f $conftest.s$ac_file + rm -f $confstat.sfrag else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + (echo ':t +/@@BKL@a-zA-Z_@BKR@@BKL@a-zA-Z_0-9@BKR@*@/!b' && cat $confstat.sfrag) > $confstat.s$ac_sed_frag if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $conftest.s$ac_file" + ac_sed_cmds="sed -f $confstat.s$ac_sed_frag" else - ac_sed_cmds="$ac_sed_cmds | sed -f $conftest.s$ac_file" + ac_sed_cmds="$ac_sed_cmds | sed -f $confstat.s$ac_sed_frag" fi - ac_file=`expr $ac_file + 1` + ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` + ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi + EOF cat >> $CONFIG_STATUS <<\EOF @@ -2790,6 +2823,8 @@ changequote(, )dnl changequote([, ])dnl if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. @@ -2830,35 +2865,50 @@ changequote([, ])dnl # Don't redirect the output to AC_FILE directly: use `mv' so that updating # is atomic, and doesn't need trapping. - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + ac_file_inputs=`echo $ac_file_in | sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` +EOF +cat >>$CONFIG_STATUS <<EOF sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -ifdef([AC_PROVIDE_AC_PROG_INSTALL], [s%@INSTALL@%$INSTALL%g +dnl Neutralize VPATH when `$srcdir' = `.'. +$ac_vpsub +dnl Shell code in configure.in might set extrasub. +dnl FIXME: do we really want to maintain this feature? +$extrasub +EOF +cat >>$CONFIG_STATUS <<\EOF +:t +/@@BKL@a-zA-Z_@BKR@@BKL@a-zA-Z_0-9@BKR@*@/!b +s%@configure_input@%$configure_input%;t t +s%@srcdir@%$srcdir%;t t +s%@top_srcdir@%$top_srcdir%;t t +ifdef([AC_PROVIDE_AC_PROG_INSTALL], [s%@INSTALL@%$INSTALL%;t t ])dnl dnl The parens around the eval prevent an "illegal io" in Ultrix sh. -" $ac_file_inputs | (eval "$ac_sed_cmds") > $conftest.out +" $ac_file_inputs | (eval "$ac_sed_cmds") > $confstat.out dnl This would break Makefile dependencies. -dnl if cmp -s $ac_file $conftest.out 2>/dev/null; then +dnl if cmp -s $ac_file $confstat.out 2>/dev/null; then dnl echo "$ac_file is unchanged" -dnl rm -f $conftest.out +dnl rm -f $confstat.out dnl else dnl rm -f $ac_file -dnl mv $conftest.out $ac_file +dnl mv $confstat.out $ac_file dnl fi - mv $conftest.out $ac_file + mv $confstat.out $ac_file fi; done -rm -f $conftest.s* -]) +rm -f $confstat.s* +EOF +])dnl AC_OUTPUT_FILES dnl AC_OUTPUT_HEADER(HEADER-FILE...) dnl -------------------------------- dnl Create the config.h files from the config.h.in files. -dnl This is a subroutine of AC_OUTPUT. It is called inside a quoted -dnl here document whose contents are going into config.status. +dnl This is a subroutine of AC_OUTPUT. +dnl +dnl It has to send itself into $CONFIG_STATUS (eg, via here documents). +dnl Upon exit, no here document shall be opened. define(AC_OUTPUT_HEADER, -[changequote(<<, >>)dnl +[cat >>$CONFIG_STATUS <<\EOF +changequote(<<, >>)dnl # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # @@ -2899,20 +2949,20 @@ changequote([, ])dnl echo creating $ac_file - rm -f $conftest.frag $conftest.in $conftest.out + rm -f $confstat.frag $confstat.in $confstat.out ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > $conftest.in + cat $ac_file_inputs > $confstat.in EOF -# Transform confdefs.h into a sed script $conftest.vals that substitutes +# Transform confdefs.h into a sed script conftest.vals that substitutes # the proper values into config.h.in to produce config.h. And first: # Protect against being on the right side of a sed subst in config.status. # Protect against being in an unquoted here document in config.status. -rm -f $conftest.vals +rm -f conftest.vals dnl Using a here document instead of a string reduces the quoting nightmare. dnl Putting comments in sed scripts is not portable. -cat > $conftest.hdr <<\EOF +cat > $confstat.hdr <<\EOF changequote(<<, >>)dnl s/[\\&%]/\\&/g s%[\\$`]%\\&%g @@ -2927,50 +2977,50 @@ EOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC_DEFINE to be honored. -uniq confdefs.h | sed -n -f $conftest.hdr > $conftest.vals -rm -f $conftest.hdr +uniq confdefs.h | sed -n -f $confstat.hdr > conftest.vals +rm -f $confstat.hdr # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >> $conftest.vals <<\EOF +cat >> conftest.vals <<\EOF changequote(, )dnl s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% changequote([, ])dnl EOF -# Break up $conftest.vals because some shells have a limit on +# Break up conftest.vals because some shells have a limit on # the size of here documents, and old seds have small limits too. -rm -f $conftest.tail +rm -f conftest.tail while : do - ac_lines=`grep -c . $conftest.vals` + ac_lines=`grep -c . conftest.vals` # grep -c gives empty output for an empty file on some AIX systems. if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to $conftest.frag. - echo ' cat > $conftest.frag <<CEOF' >> $CONFIG_STATUS - sed ${ac_max_here_lines}q $conftest.vals >> $CONFIG_STATUS + # Write a limited-size here document to $confstat.frag. + echo ' cat > $confstat.frag <<CEOF' >> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS echo 'CEOF - sed -f $conftest.frag $conftest.in > $conftest.out - rm -f $conftest.in - mv $conftest.out $conftest.in + sed -f $confstat.frag $confstat.in > $confstat.out + rm -f $confstat.in + mv $confstat.out $confstat.in ' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d $conftest.vals > $conftest.tail - rm -f $conftest.vals - mv $conftest.tail $conftest.vals + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals done -rm -f $conftest.vals +rm -f conftest.vals dnl Now back to your regularly scheduled config.status. cat >> $CONFIG_STATUS <<\EOF - rm -f $conftest.frag $conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > $conftest.h - cat $conftest.in >> $conftest.h - rm -f $conftest.in - if cmp -s $ac_file $conftest.h 2>/dev/null; then + rm -f $confstat.frag $confstat.h + echo "/* $ac_file. Generated automatically by configure. */" > $confstat.h + cat $confstat.in >> $confstat.h + rm -f $confstat.in + if cmp -s $ac_file $confstat.h 2>/dev/null; then echo "$ac_file is unchanged" - rm -f $conftest.h + rm -f $confstat.h else # Remove last slash and all that follows it. Not all systems have dirname. changequote(, )dnl @@ -2978,23 +3028,25 @@ cat >> $CONFIG_STATUS <<\EOF changequote([, ])dnl if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. test ! -d "$ac_dir" && mkdir "$ac_dir" fi rm -f $ac_file - mv $conftest.h $ac_file + mv $confstat.h $ac_file fi fi; done - -]) +EOF +])dnl AC_OUTPUT_HEADER dnl AC_OUTPUT_LINKS(SOURCE..., DEST...) dnl ----------------------------------- -dnl This is a subroutine of AC_OUTPUT. It is called inside a quoted -dnl here document whose contents are going into config.status. +dnl This is a subroutine of AC_OUTPUT. +dnl +dnl It has to send itself into $CONFIG_STATUS (eg, via here documents). +dnl Upon exit, no here document shall be opened. define(AC_OUTPUT_LINKS, -[EOF - -cat >> $CONFIG_STATUS <<EOF +[cat >> $CONFIG_STATUS <<EOF ac_sources="$1" ac_dests="$2" EOF @@ -3019,6 +3071,8 @@ changequote(, )dnl changequote([, ])dnl if test "$ac_dest_dir" != "$ac_dest" && test "$ac_dest_dir" != .; then # The dest file is in a subdirectory. + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. test ! -d "$ac_dest_dir" && mkdir "$ac_dest_dir" ac_dest_dir_suffix="/`echo $ac_dest_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dest_dir_suffix. @@ -3043,6 +3097,7 @@ changequote([, ])dnl AC_MSG_ERROR(cannot link $ac_dest to $srcdir/$ac_source) fi done +EOF ]) dnl This is a subroutine of AC_OUTPUT. @@ -3091,6 +3146,8 @@ ifdef([AC_PROVIDE_AC_PROG_INSTALL],[ ac_given_INSTALL="$INSTALL" case "$srcdir" in .) ;; *) + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; else AC_MSG_ERROR(cannot create `pwd`/$ac_config_dir) @@ -150,8 +150,16 @@ do # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] +`configure' configures software source code packages to adapt to many +kinds of systems. + +Usage: configure [OPTION]... [VAR=VALUE]... [HOST] + +To safely assign special values to environment variables (e.g., CC, +CFLAGS...), give to `configure' the definition as VAR=VALUE. + +Defaults for the options are specified in brackets. + Configuration: --cache-file=FILE cache test results in FILE [--env-]VAR=VALUE set environment variable VAR to VALUE @@ -159,6 +167,7 @@ Configuration: --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure + Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -179,16 +188,20 @@ Directory and file names: --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] + +Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names + EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] + Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] @@ -198,7 +211,8 @@ Features and packages: --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" + echo " +--enable and --with options recognized:$ac_help" fi exit 0 ;; @@ -395,7 +409,7 @@ EOF -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; - *=*) + *=*) ac_envvar=`echo $ac_option|sed -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_envvar| sed 's/[_a-zA-Z0-9]//g'`"; then @@ -572,7 +586,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word... $ac_c" 1>&6 -echo "configure:__oline__: checking for $ac_word" 1>&5 +echo "configure:590: checking for $ac_word" 1>&5 if test "${ac_cv_path_M4+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -613,7 +627,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word... $ac_c" 1>&6 -echo "configure:__oline__: checking for $ac_word" 1>&5 +echo "configure:631: checking for $ac_word" 1>&5 if test "${ac_cv_prog_AWK+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -646,7 +660,7 @@ done # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word... $ac_c" 1>&6 -echo "configure:__oline__: checking for $ac_word" 1>&5 +echo "configure:664: checking for $ac_word" 1>&5 if test "${ac_cv_path_PERL+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -716,7 +730,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install... $ac_c" 1>&6 -echo "configure:__oline__: checking for a BSD compatible install" 1>&5 +echo "configure:734: checking for a BSD compatible install" 1>&5 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -848,7 +862,7 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the cleanup section. Otherwise, # look for a macro that doesn't take arguments. -cat > $conftest.defs <<\EOF +cat > $confstat.defs <<\EOF s%^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)%-D\1=\2%g t cleanup s%^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)%-D\1=\2%g @@ -866,7 +880,7 @@ EOF # would break. ac_LF_and_DOT="`echo; echo .`" DEFS=`sed -f $conftest.defs confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f $conftest.defs +rm -f $confstat.defs # Without the "./", some shells look in PATH for config.status. @@ -887,7 +901,7 @@ cat > $CONFIG_STATUS <<EOF # configure, is in ./config.log if it exists. ac_cs_usage="\ -Usage: $CONFIG_STATUS @BKL@OPTIONS@BKR@ +Usage: $CONFIG_STATUS [OPTIONS] Configure files from templates according to the current configuration. --recheck Update $CONFIG_STATUS by reconfiguring in the same conditions @@ -924,50 +938,51 @@ done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" -# Allow concurrent executions -conftest=cft\$\$ +# Allow concurrent executions. +confstat=cft\$\$ +EOF +cat >> $CONFIG_STATUS <<EOF : \${CONFIG_FILES="Makefile testsuite/Makefile"} -rm -fr \`echo "\$CONFIG_FILES " | sed "s/:@BKL@^ @BKR@*//g"\` -trap 'rm -fr \$conftest*; exit 1' 1 2 15 - +rm -fr \`echo "\$CONFIG_FILES " | sed "s/:[^ ]*//g"\` +trap 'rm -fr \$confstat*; exit 1' 1 2 15 +EOF +cat >>$CONFIG_STATUS <<EOF # Protect against being on the right side of a sed subst in config.status. sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > \$conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@M4@%$M4%g -s%@AWK@%$AWK%g -s%@PERL@%$PERL%g -s%@SCRIPTS@%$SCRIPTS%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@standards_info@%$standards_info%g -s%@standards_dvi@%$standards_dvi%g + s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > \$confstat.subs <<\\CEOF +s%@SHELL@%$SHELL%;t t +s%@CFLAGS@%$CFLAGS%;t t +s%@CPPFLAGS@%$CPPFLAGS%;t t +s%@CXXFLAGS@%$CXXFLAGS%;t t +s%@FFLAGS@%$FFLAGS%;t t +s%@DEFS@%$DEFS%;t t +s%@LDFLAGS@%$LDFLAGS%;t t +s%@LIBS@%$LIBS%;t t +s%@exec_prefix@%$exec_prefix%;t t +s%@prefix@%$prefix%;t t +s%@program_transform_name@%$program_transform_name%;t t +s%@bindir@%$bindir%;t t +s%@sbindir@%$sbindir%;t t +s%@libexecdir@%$libexecdir%;t t +s%@datadir@%$datadir%;t t +s%@sysconfdir@%$sysconfdir%;t t +s%@sharedstatedir@%$sharedstatedir%;t t +s%@localstatedir@%$localstatedir%;t t +s%@libdir@%$libdir%;t t +s%@includedir@%$includedir%;t t +s%@oldincludedir@%$oldincludedir%;t t +s%@infodir@%$infodir%;t t +s%@mandir@%$mandir%;t t +s%@M4@%$M4%;t t +s%@AWK@%$AWK%;t t +s%@PERL@%$PERL%;t t +s%@SCRIPTS@%$SCRIPTS%;t t +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%;t t +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%;t t +s%@INSTALL_DATA@%$INSTALL_DATA%;t t +s%@standards_info@%$standards_info%;t t +s%@standards_dvi@%$standards_dvi%;t t CEOF EOF @@ -976,35 +991,41 @@ cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. +ac_max_sed_lines=90 # Maximum number of lines to put in a sed script. +ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $conftest.subs > $conftest.s$ac_file + sed "1,${ac_beg}d; ${ac_end}q" $confstat.subs > $confstat.sfrag else - sed "${ac_end}q" $conftest.subs > $conftest.s$ac_file + sed "${ac_end}q" $confstat.subs > $confstat.sfrag fi - if test ! -s $conftest.s$ac_file; then + if test ! -s $confstat.sfrag; then ac_more_lines=false - rm -f $conftest.s$ac_file + rm -f $confstat.sfrag else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + (echo ':t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $confstat.sfrag) > $confstat.s$ac_sed_frag if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $conftest.s$ac_file" + ac_sed_cmds="sed -f $confstat.s$ac_sed_frag" else - ac_sed_cmds="$ac_sed_cmds | sed -f $conftest.s$ac_file" + ac_sed_cmds="$ac_sed_cmds | sed -f $confstat.s$ac_sed_frag" fi - ac_file=`expr $ac_file + 1` + ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` + ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi + EOF cat >> $CONFIG_STATUS <<\EOF @@ -1022,7 +1043,7 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" + test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` @@ -1056,18 +1077,27 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Don't redirect the output to AC_FILE directly: use `mv' so that updating # is atomic, and doesn't need trapping. - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + ac_file_inputs=`echo $ac_file_in | sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` +EOF +cat >>$CONFIG_STATUS <<EOF sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $conftest.out - mv $conftest.out $ac_file +$ac_vpsub +$extrasub +EOF +cat >>$CONFIG_STATUS <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s%@configure_input@%$configure_input%;t t +s%@srcdir@%$srcdir%;t t +s%@top_srcdir@%$top_srcdir%;t t +s%@INSTALL@%$INSTALL%;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") > $confstat.out + mv $confstat.out $ac_file fi; done -rm -f $conftest.s* - +rm -f $confstat.s* EOF + + cat >> $CONFIG_STATUS <<EOF EOF diff --git a/doc/Makefile.in b/doc/Makefile.in index f98fa184..7ccda43e 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -32,7 +32,7 @@ AWK = @AWK@ PERL = @PERL@ # Programs that are ALWAYS installed (and are created in the build dir). -ASCRIPTS = autoconf autoheader autoreconf autoupdate ifnames +ASCRIPTS = autoconf autoheader autoreconf autoupdate ifnames # M4 input that is frozen. M4FROZEN = autoconf.m4f autoheader.m4f @@ -66,7 +66,7 @@ M4FILES = autoconf.m4 acgeneral.m4 acoldnames.m4 acspecific.m4 autoheader.m4 # Files that can be generated, but should be up to date for a distribution. DISTDEP = info Makefile # Files to distribute. -DISTFILES = AUTHORS COPYING ChangeLog ChangeLog.1 INSTALL \ +DISTFILES = AUTHORS THANKS COPYING ChangeLog ChangeLog.1 INSTALL \ Makefile.in NEWS README TODO $(M4FILES) \ acconfig.h acfunctions acheaders acidentifiers \ acmakevars acprograms autoconf.info* \ @@ -190,7 +190,11 @@ uninstall: if test -f standards.info || test -f $(srcdir)/standards.info; \ then cd $(infodir) && rm -f standards.info*; fi +# Why don't we run ./autoconf here? There are substitutions performed +# by autoconf which are necessary. Now, the Makefile breaks configure, +# and one has to ./autoconf to have the right thing happen. ${srcdir}/configure: configure.in $(M4FILES) + echo "FIXME: Why not running ./autoconf -m . ?" cd $(srcdir) && \ rm -f configure configure.tmp && \ $(M4) autoconf.m4 configure.in > configure.tmp && \ @@ -212,7 +216,7 @@ clean mostlyclean distclean maintainer-clean:: done clean mostlyclean distclean maintainer-clean:: - rm -f $(SCRIPTS) *.tmp + rm -f $(SCRIPTS) *.tmp rm -f $(M4FROZEN) rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.log rm -f *.pg *.pgs *.toc *.tp *.tps *.vr *.vrs diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4 index a85f0a0c..38917602 100644 --- a/lib/autoconf/general.m4 +++ b/lib/autoconf/general.m4 @@ -373,7 +373,7 @@ dnl | echo (2,3) dnl dnl which is not what is expected. dnl -dnl Once you understood this, you turn yourself into a quopting wizard, +dnl Once you understood this, you turn yourself into a quoting wizard, dnl and come up with the following solution: dnl dnl | # foreach(x, (item_1, item_2, ..., item_n), stmt) @@ -745,8 +745,16 @@ changequote([, ])dnl # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF changequote(, )dnl -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] +`configure' configures software source code packages to adapt to many +kinds of systems. + +Usage: configure [OPTION]... [VAR=VALUE]... [HOST] + +To safely assign special values to environment variables (e.g., CC, +CFLAGS...), give to `configure' the definition as VAR=VALUE. + +Defaults for the options are specified in brackets. + Configuration: --cache-file=FILE cache test results in FILE [--env-]VAR=VALUE set environment variable VAR to VALUE @@ -754,6 +762,7 @@ Configuration: --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure + Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -774,16 +783,20 @@ Directory and file names: --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] + +Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names + EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] + Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] @@ -794,7 +807,8 @@ Features and packages: changequote([, ])dnl EOF if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" + echo " +--enable and --with options recognized:$ac_help" fi exit 0 ;; @@ -995,7 +1009,7 @@ changequote([, ])dnl -*) AC_MSG_ERROR([$ac_option: invalid option; use --help to show usage]) ;; - *=*) + *=*) ac_envvar=`echo $ac_option|sed -e 's/=.*//'` # Reject names that are not valid shell variable names. changequote(, )dnl @@ -1241,6 +1255,7 @@ dnl ### Transforming program names. dnl AC_ARG_PROGRAM() +dnl ---------------- dnl FIXME: Must be run only once. Introduce AC_DEFUN_ONCE? AC_DEFUN(AC_ARG_PROGRAM, [if test "$program_transform_name" = s,x,x,; then @@ -1606,7 +1621,7 @@ define(AC_SUBST, [ifdef([AC_SUBST_$1], , [define([AC_SUBST_$1], )dnl AC_DIVERT_PUSH(AC_DIVERSION_SED)dnl -s%@$1@%[$]$1%g +s%@$1@%[$]$1%;t t AC_DIVERT_POP()dnl ])]) @@ -1616,7 +1631,7 @@ define(AC_SUBST_FILE, [define([AC_SUBST_$1], )dnl AC_DIVERT_PUSH(AC_DIVERSION_SED)dnl /@$1@/r [$]$1 -s%@$1@%%g +s%@$1@%%;t t AC_DIVERT_POP()dnl ])]) @@ -2442,7 +2457,7 @@ choke me f = $1; #endif ], AC_VAR_SET(ac_var, yes), AC_VAR_SET(ac_var, no))]) -dnl The riduculous following `:' are coming from the fact that we +dnl The ridiculous following `:' are coming from the fact that we dnl need to have a body for these tests, otherwise some shells will dnl die. FIXME: We should write a macro specifically to handle this kind dnl of switches, since they are very common in Autoconf. @@ -2537,10 +2552,11 @@ AC_DEFUN(AC_LINK_FILES, define([AC_LIST_FILES], ifdef([AC_LIST_FILES], [AC_LIST_FILES ],)[$1])dnl define([AC_LIST_LINKS], ifdef([AC_LIST_LINKS], [AC_LIST_LINKS ],)[$2])]) +dnl AC_OUTPUT_COMMANDS(EXTRA-CMDS, INIT-CMDS) +dnl ----------------------------------------- dnl Add additional commands for AC_OUTPUT to put into config.status. dnl Use diversions instead of macros so we can be robust in the dnl presence of commas in $1 and/or $2. -dnl AC_OUTPUT_COMMANDS(EXTRA-CMDS, INIT-CMDS) AC_DEFUN(AC_OUTPUT_COMMANDS, [AC_DIVERT_PUSH(AC_DIVERSION_CMDS)dnl [$1] @@ -2562,6 +2578,8 @@ dnl ------------------------------------------------- dnl The big finish. dnl Produce config.status, config.h, and links; and configure subdirs. dnl The CONFIG_HEADERS are defined in the m4 variable AC_LIST_HEADER. +dnl Pay special attention not to have too long here docs: some old +dnl shells die. Unfortunately the limit is not known precisely... define(AC_OUTPUT, [trap '' 1 2 15 AC_CACHE_SAVE @@ -2646,9 +2664,15 @@ done ac_given_srcdir=$srcdir ifdef([AC_PROVIDE_AC_PROG_INSTALL], [ac_given_INSTALL="$INSTALL" ])dnl -# Allow concurrent executions -conftest=cft\$\$ +dnl We use a different name than CONFTEST just to help the maintainers +dnl to make the difference between `conftest' which is the root of the +dnl files used by configure, and `confstat' which is the root of the +dnl files of config.status. +# Allow concurrent executions. +confstat=cft\$\$ +EOF +cat >> $CONFIG_STATUS <<EOF dnl Remove all of CONFIG_FILES and CONFIG_HEADERS, and trap to remove dnl the temp files. There is no need to trap for the config files dnl since they are built from `mv tmp-file config-file', hence their @@ -2657,12 +2681,14 @@ dnl update is atomic. ifdef([AC_LIST_HEADER], [: \${CONFIG_HEADERS=AC_LIST_HEADER} ])dnl rm -fr \`echo "\$CONFIG_FILES ifdef([AC_LIST_HEADER], \$CONFIG_HEADERS)" | sed "s/:@BKL@^ @BKR@*//g"\` -trap 'rm -fr \$conftest*; exit 1' 1 2 15 - +trap 'rm -fr \$confstat*; exit 1' 1 2 15 +EOF +dnl The following three sections are in charge of their own here +dnl documenting into $CONFIG_STATUS. AC_OUTPUT_FILES($1) ifdef([AC_LIST_HEADER], [AC_OUTPUT_HEADER(AC_LIST_HEADER)])dnl ifdef([AC_LIST_LINKS], [AC_OUTPUT_LINKS(AC_LIST_FILES, AC_LIST_LINKS)])dnl -EOF + cat >> $CONFIG_STATUS <<EOF undivert(AC_DIVERSION_ICMDS)dnl $3 @@ -2677,12 +2703,14 @@ rm -fr confdefs* $ac_clean_files test "$no_create" = yes || $SHELL $CONFIG_STATUS || exit 1 dnl config.status should not do recursion. ifdef([AC_LIST_SUBDIRS], [AC_OUTPUT_SUBDIRS(AC_LIST_SUBDIRS)])dnl -])dnl +])dnl AC_OUTPUT + +dnl AC_OUTPUT_MAKE_DEFS() +dnl --------------------- dnl Set the DEFS variable to the -D options determined earlier. dnl This is a subroutine of AC_OUTPUT. dnl It is called inside configure, outside of config.status. -dnl AC_OUTPUT_MAKE_DEFS() define(AC_OUTPUT_MAKE_DEFS, [# Transform confdefs.h into DEFS. dnl Using a here document instead of a string reduces the quoting nightmare. @@ -2692,7 +2720,7 @@ dnl Using a here document instead of a string reduces the quoting nightmare. # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the cleanup section. Otherwise, # look for a macro that doesn't take arguments. -cat > $conftest.defs <<\EOF +cat > $confstat.defs <<\EOF changequote(<<, >>)dnl s%^[ ]*<<#>>[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)%-D\1=\2%g t cleanup @@ -2712,29 +2740,28 @@ EOF # would break. ac_LF_and_DOT="`echo; echo .`" DEFS=`sed -f $conftest.defs confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f $conftest.defs +rm -f $confstat.defs ]) dnl AC_OUTPUT_FILES(CONFIG_FILES...) dnl -------------------------------- dnl Do the variable substitutions to create the Makefiles or whatever. -dnl This is a subroutine of AC_OUTPUT. It is called inside an unquoted -dnl here document whose contents are going into config.status, but -dnl upon returning, the here document is being quoted. +dnl This is a subroutine of AC_OUTPUT. +dnl +dnl It has to send itself into $CONFIG_STATUS (eg, via here documents). +dnl Upon exit, no here document shall be opened. define(AC_OUTPUT_FILES, -[# Protect against being on the right side of a sed subst in config.status. +[cat >>$CONFIG_STATUS <<EOF +# Protect against being on the right side of a sed subst in config.status. changequote(, )dnl sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > \$conftest.subs <<\\CEOF + s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > \$confstat.subs <<\\CEOF changequote([, ])dnl dnl These here document variables are unquoted when configure runs dnl but quoted when config.status runs, so variables are expanded once. -$ac_vpsub -dnl Shell code in configure.in might set extrasub. -$extrasub dnl Insert the sed substitutions of variables. -undivert(AC_DIVERSION_SED) +undivert(AC_DIVERSION_SED)dnl CEOF EOF @@ -2742,35 +2769,41 @@ cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. +ac_max_sed_lines=90 # Maximum number of lines to put in a sed script. +ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $conftest.subs > $conftest.s$ac_file + sed "1,${ac_beg}d; ${ac_end}q" $confstat.subs > $confstat.sfrag else - sed "${ac_end}q" $conftest.subs > $conftest.s$ac_file + sed "${ac_end}q" $confstat.subs > $confstat.sfrag fi - if test ! -s $conftest.s$ac_file; then + if test ! -s $confstat.sfrag; then ac_more_lines=false - rm -f $conftest.s$ac_file + rm -f $confstat.sfrag else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + (echo ':t +/@@BKL@a-zA-Z_@BKR@@BKL@a-zA-Z_0-9@BKR@*@/!b' && cat $confstat.sfrag) > $confstat.s$ac_sed_frag if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $conftest.s$ac_file" + ac_sed_cmds="sed -f $confstat.s$ac_sed_frag" else - ac_sed_cmds="$ac_sed_cmds | sed -f $conftest.s$ac_file" + ac_sed_cmds="$ac_sed_cmds | sed -f $confstat.s$ac_sed_frag" fi - ac_file=`expr $ac_file + 1` + ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` + ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi + EOF cat >> $CONFIG_STATUS <<\EOF @@ -2790,6 +2823,8 @@ changequote(, )dnl changequote([, ])dnl if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. @@ -2830,35 +2865,50 @@ changequote([, ])dnl # Don't redirect the output to AC_FILE directly: use `mv' so that updating # is atomic, and doesn't need trapping. - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + ac_file_inputs=`echo $ac_file_in | sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` +EOF +cat >>$CONFIG_STATUS <<EOF sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -ifdef([AC_PROVIDE_AC_PROG_INSTALL], [s%@INSTALL@%$INSTALL%g +dnl Neutralize VPATH when `$srcdir' = `.'. +$ac_vpsub +dnl Shell code in configure.in might set extrasub. +dnl FIXME: do we really want to maintain this feature? +$extrasub +EOF +cat >>$CONFIG_STATUS <<\EOF +:t +/@@BKL@a-zA-Z_@BKR@@BKL@a-zA-Z_0-9@BKR@*@/!b +s%@configure_input@%$configure_input%;t t +s%@srcdir@%$srcdir%;t t +s%@top_srcdir@%$top_srcdir%;t t +ifdef([AC_PROVIDE_AC_PROG_INSTALL], [s%@INSTALL@%$INSTALL%;t t ])dnl dnl The parens around the eval prevent an "illegal io" in Ultrix sh. -" $ac_file_inputs | (eval "$ac_sed_cmds") > $conftest.out +" $ac_file_inputs | (eval "$ac_sed_cmds") > $confstat.out dnl This would break Makefile dependencies. -dnl if cmp -s $ac_file $conftest.out 2>/dev/null; then +dnl if cmp -s $ac_file $confstat.out 2>/dev/null; then dnl echo "$ac_file is unchanged" -dnl rm -f $conftest.out +dnl rm -f $confstat.out dnl else dnl rm -f $ac_file -dnl mv $conftest.out $ac_file +dnl mv $confstat.out $ac_file dnl fi - mv $conftest.out $ac_file + mv $confstat.out $ac_file fi; done -rm -f $conftest.s* -]) +rm -f $confstat.s* +EOF +])dnl AC_OUTPUT_FILES dnl AC_OUTPUT_HEADER(HEADER-FILE...) dnl -------------------------------- dnl Create the config.h files from the config.h.in files. -dnl This is a subroutine of AC_OUTPUT. It is called inside a quoted -dnl here document whose contents are going into config.status. +dnl This is a subroutine of AC_OUTPUT. +dnl +dnl It has to send itself into $CONFIG_STATUS (eg, via here documents). +dnl Upon exit, no here document shall be opened. define(AC_OUTPUT_HEADER, -[changequote(<<, >>)dnl +[cat >>$CONFIG_STATUS <<\EOF +changequote(<<, >>)dnl # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # @@ -2899,20 +2949,20 @@ changequote([, ])dnl echo creating $ac_file - rm -f $conftest.frag $conftest.in $conftest.out + rm -f $confstat.frag $confstat.in $confstat.out ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > $conftest.in + cat $ac_file_inputs > $confstat.in EOF -# Transform confdefs.h into a sed script $conftest.vals that substitutes +# Transform confdefs.h into a sed script conftest.vals that substitutes # the proper values into config.h.in to produce config.h. And first: # Protect against being on the right side of a sed subst in config.status. # Protect against being in an unquoted here document in config.status. -rm -f $conftest.vals +rm -f conftest.vals dnl Using a here document instead of a string reduces the quoting nightmare. dnl Putting comments in sed scripts is not portable. -cat > $conftest.hdr <<\EOF +cat > $confstat.hdr <<\EOF changequote(<<, >>)dnl s/[\\&%]/\\&/g s%[\\$`]%\\&%g @@ -2927,50 +2977,50 @@ EOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC_DEFINE to be honored. -uniq confdefs.h | sed -n -f $conftest.hdr > $conftest.vals -rm -f $conftest.hdr +uniq confdefs.h | sed -n -f $confstat.hdr > conftest.vals +rm -f $confstat.hdr # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >> $conftest.vals <<\EOF +cat >> conftest.vals <<\EOF changequote(, )dnl s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% changequote([, ])dnl EOF -# Break up $conftest.vals because some shells have a limit on +# Break up conftest.vals because some shells have a limit on # the size of here documents, and old seds have small limits too. -rm -f $conftest.tail +rm -f conftest.tail while : do - ac_lines=`grep -c . $conftest.vals` + ac_lines=`grep -c . conftest.vals` # grep -c gives empty output for an empty file on some AIX systems. if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to $conftest.frag. - echo ' cat > $conftest.frag <<CEOF' >> $CONFIG_STATUS - sed ${ac_max_here_lines}q $conftest.vals >> $CONFIG_STATUS + # Write a limited-size here document to $confstat.frag. + echo ' cat > $confstat.frag <<CEOF' >> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS echo 'CEOF - sed -f $conftest.frag $conftest.in > $conftest.out - rm -f $conftest.in - mv $conftest.out $conftest.in + sed -f $confstat.frag $confstat.in > $confstat.out + rm -f $confstat.in + mv $confstat.out $confstat.in ' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d $conftest.vals > $conftest.tail - rm -f $conftest.vals - mv $conftest.tail $conftest.vals + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals done -rm -f $conftest.vals +rm -f conftest.vals dnl Now back to your regularly scheduled config.status. cat >> $CONFIG_STATUS <<\EOF - rm -f $conftest.frag $conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > $conftest.h - cat $conftest.in >> $conftest.h - rm -f $conftest.in - if cmp -s $ac_file $conftest.h 2>/dev/null; then + rm -f $confstat.frag $confstat.h + echo "/* $ac_file. Generated automatically by configure. */" > $confstat.h + cat $confstat.in >> $confstat.h + rm -f $confstat.in + if cmp -s $ac_file $confstat.h 2>/dev/null; then echo "$ac_file is unchanged" - rm -f $conftest.h + rm -f $confstat.h else # Remove last slash and all that follows it. Not all systems have dirname. changequote(, )dnl @@ -2978,23 +3028,25 @@ cat >> $CONFIG_STATUS <<\EOF changequote([, ])dnl if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. test ! -d "$ac_dir" && mkdir "$ac_dir" fi rm -f $ac_file - mv $conftest.h $ac_file + mv $confstat.h $ac_file fi fi; done - -]) +EOF +])dnl AC_OUTPUT_HEADER dnl AC_OUTPUT_LINKS(SOURCE..., DEST...) dnl ----------------------------------- -dnl This is a subroutine of AC_OUTPUT. It is called inside a quoted -dnl here document whose contents are going into config.status. +dnl This is a subroutine of AC_OUTPUT. +dnl +dnl It has to send itself into $CONFIG_STATUS (eg, via here documents). +dnl Upon exit, no here document shall be opened. define(AC_OUTPUT_LINKS, -[EOF - -cat >> $CONFIG_STATUS <<EOF +[cat >> $CONFIG_STATUS <<EOF ac_sources="$1" ac_dests="$2" EOF @@ -3019,6 +3071,8 @@ changequote(, )dnl changequote([, ])dnl if test "$ac_dest_dir" != "$ac_dest" && test "$ac_dest_dir" != .; then # The dest file is in a subdirectory. + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. test ! -d "$ac_dest_dir" && mkdir "$ac_dest_dir" ac_dest_dir_suffix="/`echo $ac_dest_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dest_dir_suffix. @@ -3043,6 +3097,7 @@ changequote([, ])dnl AC_MSG_ERROR(cannot link $ac_dest to $srcdir/$ac_source) fi done +EOF ]) dnl This is a subroutine of AC_OUTPUT. @@ -3091,6 +3146,8 @@ ifdef([AC_PROVIDE_AC_PROG_INSTALL],[ ac_given_INSTALL="$INSTALL" case "$srcdir" in .) ;; *) + dnl FIXME: should actually be mkinstalldirs (parents may have + dnl to be created too. if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; else AC_MSG_ERROR(cannot create `pwd`/$ac_config_dir) |