summaryrefslogtreecommitdiff
path: root/endian_check.c
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2005-12-06 14:35:10 +0000
committerbjarni <bjarni@openttd.org>2005-12-06 14:35:10 +0000
commit686da2f4e14256b2b79ee6d070a580aafddefde1 (patch)
tree07212c84917cdef0f7275bdc8a5dd27c3218e76f /endian_check.c
parenta3d142ed57aceed7db2a9c7c7ef9fc2d50b6a44a (diff)
downloadopenttd-686da2f4e14256b2b79ee6d070a580aafddefde1.tar.xz
(svn r3264) -Codechange: [OSX] OSX targets will now always use the preprocessor to determine endianess
this means that ENDIAN_FORCE is obsolite since it's always overwritten with PREPROCESSOR Since the preprocessor should never be able to pick wrong, it's easier this way specially when compiling universal binaries as they got both endianess
Diffstat (limited to 'endian_check.c')
-rw-r--r--endian_check.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/endian_check.c b/endian_check.c
index d838e14f3..a302ea40b 100644
--- a/endian_check.c
+++ b/endian_check.c
@@ -12,12 +12,14 @@
int main (int argc, char *argv[]) {
unsigned char EndianTest[2] = { 1, 0 };
- int force_BE = 0, force_LE = 0;
+ int force_BE = 0, force_LE = 0, force_PREPROCESSOR = 0;
if (argc > 1 && strcmp(argv[1], "BE") == 0)
force_BE = 1;
if (argc > 1 && strcmp(argv[1], "LE") == 0)
force_LE = 1;
+ if (argc > 1 && strcmp(argv[1], "PREPROCESSOR") == 0)
+ force_PREPROCESSOR = 1;
printf("#ifndef ENDIAN_H\n#define ENDIAN_H\n");
@@ -27,20 +29,21 @@ int main (int argc, char *argv[]) {
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
+ if (force_PREPROCESSOR == 1) {
+ // adding support for universal binaries on OSX
+ // Universal binaries supports both PPC and x86
+ // If a compiler for OSX gets this setting, it will always pick the correct endian and no test is needed
+ printf("#ifdef __BIG_ENDIAN__\n");
printf("#define TTD_BIG_ENDIAN\n");
-#endif
+ 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");
+ }
}
}
printf("#endif\n");