0.8.16.16:
[sbcl.git] / tools-for-build / determine-endianness.c
1 /*
2  * Test for the endianness of the target platform (needed for MIPS
3  * support, at the very least, as systems with either endianness exist
4  * in the wild).
5  */
6
7 /*
8  * This software is part of the SBCL system. See the README file for
9  * more information.
10  *
11  * While most of SBCL is derived from the CMU CL system, many
12  * utilities for the build process (like this one) were written from
13  * scratch after the fork from CMU CL.
14  * 
15  * This software is in the public domain and is provided with
16  * absolutely no warranty. See the COPYING and CREDITS files for
17  * more information.
18  */
19
20 #include <stdio.h>
21
22 int main (int argc, char *argv[]) {
23     int foo = 0x20212223;
24     char *bar = (char *) &foo;
25     switch(*bar) {
26     case ' ':
27         /* Do nothing */
28         break;
29     case '#':
30         printf(" :little-endian");
31         break;
32     default:
33         /* FIXME: How do we do sane error processing in Unix?  This
34            program will be called from a script, in a manner somewhat
35            like:
36
37                tools-for-build/determine-endianness >> $ltf
38
39            but what if we have a too-smart C compiler that actually
40            gets us down to this branch?  I suppose that if we have a C
41            compiler that is that smart, we're doomed to miscompile the
42            runtime anyway, so we won't get here.  Still, it might be
43            good to have "set -e" in the various scripts so that we can
44            exit with an error here and have it be caught by the build
45            tools.  -- CSR, 2002-11-24
46         */
47         exit(1);
48     }
49     exit(0); 
50 }