X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sdccconf_in.h;h=cd08da4a9ce3afb0e5ee28ad79705a445f6736cf;hb=80972b2e54c9b88f11c27b878874fd2a6a681391;hp=dc3d30b4a0bc3df9b4059f1defb91b06584b7144;hpb=4df0866f3a46125114c3230f54a25d6ed3def732;p=fw%2Fsdcc diff --git a/sdccconf_in.h b/sdccconf_in.h index dc3d30b4..cd08da4a 100644 --- a/sdccconf_in.h +++ b/sdccconf_in.h @@ -54,23 +54,29 @@ #undef TYPE_UWORD #undef TYPE_UDWORD -/* find out the endianess of host machine */ -#if __BIG_ENDIAN__ || _BIG_ENDIAN +/* + * find out the endianess of host machine + * in order to be able to make Mac OS X unified binaries + */ +/* This is tricky since these might be defined with a blank replacement list */ +/* such as on SPARC Solaris. However, configure gets it right, so it's ok */ +/* that (_BIG_ENDIAN+0) is false, even though it is defined. */ +#if (__BIG_ENDIAN__+0) || (_BIG_ENDIAN+0) /* 1) trust the compiler */ -#define WORDS_BIGENDIAN 1 -#elsif __LITTLE_ENDIAN__ -/* just in case ... */ -#undef WORDS_BIGENDIAN +# define WORDS_BIGENDIAN 1 +#elif __LITTLE_ENDIAN__ +/* do nothing */ #elif (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) /* 2) trust the header files */ # if BYTE_ORDER == BIG_ENDIAN # define WORDS_BIGENDIAN 1 # endif #else -/* 3) assume that host machine has the same endianess as the build machine */ +/* 3) trust the configure; this actually doesn't work for unified Mac OS X binaries :-( */ # undef BUILD_WORDS_BIGENDIAN # if (defined BUILD_WORDS_BIGENDIAN && BUILD_WORDS_BIGENDIAN) # define WORDS_BIGENDIAN 1 +# endif /* 4) assume that host is a little endian machine */ #endif