From 6bfd4cdcc5a2cd4252a06d746d30ce9cdc7f3c0c Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 15 May 2008 23:29:37 +0200 Subject: [PATCH] Update cross-compiling guess now that glibc 2.9 will have fast implementations. --- ChangeLog | 7 +++++++ m4/memmem.m4 | 20 ++++++++++++++++---- m4/strcasestr.m4 | 22 +++++++++++++++++----- m4/strstr.m4 | 20 ++++++++++++++++---- 4 files changed, 56 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6bbc81105..ddbc8e26f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-05-15 Bruno Haible + * m4/memmem.m4 (gl_FUNC_MEMMEM): When cross-compiling, assume a fast + implementation in glibc >= 2.9. + * m4/strstr.m4 (gl_FUNC_STRSTR): Likewise. + * m4/strcasestr.m4 (gl_FUNC_STRCASESTR): Likewise. + +2008-05-15 Bruno Haible + * MODULES.html.sh (Internationalization functions): Remove linebreak. (Unicode string functions): Add unilbrk/*. Reported by Karl Berry. diff --git a/m4/memmem.m4 b/m4/memmem.m4 index 383ed4b30..c7bd9d617 100644 --- a/m4/memmem.m4 +++ b/m4/memmem.m4 @@ -1,4 +1,4 @@ -# memmem.m4 serial 10 +# memmem.m4 serial 11 dnl Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -49,9 +49,21 @@ AC_DEFUN([gl_FUNC_MEMMEM], /* Check for empty needle behavior. */ return !result || !memmem ("a", 1, 0, 0);]])], [gl_cv_func_memmem_works=yes], [gl_cv_func_memmem_works=no], - [dnl pessimistically assume the worst, since even glibc 2.6.1 - dnl has quadratic complexity in its memmem - gl_cv_func_memmem_works="guessing no"])]) + [dnl Only glibc >= 2.9 is known to have a memmem that works in + dnl linear time. + AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + [gl_cv_func_memmem_works=yes], + [gl_cv_func_memmem_works="guessing no"]) + ]) + ]) if test "$gl_cv_func_memmem_works" != yes; then REPLACE_MEMMEM=1 AC_LIBOBJ([memmem]) diff --git a/m4/strcasestr.m4 b/m4/strcasestr.m4 index 4f94375ee..d8925adf8 100644 --- a/m4/strcasestr.m4 +++ b/m4/strcasestr.m4 @@ -1,4 +1,4 @@ -# strcasestr.m4 serial 9 +# strcasestr.m4 serial 10 dnl Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -48,10 +48,22 @@ AC_DEFUN([gl_FUNC_STRCASESTR], result = strcasestr (haystack, needle); } return !result;]])], - [gl_cv_func_strcasestr_linear=yes], [gl_cv_func_strcasestr_linear=no], - [dnl pessimistically assume the worst, since even glibc 2.6.1 - dnl has quadratic complexity in its strcasestr - gl_cv_func_strcasestr_linear="guessing no"])]) + [gl_cv_func_strcasestr_linear=yes], [gl_cv_func_strcasestr_linear=no], + [dnl Only glibc >= 2.9 is known to have an strcasestr that works in + dnl linear time. + AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + [gl_cv_func_strcasestr_linear=yes], + [gl_cv_func_strcasestr_linear="guessing no"]) + ]) + ]) if test "$gl_cv_func_strcasestr_linear" != yes; then REPLACE_STRCASESTR=1 AC_LIBOBJ([strcasestr]) diff --git a/m4/strstr.m4 b/m4/strstr.m4 index 5a49b07c2..fe01d5f49 100644 --- a/m4/strstr.m4 +++ b/m4/strstr.m4 @@ -1,4 +1,4 @@ -# strstr.m4 serial 2 +# strstr.m4 serial 3 dnl Copyright (C) 2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -34,9 +34,21 @@ AC_DEFUN([gl_FUNC_STRSTR], } return !result;]])], [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no], - [dnl pessimistically assume the worst, since even glibc 2.6.1 - dnl has quadratic complexity in its strstr - gl_cv_func_strstr_linear="guessing no"])]) + [dnl Only glibc >= 2.9 is known to have an strstr that works in + dnl linear time. + AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + [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]) -- 2.11.0