You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.6 KiB
120 lines
4.6 KiB
/*=========================================================================
|
|
|
|
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
|