[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: multiline output variables
From: |
Paul Eggert |
Subject: |
Re: multiline output variables |
Date: |
Wed, 01 Jun 2005 00:21:02 -0700 |
User-agent: |
Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) |
Thanks for your patch (along with all the work you did to shepherd it
into Autoconf). I installed it, and then followed up with the
following minor changes to the documentation to try to notify people
of the change, and smooth the transitions a bit. If you see any
problems with this followup patch please let us know.
2005-06-01 Paul Eggert <address@hidden>
* NEWS: Note yesterday's changes to AC_SUBST and AC_SUBST_FILE.
* doc/autoconf.texi (Particular Headers): Reword example
for multiline stdbool replacement.
(Setting Output Variables): Reword text a bit. Don't
give all the details about |#_!!_#|.
Reword description of line replacement.
--- NEWS 20 May 2005 08:13:16 -0000 1.341
+++ NEWS 1 Jun 2005 07:13:07 -0000
@@ -47,6 +47,13 @@
ac_cv_prog_cc_c99 or ac_cv_prog_cc_c89 (whichever is valid, in
that order).
+** AC_SUBST
+ The subtituted value can now contain newlines.
+
+** AC_SUBST_FILE
+ The substitution now occurs only when @variable@ is on a line by itself,
+ optionally surrounded by spaces and tabs. The whole line is replaced.
+
** AT_COPYRIGHT
New macro for copyright notices in testsuite files.
--- doc/autoconf.texi 1 Jun 2005 06:54:46 -0000 1.901
+++ doc/autoconf.texi 1 Jun 2005 07:13:09 -0000
@@ -4878,7 +4878,7 @@ Amdahl UTS and Motorola System V/88.
If @file{stdbool.h} exists and is conformant to C99, define
@code{HAVE_STDBOOL_H} to 1; if the type @code{_Bool} is defined, define
@code{HAVE__BOOL} to 1. To fulfill the C99 requirements, your
address@hidden should contain the following code:
address@hidden could contain the following code:
@verbatim
#if HAVE_STDBOOL_H
@@ -4898,13 +4898,12 @@ typedef unsigned char _Bool;
#endif
@end verbatim
-However, since output variables can now contain newlines, it is possible
-to construct an output variable that includes only those headers and
-definitions needed, such as:
+Alternatively you can construct an output variable that includes only
+those headers and definitions needed. For example:
@verbatim
AC_HEADER_STDBOOL
-AC_SUBST(stdbool)
+AC_SUBST([stdbool])
if test "x$ac_cv_header_stdbool_h" = xyes; then
stdbool='
#include <stdbool.h>
@@ -4922,11 +4921,11 @@ typedef unsigned char _Bool;
stdbool='
'
fi
- stdbool=$stdbool'dnl
-# define bool _Bool
-# define false 0
-# define true 1
-# define __bool_true_false_are_defined 1
+ stdbool=$stdbool'
+#define bool _Bool
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
'
fi
@end verbatim
@@ -7354,13 +7353,12 @@ substitute the variable @var{variable} i
or more @file{Makefile}s). This means that @code{AC_OUTPUT} will
replace instances of @samp{@@@var{variable}@@} in input files with the
value that the shell variable @var{variable} has when @code{AC_OUTPUT}
-is called. It is now permissible for the value to contain newlines.
+is called. The value can contain newlines.
The substituted value is not rescanned for more output variables;
-occurences of @samp{@@@var{variable}@@} in the value are inserted
-literally into the output file. (Actually, the surrounding @code{@@}s
-are surrounded by @code{|#_!!_#|}, and all occurences of @code{|#_!!_#|}
-are ultimately removed. If by some misfortune, you need a literal
address@hidden|#_!!_#|} in your output file, use @code{|#_!|#_!!_#|!_#|}.)
+occurrences of @samp{@@@var{variable}@@} in the value are inserted
+literally into the output file. (The algorithm uses the special marker
address@hidden|#_!!_#|} internally, so the substituted value cannot contain
address@hidden|#_!!_#|}.)
If @var{value} is given, in addition assign it to @var{variable}.
@@ -7377,10 +7375,11 @@ that @code{AC_OUTPUT} will replace insta
@samp{@@@var{variable}@@} in output files (such as @file{Makefile.in})
with the contents of the file that the shell variable @var{variable}
names when @code{AC_OUTPUT} is called. Set the variable to
address@hidden/dev/null} for cases that do not have a file to insert. This
-substitution only occurs when the @samp{@@@var{variable}@@} is on a line
-by itself, optionally surrounded by spaces and tabs. The whole line,
-including the spaces, tabs, and the terminating newline, is replaced.
address@hidden/dev/null} for cases that do not have a file to insert.
+This substitution occurs only when the @samp{@@@var{variable}@@} is on a
+line by itself, optionally surrounded by spaces and tabs. The
+substitution replaces the whole line, including the spaces, tabs, and
+the terminating newline.
This macro is useful for inserting @file{Makefile} fragments containing
special dependencies or other @code{make} directives for particular host