autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AC_C_BIGENDIAN answers "universal" on powerpc-aix


From: Ralf Wildenhues
Subject: Re: AC_C_BIGENDIAN answers "universal" on powerpc-aix
Date: Thu, 14 Aug 2008 19:16:58 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

Hi Peter,

Thank you for working on this!

* Peter O'Gorman wrote on Thu, Aug 14, 2008 at 05:12:35PM CEST:
> >From 8e97c12604717a30c8c79e2f2a3c3c004dc42d35 Mon Sep 17 00:00:00 2001
> From: Peter O'Gorman <address@hidden>
> Date: Thu, 14 Aug 2008 10:09:01 -0500
> Subject: [PATCH] Limit AC_C_BIGENDIAN univeral checks to Mac OS X.
> 
> * lib/autoconf/c.m4 (AC_C_BIGENDIAN): Limit the check to __APPLE_C__ with 
> possible -arch flags.

The patch looks good to me at a glance, except for a couple of nits
below.  However, it should receive some good testing, though.
(Hereby volunteering to do my part in it in the next 48 hours,
but please others do test as well if possible).

Thanks,
Ralf

> +2008-08-14  Peter O'Gorman  <address@hidden>
> +
> +     Limit AC_C_BIGENDIAN univeral checks to Mac OS X.
> +     * lib/autoconf/c.m4 (AC_C_BIGENDIAN): Limit the check to
> +     __APPLE_C__ with possible -arch flags.
> +

This should have a NEWS entry, like

** AC_C_BIGENDIAN does not mistakenly report "universal" for some
   bigendian hosts, a regression introduced with universal binary
   support in 2.62.

> diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
> index ffaa06e..22876a5 100644
> --- a/lib/autoconf/c.m4
> +++ b/lib/autoconf/c.m4
> @@ -1399,11 +1399,15 @@ 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
> @@ -1411,12 +1415,18 @@ AC_DEFUN([AC_C_BIGENDIAN],
>        [# See if __BIG_ENDIAN__ or __LITTLE_ENDIAN__ is defined.
>         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])],
> +      [
> +     # 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  #(
> +       *"ppc"*|*"i386"*|*"x86_64"*) ac_cv_c_bigendian=universal;;

Why not check for
  *-arch\ ppc* | *-arch\ i386* | *-arch\ x86_64*

?

> +     esac])],
>        [AC_DIAGNOSE([obsolete], [AC_C_BIGENDIAN suggests AC_CONFIG_HEADERS])])
>      if test $ac_cv_c_bigendian = unknown; then
>        # See if sys/param.h defines the BYTE_ORDER macro.
> @@ -1521,6 +1531,7 @@ AC_DEFUN([AC_C_BIGENDIAN],
>     no)
>       $2 ;; #(
>     universal)
> +     AC_DEFINE([AC_APPLE_UNIVERSAL_BUILD],1,[Define if building universal])

s/universal/& (internal helper macro)/  ???

>       $4 ;; #(
>     *)
>       m4_default([$3],




reply via email to

[Prev in Thread] Current Thread [Next in Thread]