mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-30 02:59:22 -05:00
13144e82cd
Previously were checking for the `__CRAYXC` and `__CRAYXE` predefined macros. These macros reflect the platform that the compiler wrapper is running on, i.e. Cray XC and Cray XE machines. They are not defined on other platforms such as Apollo80. Switch to the `__CRAYXT_COMPUTE_LINUX_TARGET` macro. The Cray cc/CC/ftn wrappers always define this macro on the command line. This macro has been in use for many years, and is believed to be a reliable way to detect current and older Cray compiler wrappers. Fixes: #21904
201 lines
7.3 KiB
Plaintext
201 lines
7.3 KiB
Plaintext
PROGRAM CMakeFortranCompilerId
|
|
#if 0
|
|
! Identify the compiler
|
|
#endif
|
|
#if defined(_MSC_VER)
|
|
PRINT *, 'INFO:simulate[MSVC]'
|
|
# if _MSC_VER >= 1900
|
|
PRINT *, 'INFO:simulate_version[019.00]'
|
|
# elif _MSC_VER >= 1800
|
|
PRINT *, 'INFO:simulate_version[018.00]'
|
|
# elif _MSC_VER >= 1700
|
|
PRINT *, 'INFO:simulate_version[017.00]'
|
|
# elif _MSC_VER >= 1600
|
|
PRINT *, 'INFO:simulate_version[016.00]'
|
|
# elif _MSC_VER >= 1500
|
|
PRINT *, 'INFO:simulate_version[015.00]'
|
|
# elif _MSC_VER >= 1400
|
|
PRINT *, 'INFO:simulate_version[014.00]'
|
|
# elif _MSC_VER >= 1310
|
|
PRINT *, 'INFO:simulate_version[013.01]'
|
|
# else
|
|
PRINT *, 'INFO:simulate_version[013.00]'
|
|
# endif
|
|
#endif
|
|
#if defined(__INTEL_COMPILER) || defined(__ICC)
|
|
PRINT *, 'INFO:compiler[Intel]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
|
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
|
|
# if defined(__INTEL_COMPILER_UPDATE)
|
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
|
|
# else
|
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
|
|
# endif
|
|
# if defined(__INTEL_COMPILER_BUILD_DATE)
|
|
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
|
# endif
|
|
#elif defined(__SUNPRO_F95)
|
|
PRINT *, 'INFO:compiler[SunPro]'
|
|
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_F95>>8)
|
|
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_F95>>4 & 0xF)
|
|
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_F95 & 0xF)
|
|
#elif defined(__SUNPRO_F90)
|
|
PRINT *, 'INFO:compiler[SunPro]'
|
|
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_F90>>8)
|
|
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_F90>>4 & 0xF)
|
|
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_F90 & 0xF)
|
|
#elif defined(_CRAYFTN)
|
|
PRINT *, 'INFO:compiler[Cray]'
|
|
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
|
|
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
|
|
#elif defined(__G95__)
|
|
PRINT *, 'INFO:compiler[G95]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__G95__)
|
|
# define COMPILER_VERSION_MINOR DEC(__G95_MINOR__)
|
|
#elif defined(__PATHSCALE__)
|
|
PRINT *, 'INFO:compiler[PathScale]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
|
|
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
|
|
# if defined(__PATHCC_PATCHLEVEL__)
|
|
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
|
|
# endif
|
|
#elif defined(__ABSOFT__)
|
|
PRINT *, 'INFO:compiler[Absoft]'
|
|
#elif defined(__GNUC__)
|
|
PRINT *, 'INFO:compiler[GNU]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
|
|
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
|
|
# if defined(__GNUC_PATCHLEVEL__)
|
|
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
|
# endif
|
|
#elif defined(__IBMC__)
|
|
# if defined(__COMPILER_VER__)
|
|
PRINT *, 'INFO:compiler[zOS]'
|
|
# elif __IBMC__ >= 800
|
|
PRINT *, 'INFO:compiler[XL]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
|
|
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
|
|
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
|
|
# else
|
|
PRINT *, 'INFO:compiler[VisualAge]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
|
|
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
|
|
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
|
|
# endif
|
|
#elif defined(__PGI)
|
|
PRINT *, 'INFO:compiler[PGI]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
|
|
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
|
|
# if defined(__PGIC_PATCHLEVEL__)
|
|
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
|
|
# endif
|
|
#elif defined(__FLANG)
|
|
PRINT *, 'INFO:compiler[Flang]'
|
|
# define COMPILER_VERSION_MAJOR DEC(__FLANG_MAJOR__)
|
|
# define COMPILER_VERSION_MINOR DEC(__FLANG_MINOR__)
|
|
# if defined(__FLANG_PATCHLEVEL__)
|
|
# define COMPILER_VERSION_PATCH DEC(__FLANG_PATCHLEVEL__)
|
|
# endif
|
|
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
|
|
PRINT *, 'INFO:compiler[VisualAge]'
|
|
#elif defined(__hpux) || defined(__hpux__)
|
|
PRINT *, 'INFO:compiler[HP]'
|
|
#elif defined(NAGFOR)
|
|
PRINT *, 'INFO:compiler[NAG]'
|
|
#define COMPILER_VERSION_MAJOR DEC(__NAG_COMPILER_RELEASE/10)
|
|
#define COMPILER_VERSION_MINOR DEC(__NAG_COMPILER_RELEASE % 10)
|
|
#define COMPILER_VERSION_PATCH DEC(__NAG_COMPILER_BUILD)
|
|
#else
|
|
PRINT *, 'INFO:compiler[]'
|
|
#endif
|
|
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
|
|
PRINT *, 'INFO:compiler_wrapper[CrayPrgEnv]'
|
|
#endif
|
|
|
|
#if 0
|
|
! Identify the platform
|
|
#endif
|
|
#if defined(__linux) || defined(__linux__) || defined(linux)
|
|
PRINT *, 'INFO:platform[Linux]'
|
|
#elif defined(__CYGWIN__)
|
|
PRINT *, 'INFO:platform[Cygwin]'
|
|
#elif defined(__MINGW32__)
|
|
PRINT *, 'INFO:platform[MinGW]'
|
|
#elif defined(__APPLE__)
|
|
PRINT *, 'INFO:platform[Darwin]'
|
|
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
|
PRINT *, 'INFO:platform[Windows]'
|
|
#elif defined(__FreeBSD__) || defined(__FreeBSD)
|
|
PRINT *, 'INFO:platform[FreeBSD]'
|
|
#elif defined(__NetBSD__) || defined(__NetBSD)
|
|
PRINT *, 'INFO:platform[NetBSD]'
|
|
#elif defined(__OpenBSD__) || defined(__OPENBSD)
|
|
PRINT *, 'INFO:platform[OpenBSD]'
|
|
#elif defined(__sun) || defined(sun)
|
|
PRINT *, 'INFO:platform[SunOS]'
|
|
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
|
|
PRINT *, 'INFO:platform[AIX]'
|
|
#elif defined(__hpux) || defined(__hpux__)
|
|
PRINT *, 'INFO:platform[HP-UX]'
|
|
#elif defined(__HAIKU__)
|
|
PRINT *, 'INFO:platform[Haiku]'
|
|
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
|
|
PRINT *, 'INFO:platform[BeOS]'
|
|
#elif defined(__QNX__) || defined(__QNXNTO__)
|
|
PRINT *, 'INFO:platform[QNX]'
|
|
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
|
|
PRINT *, 'INFO:platform[Tru64]'
|
|
#elif defined(__riscos) || defined(__riscos__)
|
|
PRINT *, 'INFO:platform[RISCos]'
|
|
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
|
|
PRINT *, 'INFO:platform[SINIX]'
|
|
#elif defined(__UNIX_SV__)
|
|
PRINT *, 'INFO:platform[UNIX_SV]'
|
|
#elif defined(__bsdos__)
|
|
PRINT *, 'INFO:platform[BSDOS]'
|
|
#elif defined(_MPRAS) || defined(MPRAS)
|
|
PRINT *, 'INFO:platform[MP-RAS]'
|
|
#elif defined(__osf) || defined(__osf__)
|
|
PRINT *, 'INFO:platform[OSF1]'
|
|
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
|
|
PRINT *, 'INFO:platform[SCO_SV]'
|
|
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
|
|
PRINT *, 'INFO:platform[ULTRIX]'
|
|
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
|
|
PRINT *, 'INFO:platform[Xenix]'
|
|
#else
|
|
PRINT *, 'INFO:platform[]'
|
|
#endif
|
|
#if defined(_WIN32) && (defined(__INTEL_COMPILER) || defined(__ICC))
|
|
# if defined(_M_IA64)
|
|
PRINT *, 'INFO:arch[IA64]'
|
|
# elif defined(_M_X64) || defined(_M_AMD64)
|
|
PRINT *, 'INFO:arch[x64]'
|
|
# elif defined(_M_IX86)
|
|
PRINT *, 'INFO:arch[X86]'
|
|
# endif
|
|
#endif
|
|
|
|
#if 0
|
|
! Encode compiler version digits
|
|
#endif
|
|
#define DEC_8(n) (((n) / 10000000) % 10)
|
|
#define DEC_7(n) (((n) / 1000000) % 10)
|
|
#define DEC_6(n) (((n) / 100000) % 10)
|
|
#define DEC_5(n) (((n) / 10000) % 10)
|
|
#define DEC_4(n) (((n) / 1000) % 10)
|
|
#define DEC_3(n) (((n) / 100) % 10)
|
|
#define DEC_2(n) (((n) / 10) % 10)
|
|
#define DEC_1(n) (((n) ) % 10)
|
|
#define HEX_8(n) ((n)>>28 & 0xF)
|
|
#define HEX_7(n) ((n)>>24 & 0xF)
|
|
#define HEX_6(n) ((n)>>20 & 0xF)
|
|
#define HEX_5(n) ((n)>>16 & 0xF)
|
|
#define HEX_4(n) ((n)>>12 & 0xF)
|
|
#define HEX_3(n) ((n)>>8 & 0xF)
|
|
#define HEX_2(n) ((n)>>4 & 0xF)
|
|
#define HEX_1(n) ((n) & 0xF)
|
|
@CMAKE_Fortran_COMPILER_ID_VERSION_INFO@
|
|
|
|
END
|