| PROGRAM CMakeFortranCompilerABI | |
| #if 0 | |
| ! Address Size | |
| #endif | |
| #if defined(_LP64) | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(_M_IA64) | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(_M_X64) | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(_M_AMD64) | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || \ | |
| defined(__amd64__) | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(__ppc64__) || defined(__powerpc64__) || defined(__PPC64__) | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(__sparcv9) || defined(__sparcv9__) || defined(__sparc64__) | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(_ILP32) | |
| PRINT *, 'INFO:sizeof_dptr[4]' | |
| #elif defined(_M_IX86) | |
| PRINT *, 'INFO:sizeof_dptr[4]' | |
| #elif defined(__i386) || defined(__i386__) | |
| PRINT *, 'INFO:sizeof_dptr[4]' | |
| #elif defined(__ppc__) || defined(__powerpc__) || defined(__PPC__) | |
| PRINT *, 'INFO:sizeof_dptr[4]' | |
| #elif defined(__sparc) || defined(__sparc__) | |
| PRINT *, 'INFO:sizeof_dptr[4]' | |
| #elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 8 | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 4 | |
| PRINT *, 'INFO:sizeof_dptr[4]' | |
| #elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ == 8 | |
| PRINT *, 'INFO:sizeof_dptr[8]' | |
| #elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ == 4 | |
| PRINT *, 'INFO:sizeof_dptr[4]' | |
| #endif | |
| #if 0 | |
| ! Application Binary Interface | |
| #endif | |
| #if defined(__ELF__) | |
| PRINT *, 'INFO:abi[ELF]' | |
| #endif | |
| #if 0 | |
| ! Sync with | |
| ! Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst | |
| ! Modules/CMakeCompilerABI.h | |
| ! Modules/CMakeFortranCompilerABI.F90 | |
| ! Modules/Internal/CMakeParseCompilerArchitectureId.cmake | |
| #endif | |
| #if defined(__APPLE__) && defined(__arm64__) | |
| # if defined(__ARM64_ARCH_8_32__) | |
| PRINT *, 'INFO:arch[arm64_32]' | |
| # elif defined(__arm64e__) | |
| PRINT *, 'INFO:arch[arm64e]' | |
| # else | |
| PRINT *, 'INFO:arch[arm64]' | |
| # endif | |
| #elif defined(_MSC_VER) && defined(_M_ARM64EC) | |
| PRINT *, 'INFO:arch[arm64ec]' | |
| #elif defined(_MSC_VER) && defined(_M_ARM64) | |
| PRINT *, 'INFO:arch[arm64]' | |
| #elif defined(__arm64ec__) | |
| PRINT *, 'INFO:arch[arm64ec]' | |
| #elif defined(__aarch64__) | |
| PRINT *, 'INFO:arch[aarch64]' | |
| #elif __ARM_ARCH == 7 || _M_ARM == 7 || defined(__ARM_ARCH_7__) | |
| # if defined(__APPLE__) && defined(__ARM_ARCH_7K__) | |
| PRINT *, 'INFO:arch[armv7k]' | |
| # elif defined(__APPLE__) && defined(__ARM_ARCH_7S__) | |
| PRINT *, 'INFO:arch[armv7s]' | |
| # else | |
| PRINT *, 'INFO:arch[armv7]' | |
| # endif | |
| #elif __ARM_ARCH == 6 || _M_ARM == 6 || defined(__ARM_ARCH_6__) | |
| PRINT *, 'INFO:arch[armv6]' | |
| #elif __ARM_ARCH == 5 || _M_ARM == 5 || defined(__ARM_ARCH_5__) | |
| PRINT *, 'INFO:arch[armv5]' | |
| #elif defined(__alpha) || defined(__alpha) || defined(_M_ALPHA) | |
| PRINT *, 'INFO:arch[alpha]' | |
| #elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || \ | |
| defined(__amd64__) || defined(_M_X64) || defined(_M_AMD64) | |
| PRINT *, 'INFO:arch[x86_64]' | |
| #elif defined(__i686) || defined(__i686__) || _M_IX86 == 600 | |
| PRINT *, 'INFO:arch[i686]' | |
| #elif defined(__i586) || defined(__i586__) || _M_IX86 == 500 | |
| PRINT *, 'INFO:arch[i586]' | |
| #elif defined(__i486) || defined(__i486__) || _M_IX86 == 400 | |
| PRINT *, 'INFO:arch[i486]' | |
| #elif defined(__i386) || defined(__i386__) || defined(_M_IX86) | |
| PRINT *, 'INFO:arch[i386]' | |
| #elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64) | |
| PRINT *, 'INFO:arch[ia64]' | |
| #elif defined(__loongarch64) | |
| PRINT *, 'INFO:arch[loongarch64]' | |
| #elif defined(__loongarch__) | |
| PRINT *, 'INFO:arch[loongarch32]' | |
| #elif defined(__m68k__) | |
| PRINT *, 'INFO:arch[m68k]' | |
| #elif defined(__mips64) || defined(__mips64__) | |
| # if defined(_MIPSEL) | |
| PRINT *, 'INFO:arch[mips64el]' | |
| # else | |
| PRINT *, 'INFO:arch[mips64]' | |
| # endif | |
| #elif defined(__mips) || defined(__mips__) | |
| # if defined(_MIPSEL) | |
| PRINT *, 'INFO:arch[mipsel]' | |
| # else | |
| PRINT *, 'INFO:arch[mips]' | |
| # endif | |
| #elif defined(__riscv) && __riscv_xlen == 64 | |
| PRINT *, 'INFO:arch[riscv64]' | |
| #elif defined(__riscv) && __riscv_xlen == 32 | |
| PRINT *, 'INFO:arch[riscv32]' | |
| #elif defined(__s390x__) | |
| PRINT *, 'INFO:arch[s390x]' | |
| #elif defined(__s390__) | |
| PRINT *, 'INFO:arch[s390]' | |
| #elif defined(__sparcv9) || defined(__sparcv9__) || defined(__sparc64__) | |
| PRINT *, 'INFO:arch[sparcv9]' | |
| #elif defined(__sparc) || defined(__sparc__) | |
| PRINT *, 'INFO:arch[sparc]' | |
| #elif defined(__sw_64) || defined(__sw_64__) | |
| PRINT *, 'INFO:arch[sw_64]' | |
| #elif defined(__hppa) || defined(__hppa__) | |
| # if defined(__LP64__) | |
| PRINT *, 'INFO:arch[parisc64]' | |
| # else | |
| PRINT *, 'INFO:arch[parisc]' | |
| # endif | |
| #elif defined(__ppc64__) || defined(__powerpc64__) || defined(__PPC64__) || \ | |
| defined(_ARCH_PPC64) | |
| # if defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) | |
| PRINT *, 'INFO:arch[ppc64le]' | |
| # else | |
| PRINT *, 'INFO:arch[ppc64]' | |
| # endif | |
| #elif defined(__ppc__) || defined(__powerpc__) || defined(__PPC__) || \ | |
| defined(_ARCH_PPC) | |
| # if defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) | |
| PRINT *, 'INFO:arch[ppcle]' | |
| # else | |
| PRINT *, 'INFO:arch[ppc]' | |
| # endif | |
| #elif defined(__wasm64) || defined(__wasm64__) | |
| PRINT *, 'INFO:arch[wasm64]' | |
| #elif defined(__wasm32) || defined(__wasm32__) | |
| PRINT *, 'INFO:arch[wasm32]' | |
| #endif | |
| PRINT *, 'ABI Detection' | |
| END |