]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
Cater to programs misusing AC_EGREP_HEADER
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 31 Mar 2023 17:46:20 +0000 (10:46 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 31 Mar 2023 17:47:49 +0000 (10:47 -0700)
Problem reported by Frederic Berat in:
https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html
* lib/autoconf/programs.m4 (AC_PROG_EGREP): Also set
EGREP_TRADITIONAL and ac_cv_path_EGREP_TRADITIONAL.
* tests/c.at (AC_PROG_EGREP and AC_EGREP_HEADER):
New test, taken from Frederic Berat’s email in:
https://lists.gnu.org/r/autoconf/2023-03/msg00043.html

lib/autoconf/programs.m4
tests/c.at

index 1b7460c8570bf2cd4b473721f1d7fea15f3f2875..62ba6b8b6a854f7bb1b43f412c2f0086dba58159 100644 (file)
@@ -371,6 +371,16 @@ AC_CACHE_CHECK([for egrep], ac_cv_path_EGREP,
    fi])
  EGREP="$ac_cv_path_EGREP"
  AC_SUBST([EGREP])
+ dnl
+ dnl Also set EGREP_TRADITIONAL even though unnecessary here,
+ dnl for wrong but too-common code with the following pattern:
+ dnl   AC_PROG_EGREP
+ dnl   if false; then
+ dnl      AC_EGREP_HEADER([printf], [stdio.h], [has_printf=yes])
+ dnl   fi
+ dnl   AC_EGREP_HEADER([malloc], [stdlib.h], [has_malloc=yes])
+ EGREP_TRADITIONAL=$EGREP
+ ac_cv_path_EGREP_TRADITIONAL=$EGREP
 ])# AC_PROG_EGREP
 
 # _AC_PROG_EGREP_TRADITIONAL
index c37f43b10f6d967ddbf42386cad62fbb611d3ea3..fad54760f58e6f373cb6e9baa8e4e28e9f29b393 100644 (file)
@@ -232,6 +232,30 @@ AT_CHECK_DEFINES(
 AT_CLEANUP
 
 
+## ----------------------------------- ##
+## AC_PROG_EGREP and AC_EGREP_HEADER.  ##
+## ----------------------------------- ##
+
+AT_SETUP([AC_PROG_EGREP and AC_EGREP_HEADER])
+
+_AT_CHECK_AC_MACRO(
+[[AC_PROG_CPP
+  AC_PROG_EGREP
+
+  # Although this code is incorrect (it should use AS_IF),
+  # it follows a too-common real world pattern.
+  # For now, test for it; we may remove this test later.
+  if false; then
+    AC_EGREP_HEADER([^], [limits.h])
+  fi
+
+  AC_EGREP_HEADER([$], [limits.h], [],
+    [AC_MSG_ERROR([[egrep-related macros do not tolerate misuse of 'if']])])
+]])
+
+AT_CLEANUP
+
+
 ## ------------------------------------ ##
 ## AC_NO_EXECUTABLES (working linker).  ##
 ## ------------------------------------ ##