changeset 15037:0b402f8f9b23

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.
author Bruno Haible <bruno@clisp.org>
date Sat, 21 May 2011 15:05:50 +0200
parents 57aae479b6ad
children 3fec2fcab2fa
files ChangeLog m4/memcmp.m4 modules/memcmp
diffstat 3 files changed, 24 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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.
--- a/m4/memcmp.m4
+++ b/m4/memcmp.m4
@@ -6,18 +6,6 @@
 
 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 @@
           ]])],
        [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
--- a/modules/memcmp
+++ b/modules/memcmp
@@ -12,11 +12,11 @@
 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