From 8173e5d6fefd8a2a36974610f85784121f8dc36e Mon Sep 17 00:00:00 2001 From: Tom Date: Sun, 12 Jul 2020 10:44:11 -0400 Subject: Fix logic error in _AC_PROG_LEX_YYTEXT_DECL (#109320) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The search for the appropriate value for @LEXLIB@ did not distinguish correctly between success (‘break’ out of a shell for loop, having set $ac_cv_lib_lex) and failure (normal termination of the loop, value in $ac_cv_lib_lex is garbage). Bug report and original patch by Tom with refinements by Zack Weinberg. * lib/autoconf/programs.m4 (_AC_PROG_LEX_YYTEXT_DECL): Error out if we cannot find the library that (f)lex scanners need to be linked against, instead of continuing with @LEXLIB@ set to the empty string. --- lib/autoconf/programs.m4 | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4 index 006c0b66..9deb62e8 100644 --- a/lib/autoconf/programs.m4 +++ b/lib/autoconf/programs.m4 @@ -741,7 +741,7 @@ main (void) } ]_ACEOF _AC_DO_VAR(LEX conftest.l) -AC_CACHE_CHECK([lex output file root], [ac_cv_prog_lex_root], [ +AC_CACHE_CHECK([for lex output file root], [ac_cv_prog_lex_root], [ if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then @@ -751,20 +751,25 @@ else fi]) AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])dnl -if ${LEXLIB+false} :; then - AC_CACHE_CHECK([lex library], [ac_cv_lib_lex], [ +AS_VAR_SET_IF([LEXLIB], [], [ + AC_CACHE_CHECK([for lex library], [ac_cv_lib_lex], [ + ac_cv_lib_lex='not found' ac_save_LIBS=$LIBS - ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" AC_LINK_IFELSE([AC_LANG_DEFINES_PROVIDED[`cat $LEX_OUTPUT_ROOT.c`]], - [ac_cv_lib_lex=$ac_lib]) - test "$ac_cv_lib_lex" != 'none needed' && break + [ac_cv_lib_lex="${ac_lib:-none needed}" + break]) done LIBS=$ac_save_LIBS ]) - test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex -fi + AS_IF( + [test "$ac_cv_lib_lex" = 'not found'], + [AC_MSG_ERROR([required lex library not found])], + [test "$ac_cv_lib_lex" = 'none needed'], + [LEXLIB=''], + [LEXLIB=$ac_cv_lib_lex]) +]) AC_SUBST(LEXLIB) AC_CACHE_CHECK(whether yytext is a pointer, ac_cv_prog_lex_yytext_pointer, -- cgit v1.2.1