From e35c5c9c65eb80932568c7d8b5b886dcb65cfde2 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Mon, 19 Mar 2012 02:16:41 -0700 Subject: [PATCH] fcarch: Check for architecture signature at compile time rather than configure time https://bugs.freedesktop.org/show_bug.cgi?id=20208 Signed-off-by: Jeremy Huddleston --- fc-cache/fc-cache.c | 3 +-- src/fcarch.c | 4 ++-- src/fcarch.h | 23 +++++++++++++++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c index d265350..deb4aa8 100644 --- a/fc-cache/fc-cache.c +++ b/fc-cache/fc-cache.c @@ -22,8 +22,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -#include "../src/fcarch.h" - #ifdef HAVE_CONFIG_H #include #else @@ -34,6 +32,7 @@ #endif #include +#include "../src/fcarch.h" #include #include #include diff --git a/src/fcarch.c b/src/fcarch.c index c69397e..09d24b3 100644 --- a/src/fcarch.c +++ b/src/fcarch.c @@ -31,12 +31,12 @@ #ifndef FC_ARCHITECTURE -#include "fcarch.h" - /* Make sure the cache structure is consistent with what we expect */ #include "fcint.h" +#include "fcarch.h" + FC_ASSERT_STATIC (1 == sizeof (char)); FC_ASSERT_STATIC (2 == sizeof (FcChar16)); FC_ASSERT_STATIC (4 == sizeof (int)); diff --git a/src/fcarch.h b/src/fcarch.h index 9cabf04..22e6f8e 100644 --- a/src/fcarch.h +++ b/src/fcarch.h @@ -46,9 +46,28 @@ * be64 1234 8 8 */ -#if defined(WORDS_BIGENDIAN) && WORDS_BIGENDIAN +#ifdef __APPLE__ +# include +# undef SIZEOF_VOID_P +# undef ALIGNOF_DOUBLE +# ifdef __LP64__ +# define SIZEOF_VOID_P 8 +# define ALIGNOF_DOUBLE 8 +# else +# define SIZEOF_VOID_P 4 +# define ALIGNOF_DOUBLE 4 +# endif +#endif + +#if defined(__DARWIN_BYTE_ORDER) && __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN +# define FC_ARCH_ENDIAN "le" +#elif defined(__DARWIN_BYTE_ORDER) && __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN +# define FC_ARCH_ENDIAN "be" +#elif defined(__DARWIN_BYTE_ORDER) && __DARWIN_BYTE_ORDER == __DARWIN_PDP_ENDIAN +# define FC_ARCH_ENDIAN "pe" +#elif defined(WORDS_BIGENDIAN) && WORDS_BIGENDIAN # define FC_ARCH_ENDIAN "be" -#else /* !WORDS_BIGENDIAN */ +#else # define FC_ARCH_ENDIAN "le" #endif -- 1.7.9.2