| /*============================================================================ |
| KWSys - Kitware System Library |
| Copyright 2000-2009 Kitware, Inc., Insight Software Consortium |
| |
| Distributed under the OSI-approved BSD License (the "License"); |
| see accompanying file Copyright.txt for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even the |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the License for more information. |
| ============================================================================*/ |
| #ifndef @KWSYS_NAMESPACE@_CPU_h |
| #define @KWSYS_NAMESPACE@_CPU_h |
| |
| #include <@KWSYS_NAMESPACE@/Configure.h> |
| |
| /* Identify possible endian cases. The macro |
| @KWSYS_NAMESPACE@_CPU_ENDIAN_ID will be defined to one of these, or |
| 0 if unknown. */ |
| #define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG 4321 |
| #define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE 1234 |
| |
| /* Apple always defines one of these. */ |
| #if defined(__LITTLE_ENDIAN__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| #elif defined(__BIG_ENDIAN__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* Alpha */ |
| #elif defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| |
| /* Arm */ |
| #elif defined(__arm__) |
| # if !defined(__ARMEB__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| # else |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| # endif |
| |
| /* Intel x86 */ |
| #elif defined(__i386) || defined(__i386__) || defined(_M_IX86) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| #elif defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| #elif defined(__MWERKS__) && defined(__INTEL__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| |
| /* Intel x86-64 */ |
| #elif defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| #elif defined(__amd64) || defined(__amd64__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| |
| /* Intel Architecture-64 (Itanium) */ |
| #elif defined(__ia64) || defined(__ia64__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| #elif defined(_IA64) || defined(__IA64__) || defined(_M_IA64) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| |
| /* PowerPC */ |
| #elif defined(__powerpc) || defined(__powerpc__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| #elif defined(__ppc) || defined(__ppc__) || defined(__POWERPC__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* SPARC */ |
| #elif defined(__sparc) || defined(__sparc__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* HP/PA RISC */ |
| #elif defined(__hppa) || defined(__hppa__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* Motorola 68k */ |
| #elif defined(__m68k__) || defined(M68000) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* MIPSel (MIPS little endian) */ |
| #elif defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| |
| /* MIPSeb (MIPS big endian) */ |
| #elif defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* MIPS (fallback, big endian) */ |
| #elif defined(__mips) || defined(__mips__) || defined(__MIPS__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* OpenRISC 1000 */ |
| #elif defined(__or1k__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* RS/6000 */ |
| #elif defined(__THW_RS600) || defined(_IBMR2) || defined(_POWER) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| #elif defined(_ARCH_PWR) || defined(_ARCH_PWR2) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* System/370 */ |
| #elif defined(__370__) || defined(__THW_370__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* System/390 */ |
| #elif defined(__s390__) || defined(__s390x__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* z/Architecture */ |
| #elif defined(__SYSC_ZARCH__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| |
| /* Aarch64 */ |
| #elif defined(__aarch64__) |
| # if !defined(__AARCH64EB__) |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| # else |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| # endif |
| |
| /* Unknown CPU */ |
| #else |
| # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID 0 |
| # if !defined(@KWSYS_NAMESPACE@_CPU_UNKNOWN_OKAY) |
| # error "The target CPU architecture is not known." |
| # endif |
| #endif |
| |
| /* If building a C or C++ file in kwsys itself, give the source file |
| access to the macros without a configured namespace. */ |
| #if defined(KWSYS_NAMESPACE) |
| # define KWSYS_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID |
| # define KWSYS_CPU_ENDIAN_ID_BIG @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG |
| # define KWSYS_CPU_ENDIAN_ID_LITTLE @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE |
| #endif |
| |
| #endif |