summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2020-07-16 10:39:56 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2020-07-16 10:48:09 -0700
commit29ede6b96feee29c0c477d1659081bbdb82cd8b3 (patch)
tree798a93f0ea4e64303d1f2c1c9925a49060f61b79
parenteb4a1d7fafde8e6d00ab0db3ea369c3927754e21 (diff)
downloadautoconf-29ede6b96feee29c0c477d1659081bbdb82cd8b3.tar.gz
AC_PROG_LEX no longer sets LEXLIB for yywrap
Suggested by Zack Weinberg in: https://lists.gnu.org/r/autoconf-patches/2020-07/msg00016.html * lib/autoconf/programs.m4 (_AC_PROG_LEX_YYTEXT_DECL): Define yywrap too.
-rw-r--r--NEWS4
-rw-r--r--doc/autoconf.texi13
-rw-r--r--lib/autoconf/programs.m45
3 files changed, 18 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 3c5dfec2..dd3b2896 100644
--- a/NEWS
+++ b/NEWS
@@ -104,6 +104,10 @@ GNU Autoconf NEWS - User visible changes.
- AC_PROG_CC_STDC, AC_PROG_CC_C89, AC_PROG_CC_C99 have been marked as obsolete.
Applications should use AC_PROG_CC.
+- AC_PROG_LEX no longer sets LEXLIB to be nonempty merely to define
+ the yywrap function. Packages should define yywrap themselves, or
+ use %noyywrap.
+
- AC_USE_SYSTEM_EXTENSIONS now enables more extensions on HP-UX,
macOS, and MINIX, as well as on systems conforming to recent
ISO/IEC C technical reports and specifications.
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 379e3c2f..b8f889cc 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -4177,15 +4177,20 @@ The result of the test can be overridden by setting the variable
@cvindex YYTEXT_POINTER
@ovindex LEX_OUTPUT_ROOT
@caindex prog_LEX
-If @code{flex} is found, set output variable @code{LEX} to @samp{flex}
-and @code{LEXLIB} to @option{-lfl}, if that library is in a standard
-place. Otherwise set @code{LEX} to @samp{lex} and @code{LEXLIB} to
-@option{-ll}, if found. If neither variant is available, set @code{LEX}
+If @code{flex} is found, set output variable @code{LEX} to @samp{flex}.
+Otherwise set @code{LEX} to @samp{lex}, if found.
+If neither variant is available, set @code{LEX}
to @samp{:}; for packages that ship the generated @file{file.yy.c}
alongside the source @file{file.l}, this default allows users without a
lexer generator to still build the package even if the timestamp for
@file{file.l} is inadvertently changed.
+If generated lexers need a library to work, set output variable
+@code{LEXLIB} to an option for that library (e.g., @option{-ll});
+otherwise define @code{LEXLIB} to empty. A library that merely defines
+@code{main} and @code{yywrap} placeholder functions is not considered
+to be needed.
+
Define @code{YYTEXT_POINTER} if @code{yytext} defaults to @samp{char *} instead
of to @samp{char []}. Also set output variable @code{LEX_OUTPUT_ROOT} to
the base of the file name that the lexer generates; usually
diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
index 4f910fb0..6fd44a3b 100644
--- a/lib/autoconf/programs.m4
+++ b/lib/autoconf/programs.m4
@@ -735,6 +735,11 @@ f { unput (yytext[0]); }
extern char *yytext;
#endif
int
+yywrap (void)
+{
+ return 1;
+}
+int
main (void)
{
return ! yylex () + ! yywrap ();