--- lib/autoconf/c.m4.orig Sun Apr 6 01:04:48 2008 +++ lib/autoconf/c.m4 Fri Jun 12 15:28:06 2009 @@ -1399,25 +1399,33 @@ fi AC_DEFUN([AC_C_BIGENDIAN], [AH_VERBATIM([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ -#if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -#elif ! defined __LITTLE_ENDIAN__ -# undef WORDS_BIGENDIAN + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif #endif])dnl AC_CACHE_CHECK([whether byte ordering is bigendian], [ac_cv_c_bigendian], [ac_cv_c_bigendian=unknown - m4_ifval(m4_ifdef([AH_HEADER], 1)[$4], - [# See if __BIG_ENDIAN__ or __LITTLE_ENDIAN__ is defined. - AC_COMPILE_IFELSE( + # See if we're dealing with a universal compiler. + AC_COMPILE_IFELSE( [AC_LANG_SOURCE( - [[#if ! (defined __BIG_ENDIAN__ || defined __LITTLE_ENDIAN__) - neither is defined; + [[#ifndef __APPLE_CC__ + not a universal capable compiler #endif typedef int dummy; ]])], - [ac_cv_c_bigendian=universal])], - [AC_DIAGNOSE([obsolete], [AC_C_BIGENDIAN suggests AC_CONFIG_HEADERS])]) + [ + # Check for potential -arch flags. It is not universal unless + # there are some -arch flags. Note that *ppc* also matches + # ppc64. This check is also rather less than ideal. + case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #( + *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;; + esac]) if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. AC_COMPILE_IFELSE( @@ -1521,7 +1529,17 @@ AC_DEFUN([AC_C_BIGENDIAN], no) $2 ;; #( universal) - $4 ;; #( +dnl Note that AC_APPLE_UNIVERSAL_BUILD sorts less than WORDS_BIGENDIAN; +dnl this is a necessity for proper config header operation. Warn if +dnl the user did not specify a config header but is relying on the +dnl default behavior for universal builds. + m4_default([$4], + [AC_CONFIG_COMMANDS_PRE([m4_ifset([AH_HEADER], [], + [AC_DIAGNOSE([obsolete], + [AC_C_BIGENDIAN should be used with AC_CONFIG_HEADERS])])])dnl + AC_DEFINE([AC_APPLE_UNIVERSAL_BUILD],1, + [Define if building universal (internal helper macro)])]) + ;; #( *) m4_default([$3], [AC_MSG_ERROR([unknown endianness