X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fmemcmp.m4;h=c0e9265dac0fbc236324ce9eb2132652463f509c;hb=8d8bbae775e3c77070161dafc81c0c2dbba0fef4;hp=82b4b7cc862d93ec47903d51ff2cc05352ba2372;hpb=4d79a4bf952f54c82ac41e88c7b1c40365c0d004;p=gnulib.git diff --git a/m4/memcmp.m4 b/m4/memcmp.m4 index 82b4b7cc8..c0e9265da 100644 --- a/m4/memcmp.m4 +++ b/m4/memcmp.m4 @@ -1,55 +1,31 @@ -#serial 2 +# memcmp.m4 serial 14 +dnl Copyright (C) 2002-2004, 2007-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. -dnl A replacement for autoconf's AC_FUNC_MEMCMP that detects -dnl the losing memcmp on some x86 Next systems. -AC_DEFUN(jm_AC_FUNC_MEMCMP, -[AC_CACHE_CHECK([for working memcmp], jm_cv_func_memcmp_working, -[AC_TRY_RUN( -changequote(<<, >>)dnl -<< -main() -{ - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = 0x40, c1 = 0x80, c2 = 0x81; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - exit (1); - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - exit (1); - } - exit (0); - } -} ->>, -changequote([, ])dnl - jm_cv_func_memcmp_working=yes, - jm_cv_func_memcmp_working=no, - jm_cv_func_memcmp_working=no)]) -test $jm_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.o" -AC_SUBST(LIBOBJS)dnl +AC_DEFUN([gl_FUNC_MEMCMP], +[ + if test $cross_compiling != no; then + # AC_FUNC_MEMCMP as of 2.62 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], + [ac_cv_func_memcmp_working], + [AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[#include + ]], [[int ret = memcmp ("foo", "bar", 0);]])], + [ac_cv_func_memcmp_working=yes], + [ac_cv_func_memcmp_working=no])]) + fi + AC_FUNC_MEMCMP + dnl Note: AC_FUNC_MEMCMP does AC_LIBOBJ([memcmp]). + if test $ac_cv_func_memcmp_working = no; then + AC_DEFINE([memcmp], [rpl_memcmp], + [Define to rpl_memcmp if the replacement function should be used.]) + gl_PREREQ_MEMCMP + fi ]) -dnl If you use this macro in a package, you should -dnl add the following two lines to acconfig.h: -dnl /* Define to rpl_memcmp if the replacement function should be used. */ -dnl #undef memcmp -dnl -AC_DEFUN(jm_FUNC_MEMCMP, -[AC_REQUIRE([jm_AC_FUNC_MEMCMP])dnl - if test $jm_cv_func_memcmp_working = no; then - AC_DEFINE_UNQUOTED(memcmp, rpl_memcmp) - fi -]) +# Prerequisites of lib/memcmp.c. +AC_DEFUN([gl_PREREQ_MEMCMP], [:])