In strstr.m4 as well, the linear time check can be skipped if the function is going to be overridden anyway.
2009-06-18 Bruno Haible <br...@clisp.org> * m4/strstr.m4 (gl_FUNC_STRSTR): Skip linear time test if strstr is going to be replaced anyway. --- m4/strstr.m4.orig 2009-06-18 10:17:00.000000000 +0200 +++ m4/strstr.m4 2009-06-18 10:04:18.000000000 +0200 @@ -19,9 +19,10 @@ AC_DEFUN([gl_FUNC_STRSTR], [ AC_REQUIRE([gl_FUNC_STRSTR_SIMPLE]) - AC_CACHE_CHECK([whether strstr works in linear time], - [gl_cv_func_strstr_linear], - [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ + if test $REPLACE_STRSTR = 0; then + AC_CACHE_CHECK([whether strstr works in linear time], + [gl_cv_func_strstr_linear], + [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <signal.h> /* for signal */ #include <string.h> /* for memmem */ #include <stdlib.h> /* for malloc */ @@ -46,11 +47,11 @@ result = strstr (haystack, needle); } return !result;]])], - [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no], - [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a - dnl strstr that works in linear time. - AC_EGREP_CPP([Lucky user], - [ + [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no], + [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a + dnl strstr that works in linear time. + AC_EGREP_CPP([Lucky user], + [ #include <features.h> #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2) @@ -63,13 +64,14 @@ Lucky user #endif #endif - ], - [gl_cv_func_strstr_linear=yes], - [gl_cv_func_strstr_linear="guessing no"]) + ], + [gl_cv_func_strstr_linear=yes], + [gl_cv_func_strstr_linear="guessing no"]) + ]) ]) - ]) - if test "$gl_cv_func_strstr_linear" != yes; then - REPLACE_STRSTR=1 - AC_LIBOBJ([strstr]) + if test "$gl_cv_func_strstr_linear" != yes; then + REPLACE_STRSTR=1 + AC_LIBOBJ([strstr]) + fi fi ]) # gl_FUNC_STRSTR