mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-11 03:50:43 -05:00
Merge topic 'intel-2021' into release-3.20
9c479c7c40IntelLLVM: Add special case for ifx 2021.1 version extractionb7193ab18fIntel: Update Classic compiler version detection for 2021 Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6052
This commit is contained in:
@@ -47,11 +47,7 @@ Compilers
|
||||
* The ``icx``/``icpx`` C/C++ compilers on Linux, and the ``icx``
|
||||
C/C++ compiler on Windows, are fully supported as of oneAPI 2021.1.
|
||||
|
||||
* The ``ifx`` Fortran compiler on Linux is partially supported.
|
||||
As of oneAPI 2021.1, ``ifx`` does not define several identification
|
||||
macros, so CMake identifies it as the classic ``Intel`` compiler.
|
||||
This works in many cases because ``ifx`` accepts the same command line
|
||||
parameters as ``ifort``. A future version of oneAPI may fix this.
|
||||
* The ``ifx`` Fortran compiler on Linux is supported as of oneAPI 2021.1.
|
||||
|
||||
* The ``ifx`` Fortran compiler on Windows is not yet supported.
|
||||
|
||||
@@ -351,3 +347,18 @@ Changes made since CMake 3.20.0 include the following.
|
||||
iOS, tvOS and watchOS should now default to ``@rpath`` instead of using
|
||||
a full absolute path and failing at runtime when the library or framework
|
||||
is embedded in an application bundle (see :prop_tgt:`XCODE_EMBED_<type>`).
|
||||
|
||||
3.20.2
|
||||
------
|
||||
|
||||
* The Intel Classic 2021 compiler version numbers are now detected correctly
|
||||
as having major version 2021. CMake 3.20.1 and below were not aware of a
|
||||
change to the identification macro version scheme made by Intel starting
|
||||
in version 2021, and detected the version as 20.2.
|
||||
|
||||
* The Intel oneAPI Fortran compiler is now identified as ``IntelLLVM``.
|
||||
The oneAPI 2021.1 Fortran compiler is missing an identification macro,
|
||||
so CMake 3.20.1 and below identified it as ``Intel``. CMake now has
|
||||
a special case to recognize oneAPI 2021.1 Fortran as ``IntelLLVM``.
|
||||
The oneAPI 2021.2 Fortran compiler defines the proper identification
|
||||
macro and so is identified as ``IntelLLVM`` by all CMake 3.20 versions.
|
||||
|
||||
@@ -36,14 +36,31 @@
|
||||
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
|
||||
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
|
||||
# endif
|
||||
#elif defined(__INTEL_COMPILER) && __INTEL_COMPILER == 201900
|
||||
PRINT *, 'INFO:compiler[IntelLLVM]'
|
||||
! ifx 2021.1 forgot to define __INTEL_LLVM_COMPILER.
|
||||
! Instead it defines __INTEL_COMPILER == 201900.
|
||||
# define COMPILER_VERSION_MAJOR DEC(2021)
|
||||
# define COMPILER_VERSION_MINOR DEC(1)
|
||||
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
|
||||
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
||||
#elif 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)
|
||||
! __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later.
|
||||
# if __INTEL_COMPILER < 2021
|
||||
# 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
|
||||
# else
|
||||
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
|
||||
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
|
||||
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
|
||||
! The third version component from --version is an update index,
|
||||
! but no macro is provided for it.
|
||||
# define COMPILER_VERSION_PATCH DEC(0)
|
||||
# endif
|
||||
# if defined(__INTEL_COMPILER_BUILD_DATE)
|
||||
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
||||
|
||||
@@ -2,16 +2,25 @@
|
||||
set(_compiler_id_pp_test "defined(__INTEL_COMPILER) || defined(__ICC)")
|
||||
|
||||
set(_compiler_id_version_compute "
|
||||
/* __INTEL_COMPILER = VRP */
|
||||
# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_COMPILER/100)
|
||||
# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_COMPILER/10 % 10)
|
||||
# if defined(__INTEL_COMPILER_UPDATE)
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER_UPDATE)
|
||||
/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
|
||||
except that a few beta releases use the old format with V=2021. */
|
||||
# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
|
||||
# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_COMPILER/100)
|
||||
# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_COMPILER/10 % 10)
|
||||
# if defined(__INTEL_COMPILER_UPDATE)
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER_UPDATE)
|
||||
# else
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER % 10)
|
||||
# endif
|
||||
# else
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER % 10)
|
||||
# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_COMPILER)
|
||||
# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_COMPILER_UPDATE)
|
||||
/* The third version component from --version is an update index,
|
||||
but no macro is provided for it. */
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(0)
|
||||
# endif
|
||||
# if defined(__INTEL_COMPILER_BUILD_DATE)
|
||||
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
||||
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
||||
# define @PREFIX@COMPILER_VERSION_TWEAK @MACRO_DEC@(__INTEL_COMPILER_BUILD_DATE)
|
||||
# endif
|
||||
# if defined(_MSC_VER)
|
||||
|
||||
Reference in New Issue
Block a user