summaryrefslogtreecommitdiff
path: root/endian_check.c
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2005-12-04 17:36:19 +0000
committerbjarni <bjarni@openttd.org>2005-12-04 17:36:19 +0000
commit961b71f434199c2c57666c0c88e8e4aa85b07f3c (patch)
treef7a52e0669f30866989cc02d38d34e83a2ee701c /endian_check.c
parent8277a0651e8a9b74187bfbc8a83a80bc90600345 (diff)
downloadopenttd-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.c53
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;
}