X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sdccconf_in.h;h=cd08da4a9ce3afb0e5ee28ad79705a445f6736cf;hb=5a1d5e778e85664f4e6657019348b4756b16eacb;hp=4c6511561bbdf7b49704bcc7e06cbcd900dfd6b5;hpb=385e73259dae7053602559c58a6e7cf9972d13d3;p=fw%2Fsdcc diff --git a/sdccconf_in.h b/sdccconf_in.h index 4c651156..cd08da4a 100644 --- a/sdccconf_in.h +++ b/sdccconf_in.h @@ -54,7 +54,31 @@ #undef TYPE_UWORD #undef TYPE_UDWORD -#undef WORDS_BIGENDIAN +/* + * 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 +#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) 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 #undef OPT_DISABLE_MCS51 #undef OPT_DISABLE_GBZ80