Imported Upstream version 2.8.11.2
[platform/upstream/cmake.git] / Source / kwsys / CPU.h.in
1 /*============================================================================
2   KWSys - Kitware System Library
3   Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
4
5   Distributed under the OSI-approved BSD License (the "License");
6   see accompanying file Copyright.txt for details.
7
8   This software is distributed WITHOUT ANY WARRANTY; without even the
9   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10   See the License for more information.
11 ============================================================================*/
12 #ifndef @KWSYS_NAMESPACE@_CPU_h
13 #define @KWSYS_NAMESPACE@_CPU_h
14
15 #include <@KWSYS_NAMESPACE@/Configure.h>
16
17 /* Identify possible endian cases.  The macro
18    @KWSYS_NAMESPACE@_CPU_ENDIAN_ID will be defined to one of these, or
19    0 if unknown.  */
20 #define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG    4321
21 #define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE 1234
22
23 /* Apple always defines one of these.  */
24 #if defined(__LITTLE_ENDIAN__)
25 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
26 #elif defined(__BIG_ENDIAN__)
27 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
28
29 /* Alpha */
30 #elif defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA)
31 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
32
33 /* Arm */
34 #elif defined(__arm__)
35 # if !defined(__ARMEB__)
36 #  define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
37 # else
38 #  define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
39 # endif
40
41 /* Intel x86 */
42 #elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
43 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
44 #elif defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__)
45 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
46 #elif defined(__MWERKS__) && defined(__INTEL__)
47 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
48
49 /* Intel x86-64 */
50 #elif defined(__x86_64) || defined(__x86_64__) || defined(_M_X64)
51 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
52 #elif defined(__amd64) || defined(__amd64__)
53 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
54
55 /* Intel Architecture-64 (Itanium) */
56 #elif defined(__ia64) || defined(__ia64__)
57 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
58 #elif defined(_IA64) || defined(__IA64__) || defined(_M_IA64)
59 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
60
61 /* PowerPC */
62 #elif defined(__powerpc) || defined(__powerpc__)
63 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
64 #elif defined(__ppc) || defined(__ppc__) || defined(__POWERPC__)
65 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
66
67 /* SPARC */
68 #elif defined(__sparc) || defined(__sparc__)
69 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
70
71 /* HP/PA RISC */
72 #elif defined(__hppa) || defined(__hppa__)
73 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
74
75 /* Motorola 68k */
76 #elif defined(__m68k__) || defined(M68000)
77 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
78
79 /* MIPS */
80 #elif defined(__mips) || defined(__mips__) || defined(__MIPS__)
81 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
82
83 /* RS/6000 */
84 #elif defined(__THW_RS600) || defined(_IBMR2) || defined(_POWER)
85 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
86 #elif defined(_ARCH_PWR) || defined(_ARCH_PWR2)
87 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
88
89 /* System/370 */
90 #elif defined(__370__) || defined(__THW_370__)
91 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
92
93 /* System/390 */
94 #elif defined(__s390__) || defined(__s390x__)
95 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
96
97 /* z/Architecture */
98 #elif defined(__SYSC_ZARCH__)
99 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
100
101 /* Aarch64 */
102 #elif defined(__aarch64__)
103 # if !defined(__AARCH64EB__)
104 #  define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
105 # else
106 #  define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
107 # endif
108
109 /* Unknown CPU */
110 #else
111 # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID 0
112 # if !defined(@KWSYS_NAMESPACE@_CPU_UNKNOWN_OKAY)
113 #  error "The target CPU architecture is not known."
114 # endif
115 #endif
116
117 /* If building a C or C++ file in kwsys itself, give the source file
118    access to the macros without a configured namespace.  */
119 #if defined(KWSYS_NAMESPACE)
120 # define KWSYS_CPU_ENDIAN_ID        @KWSYS_NAMESPACE@_CPU_ENDIAN_ID
121 # define KWSYS_CPU_ENDIAN_ID_BIG    @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
122 # define KWSYS_CPU_ENDIAN_ID_LITTLE @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
123 #endif
124
125 #endif