distutils & OS X universal binaries

Robin Becker robin at NOSPAMreportlab.com
Sat Dec 8 12:31:59 EST 2007


Martin v. Löwis wrote:
.......
>> I'm puzzled why WORDS_BIGENDIAN is undefined if both __BIG_ENDIAN__ and
>> __LITTLE_ENDIAN__ are undefined. Surely in that case WORDS_BIGENDIAN
>> should be left alone (if it is already defined). If there's a compiler
>> for a bigendian architecture which doesn't define the gcc macros the we
>> seem to get the wrong result.
> 
> No. pyconfig.h.in gets processed by configure into pyconfig.h; configure
> replaces all #undef lines with appropriate #define lines if the macro
> got define in configure. The autoconf macro AC_C_BIGENDIAN performs
> a configure-time check. So

 >
 > - if the compiler either defines __BIG_ENDIAN__ or __LITTLE_ENDIAN__,
 >   that is taken for granted.
 > - otherwise, the configure-time value is used
 >
 > On your normal big-endian compiler (e.g. SPARC), it's the
 > configure-time value that makes WORDS_BIGENDIAN defined.
......

OK I need to use something a bit more complex then; I figure this should 
work

#if defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__)
#	ifdef __BIG_ENDIAN__
#		ifdef WORDS_BIGENDIAN
#			undef WORDS_BIGENDIAN
#		endif
#		define WORDS_BIGENDIAN 1
#	else
#		ifdef __LITTLE_ENDIAN__
#			ifdef WORDS_BIGENDIAN
#				undef WORDS_BIGENDIAN
#			endif
#		endif
#	endif
#endif


-- 
Robin Becker



More information about the Python-list mailing list