| /*========================================================================= |
| |
| Program: KWSys - Kitware System Library |
| Module: $RCSfile: CPU.h.in,v $ |
| |
| Copyright (c) Kitware, Inc., Insight Consortium. All rights reserved. |
| See Copyright.txt or http://www.kitware.com/Copyright.htm for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even |
| the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
| PURPOSE. See the above copyright notices 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 |
| |
| /* MIPS */ |
| #elif defined(__mips) || defined(__mips__) || defined(__MIPS__) |
| # 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 |
| |
| /* 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 |