memcmp: Simplify autoconf macro.
authorBruno Haible <bruno@clisp.org>
Sat, 21 May 2011 13:05:50 +0000 (15:05 +0200)
committerBruno Haible <bruno@clisp.org>
Wed, 15 Jun 2011 22:06:28 +0000 (00:06 +0200)
* m4/memcmp.m4 (gl_FUNC_MEMCMP): Merge the cross-compilation code into
the AC_RUN_IFELSE invocation. Set gl_func_memcmp.
* modules/memcmp (Depends-on, configure.ac): Test gl_func_memcmp.

ChangeLog
m4/memcmp.m4
modules/memcmp

index 6432a6d..d02f9a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2011-05-21  Bruno Haible  <bruno@clisp.org>
 
+       memcmp: Simplify autoconf macro.
+       * m4/memcmp.m4 (gl_FUNC_MEMCMP): Merge the cross-compilation code into
+       the AC_RUN_IFELSE invocation. Set gl_func_memcmp.
+       * modules/memcmp (Depends-on, configure.ac): Test gl_func_memcmp.
+
+2011-05-21  Bruno Haible  <bruno@clisp.org>
+
        memcmp: Move AC_LIBOBJ invocations to module description.
        * m4/memcmp.m4 (AC_FUNC_MEMCMP): Remove macro.
        (gl_FUNC_MEMCMP): Inline it here. Set gl_cv_func_memcmp_working. Move
index 6c87525..dcc2212 100644 (file)
@@ -6,18 +6,6 @@ dnl with or without modifications, as long as this notice is preserved.
 
 AC_DEFUN([gl_FUNC_MEMCMP],
 [
-  if test $cross_compiling != no; then
-    # The test below defaults to 'no' when cross compiling.
-    # We default to yes if memcmp appears to exist, which works
-    # better for MinGW.
-    AC_CACHE_CHECK([whether cross-compiling target has memcmp],
-                   [gl_cv_func_memcmp_working],
-                   [AC_LINK_IFELSE([
-                        AC_LANG_PROGRAM([[#include <string.h>
-                                ]], [[int ret = memcmp ("foo", "bar", 0);]])],
-                        [gl_cv_func_memcmp_working=yes],
-                        [gl_cv_func_memcmp_working=no])])
-  fi
   dnl We don't use AC_FUNC_MEMCMP any more, because it is no longer maintained
   dnl in Autoconf and because it invokes AC_LIBOBJ.
   AC_CACHE_CHECK([for working memcmp], [gl_cv_func_memcmp_working],
@@ -49,8 +37,21 @@ AC_DEFUN([gl_FUNC_MEMCMP],
           ]])],
        [gl_cv_func_memcmp_working=yes],
        [gl_cv_func_memcmp_working=no],
-       [gl_cv_func_memcmp_working=no])])
-  if test $gl_cv_func_memcmp_working = no; then
+       [dnl When cross-compiling, guess memcmp works when it exists.
+        dnl This is useful for mingw.
+        AC_LINK_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[#include <string.h>]],
+             [[int ret = memcmp ("foo", "bar", 0);]])],
+          [gl_cv_func_memcmp_working="guessing yes"],
+          [gl_cv_func_memcmp_working="guessing no"])
+       ])
+    ])
+  case "$gl_cv_func_memcmp_working" in
+    *yes) gl_func_memcmp=yes ;;
+    *)    gl_func_memcmp=no ;;
+  esac
+  if test $gl_func_memcmp = no; then
     AC_DEFINE([memcmp], [rpl_memcmp],
       [Define to rpl_memcmp if the replacement function should be used.])
   fi
index 5f31bbe..5b35a75 100644 (file)
@@ -12,11 +12,11 @@ lib/memcmp.c
 m4/memcmp.m4
 
 Depends-on:
-stdint          [test $gl_cv_func_memcmp_working = no]
+stdint          [test $gl_func_memcmp = no]
 
 configure.ac:
 gl_FUNC_MEMCMP
-if test $gl_cv_func_memcmp_working = no; then
+if test $gl_func_memcmp = no; then
   AC_LIBOBJ([memcmp])
   gl_PREREQ_MEMCMP
 fi