In strcasestr.m4, there is no need to do the linear time check if gnulib is going to override the function anyway.
Also, I prefer not to rely on AC_REPLACE_FUNCS when it makes the code harder to understand. AC_REPLACE_FUNCS is a nice shorthand for the simple cases, but here its use leads to duplicated code. Instead, use the idiom found in m4/mbsrtowcs.m4 and elsewhere. 2009-06-18 Bruno Haible <br...@clisp.org> * m4/strcasestr.m4 (gl_FUNC_STRCASESTR_SIMPLE): Invoke AC_LIBOBJ only in one place. (gl_FUNC_STRCASESTR): Skip linear time test if strcasestr is going to be replaced anyway. --- m4/strcasestr.m4.orig 2009-06-18 10:08:10.000000000 +0200 +++ m4/strcasestr.m4 2009-06-18 10:01:52.000000000 +0200 @@ -7,17 +7,21 @@ dnl Check that strcasestr is present and works. AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE], [ + AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) + dnl Persuade glibc <string.h> to declare strcasestr(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) - AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_MEMCHR]) - AC_REPLACE_FUNCS([strcasestr]) + AC_CHECK_FUNCS([strcasestr]) if test $ac_cv_func_strcasestr = no; then HAVE_STRCASESTR=0 - gl_PREREQ_STRCASESTR - elif test "$gl_cv_func_memchr_works" != yes; then - REPLACE_STRCASESTR=1 + else + if test "$gl_cv_func_memchr_works" != yes; then + REPLACE_STRCASESTR=1 + fi + fi + if test $HAVE_STRCASESTR = 0 || test $REPLACE_STRCASESTR = 1; then AC_LIBOBJ([strcasestr]) gl_PREREQ_STRCASESTR fi @@ -27,7 +31,7 @@ AC_DEFUN([gl_FUNC_STRCASESTR], [ AC_REQUIRE([gl_FUNC_STRCASESTR_SIMPLE]) - if test $ac_cv_func_strcasestr = yes; then + if test $HAVE_STRCASESTR = 1 && test $REPLACE_STRCASESTR = 0; then AC_CACHE_CHECK([whether strcasestr works in linear time], [gl_cv_func_strcasestr_linear], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ @@ -80,6 +84,7 @@ if test "$gl_cv_func_strcasestr_linear" != yes; then REPLACE_STRCASESTR=1 AC_LIBOBJ([strcasestr]) + gl_PREREQ_STRCASESTR fi fi ]) # gl_FUNC_STRCASESTR