CPU.h.in 4.6 KB

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