diff options
author | bjarni <bjarni@openttd.org> | 2005-12-04 17:36:19 +0000 |
---|---|---|
committer | bjarni <bjarni@openttd.org> | 2005-12-04 17:36:19 +0000 |
commit | 961b71f434199c2c57666c0c88e8e4aa85b07f3c (patch) | |
tree | f7a52e0669f30866989cc02d38d34e83a2ee701c /endian_check.c | |
parent | 8277a0651e8a9b74187bfbc8a83a80bc90600345 (diff) | |
download | openttd-961b71f434199c2c57666c0c88e8e4aa85b07f3c.tar.xz |
(svn r3258) -Feature: [OSX] added support for universal binaries
it needs both PPC and x86 libs to compile
due to this fact, compilation with libPNG or SDL is not tested (dedicated servers only)
only PPC part is tested as I don't have x86 OSX
Diffstat (limited to 'endian_check.c')
-rw-r--r-- | endian_check.c | 53 |
1 files changed, 35 insertions, 18 deletions
diff --git a/endian_check.c b/endian_check.c index bc564e973..d838e14f3 100644 --- a/endian_check.c +++ b/endian_check.c @@ -11,22 +11,39 @@ // care of the real writing to the file. int main (int argc, char *argv[]) { - unsigned char EndianTest[2] = { 1, 0 }; - int force_BE = 0, force_LE = 0; - - if (argc > 1 && strcmp(argv[1], "BE") == 0) - force_BE = 1; - if (argc > 1 && strcmp(argv[1], "LE") == 0) - force_LE = 1; - - printf("#ifndef ENDIAN_H\n#define ENDIAN_H\n"); - - if ( (*(short *) EndianTest == 1 && force_BE != 1) || force_LE == 1) - printf("#define TTD_LITTLE_ENDIAN\n"); - else - printf("#define TTD_BIG_ENDIAN\n"); - - printf("#endif\n"); - - return 0; + unsigned char EndianTest[2] = { 1, 0 }; + int force_BE = 0, force_LE = 0; + + if (argc > 1 && strcmp(argv[1], "BE") == 0) + force_BE = 1; + if (argc > 1 && strcmp(argv[1], "LE") == 0) + force_LE = 1; + + printf("#ifndef ENDIAN_H\n#define ENDIAN_H\n"); + + if (force_LE == 1) { + printf("#define TTD_LITTLE_ENDIAN\n"); + } else { + if (force_BE == 1) { + printf("#define TTD_BIG_ENDIAN\n"); + } else { +#ifdef __APPLE__ + // adding support for universal binaries on OSX + // Universal binaries supports both PPC and x86 + printf("#ifdef __BIG_ENDIAN__\n"); + printf("#define TTD_BIG_ENDIAN\n"); + printf("#else\n"); + printf("#define TTD_LITTLE_ENDIAN\n"); + printf("#endif\n"); +#else + if ( *(short *) EndianTest == 1 ) + printf("#define TTD_LITTLE_ENDIAN\n"); + else + printf("#define TTD_BIG_ENDIAN\n"); +#endif + } + } + printf("#endif\n"); + + return 0; } |