summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2020-07-15 16:27:38 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2020-07-15 16:27:58 -0700
commit6677262915917e84a2d12775c176ee0c3d2edaf9 (patch)
treed837a2207ffad502f2bba256e4e95b8a40a4ed86
parentfc1fe985411216165116520b444cdeaae237b6fb (diff)
downloadautoconf-6677262915917e84a2d12775c176ee0c3d2edaf9.tar.gz
Document AC_EGREP* better
From a suggestion by Bruno Haible in: https://lists.gnu.org/archive/html/bug-autoconf/2017-02/msg00001.html
-rw-r--r--doc/autoconf.texi30
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index a50ab208..379e3c2f 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -9392,6 +9392,8 @@ If the output of running the preprocessor on the system header file
@var{header-file} matches the extended regular expression
@var{pattern}, execute shell commands @var{action-if-found}, otherwise
execute @var{action-if-not-found}.
+
+See below for some problems involving this macro.
@end defmac
@anchor{AC_EGREP_CPP}
@@ -9403,8 +9405,36 @@ variable, back quote, and backslash substitutions are performed. If the
output of running the preprocessor on @var{program} matches the
extended regular expression @var{pattern}, execute shell commands
@var{action-if-found}, otherwise execute @var{action-if-not-found}.
+
+See below for some problems involving this macro.
@end defmac
+@code{AC_EGREP_CPP} and @code{AC_EGREP_HEADER} should be used with care,
+as preprocessors can insert line breaks between output tokens. For
+example, the preprocessor might transform this:
+
+@example
+#define MAJOR 2
+#define MINOR 23
+Version MAJOR . MINOR
+@end example
+
+@noindent
+into this:
+
+@example
+Version
+ 2
+ .
+ 23
+@end example
+
+@noindent
+Because preprocessors are allowed to insert white space, change escapes
+in string contants, insert backlash-newline pairs, or do any of a number
+of things that do not change the meaning of the preprocessed program, it
+is better to rely on @code{AC_PREPROC_IFELSE} than to resort to
+@code{AC_EGREP_CPP} or @code{AC_EGREP_HEADER}.
@node Running the Compiler