1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-05-08 14:29:03 +08:00

Merge topic 'compiler-architecture-id'

7f0f382c55 Provide CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID on more compilers
019f0f8b32 ARCHITECTURE_ID: Save persistently even if empty
8e46672b29 Fortran: Detect pointer size on sparc architectures
eddf66eaef CMakeDetermineASMCompiler: De-duplicate list of compiler info variables
c0224f5aa1 CMakeDetermineCompilerABI: Make ABI info string more robust
67ab580804 Windows/Clang: Fix indentation in platform information module
1c9f8eeb4f Help: Document CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !10516
This commit is contained in:
Brad King 2025-03-27 13:21:34 +00:00 committed by Kitware Robot
commit f403e570eb
47 changed files with 810 additions and 90 deletions

View File

@ -72,6 +72,7 @@ Variables that Provide Information
/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER
/variable/CMAKE_JOB_POOLS
/variable/CMAKE_LANG_COMPILER_AR
/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID
/variable/CMAKE_LANG_COMPILER_FRONTEND_VARIANT
/variable/CMAKE_LANG_COMPILER_LINKER
/variable/CMAKE_LANG_COMPILER_LINKER_FRONTEND_VARIANT
@ -814,7 +815,6 @@ are subject to change, and not recommended for use in project code.
/variable/CMAKE_HOME_DIRECTORY
/variable/CMAKE_INTERNAL_PLATFORM_ABI
/variable/CMAKE_LANG_COMPILER_ABI
/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID
/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL
/variable/CMAKE_LANG_LINKER_PREFERENCE
/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES

View File

@ -0,0 +1,5 @@
compiler-architecture-id
------------------------
* The :variable:`CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID` variable is now
populated for most compilers, and documented for public use.

View File

@ -3,8 +3,304 @@ CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
.. versionadded:: 3.10
An internal variable subject to change.
:ref:`List <CMake Language Lists>` of identifiers indicating the
target architecture(s) of the compiler for language ``<LANG>``.
This is used to identify the variant of a compiler based on its target
architecture. For some compilers this is needed to determine the correct
usage.
Typically the list has one entry unless :variable:`CMAKE_OSX_ARCHITECTURES`
lists multiple architectures.
Possible values for each platform are documented in the following sections.
.. Sync with:
Modules/CMakeCompilerABI.h
Modules/CMakeFortranCompilerABI.F
Modules/CMakeFortranCompilerABI.F90
Modules/Internal/CMakeParseCompilerArchitectureId.cmake
Apple Platforms
^^^^^^^^^^^^^^^
.. versionadded:: 4.1
These identifiers are used when the :variable:`CMAKE_<LANG>_COMPILER`
targets an Apple platform (``__APPLE__`` is defined).
``arm64``
ARM 64-bit
``arm64e``
ARM 64-bit with Pointer Authentication (PACs)
``arm64_32``
ARM 64-bit with 32-bit pointers (watchOS)
``armv5``, ``armv6``, ``armv7``, ``armv7k``, ``armv7s``
ARM 32-bit
``i386``, ``i486``, ``i586``, ``i686``
Intel 32-bit
``ppc``
PowerPC 32-bit
``x86_64``
Intel 64-bit
UNIX Platforms
^^^^^^^^^^^^^^
.. versionadded:: 4.1
These identifiers are used when the :variable:`CMAKE_<LANG>_COMPILER`
targets a UNIX platform.
``aarch64``
ARM 64-bit
``alpha``
DEC Alpha
``armv5``, ``armv6``, ``armv7``
ARM 32-bit
``i386``, ``i486``, ``i586``, ``i686``
Intel 32-bit
``ia64``
Itanium 64-bit
``loongarch32``
LoongArch 32-bit
``loongarch64``
LoongArch 64-bit
``m68k``
Motorola 68000
``mips``
MIPS 32-bit big-endian
``mipsel``
MIPS 32-bit little-endian
``mips64``
MIPS 64-bit big-endian
``mips64el``
MIPS 64-bit little-endian
``parisc``
PA-RISC 32-bit
``parisc64``
PA-RISC 64-bit
``ppc``
PowerPC 32-bit big-endian
``ppcle``
PowerPC 32-bit little-endian
``ppc64``
PowerPC 64-bit big-endian
``ppc64le``
PowerPC 64-bit little-endian
``riscv32``
RISC-V 32-bit
``riscv64``
RISC-V 64-bit
``s390``, ``s390x``
IBM Z
``sparc``
SPARC 32-bit
``sparcv9``
SPARC 64-bit
``x86_64``
Intel 64-bit
Windows Platforms with GNU ABI (MinGW)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 4.1
These identifiers are used when the :variable:`CMAKE_<LANG>_COMPILER`
targets Windows with a GNU ABI (``_WIN32`` and ``__MINGW32__`` are defined).
``aarch64``
ARM 64-bit
``armv7``
ARM 32-bit
``i386``, ``i486``, ``i586``, ``i686``
Intel 32-bit
``x86_64``
Intel 64-bit
Windows Platforms with MSVC ABI
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 3.10
These identifiers are used when the :variable:`CMAKE_<LANG>_COMPILER`
targets Windows with a MSVC ABI (``_WIN32`` and ``_MSC_VER`` are defined).
``ARM64``
ARM 64-bit
``ARM64EC``
ARM 64-bit Emulation-Compatible
``ARMV4I``, ``ARMV5I``, ``ARMV7``
ARM 32-bit
``IA64``
Itanium 64-bit
``MIPS``
MIPS
``SHx``, ``SH3``, ``SH3DSP``, ``SH4``, ``SH5``
SuperH
``x64``
Intel 64-bit
``X86``
Intel 32-bit
Windows Platforms with Watcom ABI
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 3.10
These identifiers are used when :variable:`CMAKE_<LANG>_COMPILER_ID` is
``OpenWatcom`` or ``Watcom``.
``I86``
Intel 16-bit
``X86``
Intel 32-bit
Green Hills MULTI Platforms
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 3.14
These identifiers are used when :variable:`CMAKE_<LANG>_COMPILER_ID` is
``GHS``.
``ARM``
ARM 32-bit
``PPC``
PowerPC 32-bit
``PPC64``
PowerPC 64-bit
``x64``
Intel 64-bit
``X86``
Intel 32-bit
IAR Platforms
^^^^^^^^^^^^^
.. versionadded:: 3.10
These identifiers are used when :variable:`CMAKE_<LANG>_COMPILER_ID` is
``IAR``.
``8051``
..
``ARM``
..
``AVR``
..
``MSP430``
..
``RH850``
..
``RISCV``
..
``RL78``
..
``RX``
..
``STM8``
..
``V850``
..
TASKING Platforms
^^^^^^^^^^^^^^^^^
.. versionadded:: 3.25
These identifiers are used when :variable:`CMAKE_<LANG>_COMPILER_ID` is
``Tasking``.
``8051``
..
``ARC``
..
``ARM``
..
``MCS``
..
``PCP``
..
``TriCore``
..
Texas Instruments Platforms
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 3.19
These identifiers are used when :variable:`CMAKE_<LANG>_COMPILER_ID` is
``TI``.
``ARM``
..
``Blackfin``
..
``MSP430``
..
``SHARC``
..
``TMS320C28x``
..
``TMS320C6x``
..

View File

@ -18,7 +18,7 @@ set(CMAKE_ASM@ASM_DIALECT@_COMPILER_ID "@_CMAKE_ASM_COMPILER_ID@")
set(CMAKE_ASM@ASM_DIALECT@_COMPILER_VERSION "@_CMAKE_ASM_COMPILER_VERSION@")
set(CMAKE_ASM@ASM_DIALECT@_COMPILER_ENV_VAR "@_CMAKE_ASM_COMPILER_ENV_VAR@")
@_SET_CMAKE_ASM_COMPILER_ID_VENDOR_MATCH@
@_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID@
set(CMAKE_ASM@ASM_DIALECT@_ARCHITECTURE_ID "@_CMAKE_ASM_ARCHITECTURE_ID@")
@_SET_CMAKE_ASM_COMPILER_SYSROOT@
set(CMAKE_ASM@ASM_DIALECT@_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)

View File

@ -18,7 +18,7 @@ set(CMAKE_C_PLATFORM_ID "@CMAKE_C_PLATFORM_ID@")
set(CMAKE_C_SIMULATE_ID "@CMAKE_C_SIMULATE_ID@")
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "@CMAKE_C_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_C_SIMULATE_VERSION "@CMAKE_C_SIMULATE_VERSION@")
@_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID@
set(CMAKE_C_COMPILER_ARCHITECTURE_ID "@CMAKE_C_COMPILER_ARCHITECTURE_ID@")
@_SET_CMAKE_C_COMPILER_SYSROOT@
@SET_MSVC_C_ARCHITECTURE_ID@
@SET_CMAKE_XCODE_ARCHS@

View File

@ -22,6 +22,9 @@ int main(int argc, char* argv[])
require += info_byte_order_little_endian[argc];
#if defined(ABI_ID)
require += info_abi[argc];
#endif
#if defined(ARCHITECTURE_ID)
require += info_arch[argc];
#endif
(void)argv;
return require;

View File

@ -23,6 +23,7 @@ set(CMAKE_CUDA_PLATFORM_ID "@CMAKE_CUDA_PLATFORM_ID@")
set(CMAKE_CUDA_SIMULATE_ID "@CMAKE_CUDA_SIMULATE_ID@")
set(CMAKE_CUDA_COMPILER_FRONTEND_VARIANT "@CMAKE_CUDA_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_CUDA_SIMULATE_VERSION "@CMAKE_CUDA_SIMULATE_VERSION@")
set(CMAKE_CUDA_COMPILER_ARCHITECTURE_ID "@CMAKE_CUDA_COMPILER_ARCHITECTURE_ID@")
@SET_MSVC_CUDA_ARCHITECTURE_ID@
@_SET_CMAKE_CUDA_COMPILER_SYSROOT@

View File

@ -13,6 +13,9 @@ int main(int argc, char* argv[])
require += info_byte_order_little_endian[argc];
#if defined(ABI_ID)
require += info_abi[argc];
#endif
#if defined(ARCHITECTURE_ID)
require += info_arch[argc];
#endif
static_cast<void>(argv);

View File

@ -20,7 +20,7 @@ set(CMAKE_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "@CMAKE_CXX_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_CXX_SIMULATE_VERSION "@CMAKE_CXX_SIMULATE_VERSION@")
@_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID@
set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID "@CMAKE_CXX_COMPILER_ARCHITECTURE_ID@")
@_SET_CMAKE_CXX_COMPILER_SYSROOT@
@SET_MSVC_CXX_ARCHITECTURE_ID@
@SET_CMAKE_XCODE_ARCHS@

View File

@ -12,6 +12,9 @@ int main(int argc, char* argv[])
require += info_byte_order_little_endian[argc];
#if defined(ABI_ID)
require += info_abi[argc];
#endif
#if defined(ARCHITECTURE_ID)
require += info_arch[argc];
#endif
(void)argv;
return require;

View File

@ -40,6 +40,121 @@ static unsigned short const info_byte_order_little_endian[] = {
# define ABI_ID "ELF"
#endif
#if defined(ABI_ID)
static char const info_abi[] = "INFO:abi[" ABI_ID "]";
/* Sync with:
* Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
* Modules/CMakeFortranCompilerABI.F
* Modules/CMakeFortranCompilerABI.F90
* Modules/Internal/CMakeParseCompilerArchitectureId.cmake
*/
#if defined(__APPLE__) && defined(__arm64__)
# if defined(__ARM64_ARCH_8_32__)
# define ARCHITECTURE_ID "arm64_32"
# elif defined(__arm64e__)
# define ARCHITECTURE_ID "arm64e"
# else
# define ARCHITECTURE_ID "arm64"
# endif
#elif defined(_MSC_VER) && defined(_M_ARM64EC)
# define ARCHITECTURE_ID "arm64ec"
#elif defined(_MSC_VER) && defined(_M_ARM64)
# define ARCHITECTURE_ID "arm64"
#elif defined(__arm64ec__)
# define ARCHITECTURE_ID "arm64ec"
#elif defined(__aarch64__)
# define ARCHITECTURE_ID "aarch64"
#elif __ARM_ARCH == 7 || _M_ARM == 7 || defined(__ARM_ARCH_7__) || \
defined(__TI_ARM_V7__)
# if defined(__APPLE__) && defined(__ARM_ARCH_7K__)
# define ARCHITECTURE_ID "armv7k"
# elif defined(__APPLE__) && defined(__ARM_ARCH_7S__)
# define ARCHITECTURE_ID "armv7s"
# else
# define ARCHITECTURE_ID "armv7"
# endif
#elif __ARM_ARCH == 6 || _M_ARM == 6 || defined(__ARM_ARCH_6__) || \
defined(__TI_ARM_V6__)
# define ARCHITECTURE_ID "armv6"
#elif __ARM_ARCH == 5 || _M_ARM == 5 || defined(__ARM_ARCH_5__) || \
defined(__TI_ARM_V5__)
# define ARCHITECTURE_ID "armv5"
#elif defined(__alpha) || defined(__alpha) || defined(_M_ALPHA)
# define ARCHITECTURE_ID "alpha"
#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || \
defined(__amd64__) || defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x86_64"
#elif defined(__i686) || defined(__i686__) || _M_IX86 == 600
# define ARCHITECTURE_ID "i686"
#elif defined(__i586) || defined(__i586__) || _M_IX86 == 500
# define ARCHITECTURE_ID "i586"
#elif defined(__i486) || defined(__i486__) || _M_IX86 == 400
# define ARCHITECTURE_ID "i486"
#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
# define ARCHITECTURE_ID "i386"
#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
# define ARCHITECTURE_ID "ia64"
#elif defined(__loongarch64)
# define ARCHITECTURE_ID "loongarch64"
#elif defined(__loongarch__)
# define ARCHITECTURE_ID "loongarch32"
#elif defined(__m68k__)
# define ARCHITECTURE_ID "m68k"
#elif defined(__mips64) || defined(__mips64__)
# if defined(_MIPSEL)
# define ARCHITECTURE_ID "mips64el"
# else
# define ARCHITECTURE_ID "mips64"
# endif
#elif defined(__mips) || defined(__mips__)
# if defined(_MIPSEL)
# define ARCHITECTURE_ID "mipsel"
# else
# define ARCHITECTURE_ID "mips"
# endif
#elif defined(__riscv) && __riscv_xlen == 64
# define ARCHITECTURE_ID "riscv64"
#elif defined(__riscv) && __riscv_xlen == 32
# define ARCHITECTURE_ID "riscv32"
#elif defined(__s390x__)
# define ARCHITECTURE_ID "s390x"
#elif defined(__s390__)
# define ARCHITECTURE_ID "s390"
#elif defined(__sparcv9) || defined(__sparcv9__) || defined(__sparc64__)
# define ARCHITECTURE_ID "sparcv9"
#elif defined(__sparc) || defined(__sparc__)
# define ARCHITECTURE_ID "sparc"
#elif defined(__hppa) || defined(__hppa__)
# if defined(__LP64__)
# define ARCHITECTURE_ID "parisc64"
# else
# define ARCHITECTURE_ID "parisc"
# endif
#elif defined(__ppc64__) || defined(__powerpc64__) || defined(__PPC64__) || \
defined(_ARCH_PPC64)
# if defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__)
# define ARCHITECTURE_ID "ppc64le"
# else
# define ARCHITECTURE_ID "ppc64"
# endif
#elif defined(__ppc__) || defined(__powerpc__) || defined(__PPC__) || \
defined(_ARCH_PPC)
# if defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__)
# define ARCHITECTURE_ID "ppcle"
# else
# define ARCHITECTURE_ID "ppc"
# endif
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
#if defined(ABI_ID)
static char const* info_abi = "INFO"
":"
"abi[" ABI_ID "]";
#endif
#if defined(ARCHITECTURE_ID)
static char const* info_arch = "INFO"
":"
"arch[" ARCHITECTURE_ID "]";
#endif

View File

@ -238,18 +238,6 @@ else()
message(STATUS "Didn't find assembler")
endif()
foreach(_var
COMPILER
COMPILER_ID
COMPILER_ARG1
COMPILER_ENV_VAR
COMPILER_AR
COMPILER_RANLIB
COMPILER_VERSION
)
set(_CMAKE_ASM_${_var} "${CMAKE_ASM${ASM_DIALECT}_${_var}}")
endforeach()
if(CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT)
string(CONCAT _SET_CMAKE_ASM_COMPILER_SYSROOT
"set(CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT \"${CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT}\")\n"
@ -265,25 +253,21 @@ else()
set(_SET_CMAKE_ASM_COMPILER_ID_VENDOR_MATCH "")
endif()
if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID)
set(_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID
"set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID})")
else()
set(_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID "")
endif()
# configure variables set in this file for fast reload later on
configure_file(${CMAKE_ROOT}/Modules/CMakeASMCompiler.cmake.in
${CMAKE_PLATFORM_INFO_DIR}/CMakeASM${ASM_DIALECT}Compiler.cmake @ONLY)
foreach(_var
COMPILER
COMPILER_ID
COMPILER_ARG1
COMPILER_ENV_VAR
COMPILER_AR
COMPILER_RANLIB
COMPILER_VERSION
)
unset(_CMAKE_ASM_${_var})
endforeach()
block()
foreach(_var IN ITEMS
# Keep in sync with Internal/CMakeTestASMLinker.
COMPILER
COMPILER_ID
COMPILER_ARG1
COMPILER_ENV_VAR
COMPILER_AR
COMPILER_RANLIB
COMPILER_VERSION
COMPILER_ARCHITECTURE_ID
)
set(_CMAKE_ASM_${_var} "${CMAKE_ASM${ASM_DIALECT}_${_var}}")
endforeach()
configure_file(${CMAKE_ROOT}/Modules/CMakeASMCompiler.cmake.in
${CMAKE_PLATFORM_INFO_DIR}/CMakeASM${ASM_DIALECT}Compiler.cmake @ONLY)
endblock()

View File

@ -210,13 +210,6 @@ else()
set(_SET_CMAKE_C_COMPILER_SYSROOT "")
endif()
if(CMAKE_C_COMPILER_ARCHITECTURE_ID)
set(_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID
"set(CMAKE_C_COMPILER_ARCHITECTURE_ID ${CMAKE_C_COMPILER_ARCHITECTURE_ID})")
else()
set(_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID "")
endif()
if(MSVC_C_ARCHITECTURE_ID)
set(SET_MSVC_C_ARCHITECTURE_ID
"set(MSVC_C_ARCHITECTURE_ID ${MSVC_C_ARCHITECTURE_ID})")

View File

@ -216,13 +216,6 @@ else()
set(_SET_CMAKE_CXX_COMPILER_SYSROOT "")
endif()
if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID)
set(_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID
"set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})")
else()
set(_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID "")
endif()
if(MSVC_CXX_ARCHITECTURE_ID)
set(SET_MSVC_CXX_ARCHITECTURE_ID
"set(MSVC_CXX_ARCHITECTURE_ID ${MSVC_CXX_ARCHITECTURE_ID})")

View File

@ -150,6 +150,7 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
set(ABI_SIZEOF_DPTR "NOTFOUND")
set(ABI_BYTE_ORDER "NOTFOUND")
set(ABI_NAME "NOTFOUND")
set(ARCHITECTURE_ID "")
foreach(info ${ABI_STRINGS})
if("${info}" MATCHES "INFO:sizeof_dptr\\[0*([^]]*)\\]" AND NOT ABI_SIZEOF_DPTR)
set(ABI_SIZEOF_DPTR "${CMAKE_MATCH_1}")
@ -167,6 +168,9 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
if("${info}" MATCHES "INFO:abi\\[([^]]*)\\]" AND NOT ABI_NAME)
set(ABI_NAME "${CMAKE_MATCH_1}")
endif()
if("${info}" MATCHES "INFO:arch\\[([^]\"]*)\\]")
list(APPEND ARCHITECTURE_ID "${CMAKE_MATCH_1}")
endif()
endforeach()
if(ABI_SIZEOF_DPTR)
@ -183,6 +187,28 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
set(CMAKE_${lang}_COMPILER_ABI "${ABI_NAME}" PARENT_SCOPE)
endif()
# The GNU Fortran compiler does not predefine architecture macros.
if(NOT CMAKE_${lang}_COMPILER_ARCHITECTURE_ID AND NOT ARCHITECTURE_ID
AND lang STREQUAL "Fortran" AND CMAKE_${lang}_COMPILER_ID STREQUAL "GNU")
execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -dumpmachine
OUTPUT_VARIABLE _dumpmachine_triple OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_VARIABLE _dumpmachine_stderr
RESULT_VARIABLE _dumpmachine_result
)
if(_dumpmachine_result EQUAL 0)
include(Internal/CMakeParseCompilerArchitectureId)
cmake_parse_compiler_architecture_id("${_dumpmachine_triple}" ARCHITECTURE_ID)
endif()
endif()
# For some compilers we detect the architecture id during compiler identification.
# If this was not one of those, use what was detected during compiler ABI detection,
# which might be a list, e.g., when CMAKE_OSX_ARCHITECTURES has multiple values.
if(NOT CMAKE_${lang}_COMPILER_ARCHITECTURE_ID AND ARCHITECTURE_ID)
list(SORT ARCHITECTURE_ID)
set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${ARCHITECTURE_ID}" PARENT_SCOPE)
endif()
# Parse implicit include directory for this language, if available.
if(CMAKE_${lang}_VERBOSE_FLAG)
set (implicit_incdirs "")

View File

@ -327,13 +327,6 @@ else()
set(_SET_CMAKE_Fortran_COMPILER_SYSROOT "")
endif()
if(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID)
set(_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID
"set(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID ${CMAKE_Fortran_COMPILER_ARCHITECTURE_ID})")
else()
set(_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID "")
endif()
if(MSVC_Fortran_ARCHITECTURE_ID)
set(SET_MSVC_Fortran_ARCHITECTURE_ID
"set(MSVC_Fortran_ARCHITECTURE_ID ${MSVC_Fortran_ARCHITECTURE_ID})")

View File

@ -268,13 +268,6 @@ else()
set(_SET_CMAKE_HIP_COMPILER_SYSROOT "")
endif()
if(CMAKE_HIP_COMPILER_ARCHITECTURE_ID)
set(_SET_CMAKE_HIP_COMPILER_ARCHITECTURE_ID
"set(CMAKE_HIP_COMPILER_ARCHITECTURE_ID ${CMAKE_HIP_COMPILER_ARCHITECTURE_ID})")
else()
set(_SET_CMAKE_HIP_COMPILER_ARCHITECTURE_ID "")
endif()
if(MSVC_HIP_ARCHITECTURE_ID)
set(SET_MSVC_HIP_ARCHITECTURE_ID
"set(MSVC_HIP_ARCHITECTURE_ID ${MSVC_HIP_ARCHITECTURE_ID})")

View File

@ -169,13 +169,6 @@ include(CMakeFindBinUtils)
include(Compiler/${CMAKE_OBJC_COMPILER_ID}-FindBinUtils OPTIONAL)
unset(_CMAKE_PROCESSING_LANGUAGE)
if(CMAKE_OBJC_COMPILER_ARCHITECTURE_ID)
set(_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID
"set(CMAKE_OBJC_COMPILER_ARCHITECTURE_ID ${CMAKE_OBJC_COMPILER_ARCHITECTURE_ID})")
else()
set(_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID "")
endif()
if(CMAKE_OBJC_XCODE_ARCHS)
set(SET_CMAKE_XCODE_ARCHS
"set(CMAKE_XCODE_ARCHS \"${CMAKE_OBJC_XCODE_ARCHS}\")")

View File

@ -176,13 +176,6 @@ include(CMakeFindBinUtils)
include(Compiler/${CMAKE_OBJCXX_COMPILER_ID}-FindBinUtils OPTIONAL)
unset(_CMAKE_PROCESSING_LANGUAGE)
if(CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID)
set(_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID
"set(CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID ${CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID})")
else()
set(_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID "")
endif()
if(CMAKE_OBJCXX_XCODE_ARCHS)
set(SET_CMAKE_XCODE_ARCHS
"set(CMAKE_XCODE_ARCHS \"${CMAKE_OBJCXX_XCODE_ARCHS}\")")

View File

@ -8,7 +8,7 @@ set(CMAKE_Fortran_SIMULATE_ID "@CMAKE_Fortran_SIMULATE_ID@")
set(CMAKE_Fortran_COMPILER_FRONTEND_VARIANT "@CMAKE_Fortran_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_Fortran_SIMULATE_VERSION "@CMAKE_Fortran_SIMULATE_VERSION@")
@_SET_CMAKE_Fortran_XL_CPP@
@_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID@
set(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID "@CMAKE_Fortran_COMPILER_ARCHITECTURE_ID@")
@_SET_CMAKE_Fortran_COMPILER_SYSROOT@
@SET_MSVC_Fortran_ARCHITECTURE_ID@
set(CMAKE_AR "@CMAKE_AR@")

View File

@ -12,6 +12,8 @@
PRINT *, 'INFO:sizeof_dptr[8]'
#elif defined(__x86_64__)
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]'
@ -19,6 +21,8 @@
PRINT *, 'INFO:sizeof_dptr[4]'
#elif defined(__i386__)
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]'
@ -36,5 +40,108 @@
#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(__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
#endif
PRINT *, 'ABI Detection'
END

View File

@ -20,6 +20,8 @@ PRINT *, 'INFO:sizeof_dptr[8]'
PRINT *, 'INFO:sizeof_dptr[8]'
#elif defined(__x86_64__)
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]'
@ -27,6 +29,8 @@ PRINT *, 'INFO:sizeof_dptr[4]'
PRINT *, 'INFO:sizeof_dptr[4]'
#elif defined(__i386__)
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]'
@ -44,5 +48,108 @@ PRINT *, 'INFO:sizeof_dptr[4]'
#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.F
! 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(__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
#endif
PRINT *, 'ABI Detection'
end program

View File

@ -21,6 +21,7 @@ set(CMAKE_HIP_PLATFORM_ID "@CMAKE_HIP_PLATFORM_ID@")
set(CMAKE_HIP_SIMULATE_ID "@CMAKE_HIP_SIMULATE_ID@")
set(CMAKE_HIP_COMPILER_FRONTEND_VARIANT "@CMAKE_HIP_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_HIP_SIMULATE_VERSION "@CMAKE_HIP_SIMULATE_VERSION@")
set(CMAKE_HIP_COMPILER_ARCHITECTURE_ID "@CMAKE_HIP_COMPILER_ARCHITECTURE_ID@")
@SET_MSVC_HIP_ARCHITECTURE_ID@
@_SET_CMAKE_HIP_COMPILER_SYSROOT@
set(CMAKE_HIP_COMPILER_ROCM_ROOT "@CMAKE_HIP_COMPILER_ROCM_ROOT@")

View File

@ -14,6 +14,9 @@ int main(int argc, char* argv[])
require += info_sizeof_dptr[argc];
#if defined(ABI_ID)
require += info_abi[argc];
#endif
#if defined(ARCHITECTURE_ID)
require += info_arch[argc];
#endif
static_cast<void>(argv);

View File

@ -18,7 +18,7 @@ set(CMAKE_OBJC_PLATFORM_ID "@CMAKE_OBJC_PLATFORM_ID@")
set(CMAKE_OBJC_SIMULATE_ID "@CMAKE_OBJC_SIMULATE_ID@")
set(CMAKE_OBJC_COMPILER_FRONTEND_VARIANT "@CMAKE_OBJC_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_OBJC_SIMULATE_VERSION "@CMAKE_OBJC_SIMULATE_VERSION@")
@_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID@
set(CMAKE_OBJC_COMPILER_ARCHITECTURE_ID "@CMAKE_OBJC_COMPILER_ARCHITECTURE_ID@")
@SET_CMAKE_XCODE_ARCHS@
set(CMAKE_AR "@CMAKE_AR@")
set(CMAKE_OBJC_COMPILER_AR "@CMAKE_OBJC_COMPILER_AR@")

View File

@ -16,6 +16,9 @@ int main(int argc, char *argv[])
require += info_byte_order_little_endian[argc];
#if defined(ABI_ID)
require += info_abi[argc];
#endif
#if defined(ARCHITECTURE_ID)
require += info_arch[argc];
#endif
(void)argv;
return require;

View File

@ -19,7 +19,7 @@ set(CMAKE_OBJCXX_PLATFORM_ID "@CMAKE_OBJCXX_PLATFORM_ID@")
set(CMAKE_OBJCXX_SIMULATE_ID "@CMAKE_OBJCXX_SIMULATE_ID@")
set(CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT "@CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT@")
set(CMAKE_OBJCXX_SIMULATE_VERSION "@CMAKE_OBJCXX_SIMULATE_VERSION@")
@_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID@
set(CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID "@CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID@")
@SET_CMAKE_XCODE_ARCHS@
set(CMAKE_AR "@CMAKE_AR@")
set(CMAKE_OBJCXX_COMPILER_AR "@CMAKE_OBJCXX_COMPILER_AR@")

View File

@ -16,6 +16,9 @@ int main(int argc, char *argv[])
require += info_byte_order_little_endian[argc];
#if defined(ABI_ID)
require += info_abi[argc];
#endif
#if defined(ARCHITECTURE_ID)
require += info_arch[argc];
#endif
(void)argv;
return require;

View File

@ -4,6 +4,8 @@
# Re-configure to save learned information.
block()
foreach(_var IN ITEMS
# Compiler information.
# Keep in sync with CMakeDetermineASMCompiler.
COMPILER
COMPILER_ID
COMPILER_ARG1
@ -11,6 +13,8 @@ block()
COMPILER_AR
COMPILER_RANLIB
COMPILER_VERSION
COMPILER_ARCHITECTURE_ID
# Linker information.
COMPILER_LINKER
COMPILER_LINKER_ID
COMPILER_LINKER_VERSION

View File

@ -0,0 +1,74 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
function(cmake_parse_compiler_architecture_id triple arch_id_var)
# Sync with:
# Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
# Modules/CMakeCompilerABI.h
# Modules/CMakeFortranCompilerABI.F
# Modules/CMakeFortranCompilerABI.F90
if(_dumpmachine_triple MATCHES "^(aarch64|arm64)-apple-")
set(ARCHITECTURE_ID "arm64")
elseif(_dumpmachine_triple MATCHES "^(aarch64|arm64)_32-apple-")
set(ARCHITECTURE_ID "arm64_32")
elseif(_dumpmachine_triple MATCHES "^(aarch64|arm64)e-apple-")
set(ARCHITECTURE_ID "arm64e")
elseif(_dumpmachine_triple MATCHES "^(armv7k|armv7s)-apple-")
set(ARCHITECTURE_ID "${CMAKE_MATCH_1}")
elseif(_dumpmachine_triple MATCHES "^(aarch64|arm64)-")
set(ARCHITECTURE_ID "aarch64")
elseif(_dumpmachine_triple MATCHES "^(armv[5-7])[^-]*-")
set(ARCHITECTURE_ID "${CMAKE_MATCH_1}")
elseif(_dumpmachine_triple MATCHES "^alpha[^-]*-")
set(ARCHITECTURE_ID "alpha")
elseif(_dumpmachine_triple MATCHES "^(x86_64|amd64)-")
set(ARCHITECTURE_ID "x86_64")
elseif(_dumpmachine_triple MATCHES "^(i[3-6]86)-")
set(ARCHITECTURE_ID "${CMAKE_MATCH_1}")
elseif(_dumpmachine_triple MATCHES "^ia64-")
set(ARCHITECTURE_ID "ia64")
elseif(_dumpmachine_triple MATCHES "^loongarch64-")
set(ARCHITECTURE_ID "loongarch64")
elseif(_dumpmachine_triple MATCHES "^loongarch(32)?-")
set(ARCHITECTURE_ID "loongarch32")
elseif(_dumpmachine_triple MATCHES "^m68k-")
set(ARCHITECTURE_ID "m68k")
elseif(_dumpmachine_triple MATCHES "^mingw32$") # MinGW/MSYS 1.0: http://mingw.osdn.io/
set(ARCHITECTURE_ID "i386")
elseif(_dumpmachine_triple MATCHES "^mips[^-]*64[^-]*el-")
set(ARCHITECTURE_ID "mips64el")
elseif(_dumpmachine_triple MATCHES "^mips[^-]*64[^-]*-")
set(ARCHITECTURE_ID "mips64")
elseif(_dumpmachine_triple MATCHES "^mips[^-]*el[^-]*-")
set(ARCHITECTURE_ID "mipsel")
elseif(_dumpmachine_triple MATCHES "^mips[^-]*-")
set(ARCHITECTURE_ID "mips")
elseif(_dumpmachine_triple MATCHES "^riscv64-")
set(ARCHITECTURE_ID "riscv64")
elseif(_dumpmachine_triple MATCHES "^riscv32-")
set(ARCHITECTURE_ID "riscv32")
elseif(_dumpmachine_triple MATCHES "^s390x-")
set(ARCHITECTURE_ID "s390x")
elseif(_dumpmachine_triple MATCHES "^s390-")
set(ARCHITECTURE_ID "s390")
elseif(_dumpmachine_triple MATCHES "^(sparcv9|sparc64)-")
set(ARCHITECTURE_ID "sparcv9")
elseif(_dumpmachine_triple MATCHES "^sparc-")
set(ARCHITECTURE_ID "sparc")
elseif(_dumpmachine_triple MATCHES "^(hppa64|parisc64)-")
set(ARCHITECTURE_ID "parisc64")
elseif(_dumpmachine_triple MATCHES "^(hppa[0-9.]*|parisc)-")
set(ARCHITECTURE_ID "parisc")
elseif(_dumpmachine_triple MATCHES "^(powerpc64le|ppc64le)-")
set(ARCHITECTURE_ID "ppc64le")
elseif(_dumpmachine_triple MATCHES "^(powerpc64|ppc64)-")
set(ARCHITECTURE_ID "ppc64")
elseif(_dumpmachine_triple MATCHES "^(powerpcle|ppcle)-")
set(ARCHITECTURE_ID "ppcle")
elseif(_dumpmachine_triple MATCHES "^(powerpc|ppc)-")
set(ARCHITECTURE_ID "ppc")
else()
set(ARCHITECTURE_ID "")
endif()
set("${arch_id_var}" "${ARCHITECTURE_ID}" PARENT_SCOPE)
endfunction()

View File

@ -228,7 +228,7 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-imsvc")
set(CMAKE_${lang}_LINK_MODE LINKER)
endmacro()
endmacro()
else()
cmake_policy(GET CMP0091 __WINDOWS_CLANG_CMP0091)
if(__WINDOWS_CLANG_CMP0091 STREQUAL "NEW")

View File

@ -18,8 +18,14 @@ CMAKE_SKIP_RPATH == "${CMAKE_SKIP_RPATH}"
CMAKE_SYSTEM_INFO_FILE == "${CMAKE_SYSTEM_INFO_FILE}"
CMAKE_SYSTEM_NAME == "${CMAKE_SYSTEM_NAME}"
CMAKE_SYSTEM == "${CMAKE_SYSTEM}"
CMAKE_CXX_COMPILER == "${CMAKE_CXX_COMPILER}"
CMAKE_C_COMPILER == "${CMAKE_C_COMPILER}"
CMAKE_C_COMPILER_ID == "${CMAKE_C_COMPILER_ID}"
CMAKE_C_COMPILER_VERSION == "${CMAKE_C_COMPILER_VERSION}"
CMAKE_C_COMPILER_ARCHITECTURE_ID == "${CMAKE_C_COMPILER_ARCHITECTURE_ID}"
CMAKE_CXX_COMPILER == "${CMAKE_CXX_COMPILER}"
CMAKE_CXX_COMPILER_ID == "${CMAKE_CXX_COMPILER_ID}"
CMAKE_CXX_COMPILER_VERSION == "${CMAKE_CXX_COMPILER_VERSION}"
CMAKE_CXX_COMPILER_ARCHITECTURE_ID == "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}"
CMAKE_COMPILER_IS_GNUCC == "${CMAKE_COMPILER_IS_GNUCC}"
CMAKE_COMPILER_IS_GNUCXX == "${CMAKE_COMPILER_IS_GNUCXX}"

View File

@ -1,3 +1,4 @@
-- CMAKE_C_COMPILER='[^']+'
-- CMAKE_C_COMPILER_ID='[A-Za-z]+'
-- CMAKE_C_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_C_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'

View File

@ -2,3 +2,4 @@ enable_language(C)
message(STATUS "CMAKE_C_COMPILER='${CMAKE_C_COMPILER}'")
message(STATUS "CMAKE_C_COMPILER_ID='${CMAKE_C_COMPILER_ID}'")
message(STATUS "CMAKE_C_COMPILER_VERSION='${CMAKE_C_COMPILER_VERSION}'")
message(STATUS "CMAKE_C_COMPILER_ARCHITECTURE_ID='${CMAKE_C_COMPILER_ARCHITECTURE_ID}'")

View File

@ -1,11 +1,13 @@
(-- CMAKE_CUDA_COMPILER='[^']+'
-- CMAKE_CUDA_COMPILER_ID='NVIDIA'
-- CMAKE_CUDA_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_CUDA_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'
-- CMAKE_CUDA_HOST_COMPILER_ID='[A-Za-z]+'
-- CMAKE_CUDA_HOST_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
|-- CMAKE_CUDA_COMPILER='[^']+'
-- CMAKE_CUDA_COMPILER_ID='([^N]|N[^V]|NV[^I]|NVI[^D]|NVID[^I]|NVIDI[^A])[A-Za-z]*'
-- CMAKE_CUDA_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_CUDA_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'
-- CMAKE_CUDA_HOST_COMPILER_ID=''
-- CMAKE_CUDA_HOST_COMPILER_VERSION=''
)

View File

@ -2,5 +2,6 @@ enable_language(CUDA)
message(STATUS "CMAKE_CUDA_COMPILER='${CMAKE_CUDA_COMPILER}'")
message(STATUS "CMAKE_CUDA_COMPILER_ID='${CMAKE_CUDA_COMPILER_ID}'")
message(STATUS "CMAKE_CUDA_COMPILER_VERSION='${CMAKE_CUDA_COMPILER_VERSION}'")
message(STATUS "CMAKE_CUDA_COMPILER_ARCHITECTURE_ID='${CMAKE_CUDA_COMPILER_ARCHITECTURE_ID}'")
message(STATUS "CMAKE_CUDA_HOST_COMPILER_ID='${CMAKE_CUDA_HOST_COMPILER_ID}'")
message(STATUS "CMAKE_CUDA_HOST_COMPILER_VERSION='${CMAKE_CUDA_HOST_COMPILER_VERSION}'")

View File

@ -1,3 +1,4 @@
-- CMAKE_CXX_COMPILER='[^']+'
-- CMAKE_CXX_COMPILER_ID='[A-Za-z]+'
-- CMAKE_CXX_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_CXX_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'

View File

@ -2,3 +2,4 @@ enable_language(CXX)
message(STATUS "CMAKE_CXX_COMPILER='${CMAKE_CXX_COMPILER}'")
message(STATUS "CMAKE_CXX_COMPILER_ID='${CMAKE_CXX_COMPILER_ID}'")
message(STATUS "CMAKE_CXX_COMPILER_VERSION='${CMAKE_CXX_COMPILER_VERSION}'")
message(STATUS "CMAKE_CXX_COMPILER_ARCHITECTURE_ID='${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}'")

View File

@ -1,3 +1,4 @@
-- CMAKE_Fortran_COMPILER='[^']+'
-- CMAKE_Fortran_COMPILER_ID='[A-Za-z]+'
-- CMAKE_Fortran_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_Fortran_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'

View File

@ -2,3 +2,4 @@ enable_language(Fortran)
message(STATUS "CMAKE_Fortran_COMPILER='${CMAKE_Fortran_COMPILER}'")
message(STATUS "CMAKE_Fortran_COMPILER_ID='${CMAKE_Fortran_COMPILER_ID}'")
message(STATUS "CMAKE_Fortran_COMPILER_VERSION='${CMAKE_Fortran_COMPILER_VERSION}'")
message(STATUS "CMAKE_Fortran_COMPILER_ARCHITECTURE_ID='${CMAKE_Fortran_COMPILER_ARCHITECTURE_ID}'")

View File

@ -1,11 +1,13 @@
(-- CMAKE_HIP_COMPILER='[^']+'
-- CMAKE_HIP_COMPILER_ID='NVIDIA'
-- CMAKE_HIP_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_HIP_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'
-- CMAKE_HIP_HOST_COMPILER_ID='[A-Za-z]+'
-- CMAKE_HIP_HOST_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
|-- CMAKE_HIP_COMPILER='[^']+'
-- CMAKE_HIP_COMPILER_ID='([^N]|N[^V]|NV[^I]|NVI[^D]|NVID[^I]|NVIDI[^A])[A-Za-z]*'
-- CMAKE_HIP_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_HIP_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'
-- CMAKE_HIP_HOST_COMPILER_ID=''
-- CMAKE_HIP_HOST_COMPILER_VERSION=''
)

View File

@ -2,5 +2,6 @@ enable_language(HIP)
message(STATUS "CMAKE_HIP_COMPILER='${CMAKE_HIP_COMPILER}'")
message(STATUS "CMAKE_HIP_COMPILER_ID='${CMAKE_HIP_COMPILER_ID}'")
message(STATUS "CMAKE_HIP_COMPILER_VERSION='${CMAKE_HIP_COMPILER_VERSION}'")
message(STATUS "CMAKE_HIP_COMPILER_ARCHITECTURE_ID='${CMAKE_HIP_COMPILER_ARCHITECTURE_ID}'")
message(STATUS "CMAKE_HIP_HOST_COMPILER_ID='${CMAKE_HIP_HOST_COMPILER_ID}'")
message(STATUS "CMAKE_HIP_HOST_COMPILER_VERSION='${CMAKE_HIP_HOST_COMPILER_VERSION}'")

View File

@ -1,3 +1,4 @@
-- CMAKE_OBJC_COMPILER='[^']+'
-- CMAKE_OBJC_COMPILER_ID='[A-Za-z]+'
-- CMAKE_OBJC_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_OBJC_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'

View File

@ -2,3 +2,4 @@ enable_language(OBJC)
message(STATUS "CMAKE_OBJC_COMPILER='${CMAKE_OBJC_COMPILER}'")
message(STATUS "CMAKE_OBJC_COMPILER_ID='${CMAKE_OBJC_COMPILER_ID}'")
message(STATUS "CMAKE_OBJC_COMPILER_VERSION='${CMAKE_OBJC_COMPILER_VERSION}'")
message(STATUS "CMAKE_OBJC_COMPILER_ARCHITECTURE_ID='${CMAKE_OBJC_COMPILER_ARCHITECTURE_ID}'")

View File

@ -1,3 +1,4 @@
-- CMAKE_OBJCXX_COMPILER='[^']+'
-- CMAKE_OBJCXX_COMPILER_ID='[A-Za-z]+'
-- CMAKE_OBJCXX_COMPILER_VERSION='([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?'
-- CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID='[A-Za-z0-9_;]+'

View File

@ -2,3 +2,4 @@ enable_language(OBJCXX)
message(STATUS "CMAKE_OBJCXX_COMPILER='${CMAKE_OBJCXX_COMPILER}'")
message(STATUS "CMAKE_OBJCXX_COMPILER_ID='${CMAKE_OBJCXX_COMPILER_ID}'")
message(STATUS "CMAKE_OBJCXX_COMPILER_VERSION='${CMAKE_OBJCXX_COMPILER_VERSION}'")
message(STATUS "CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID='${CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID}'")

View File

@ -19,6 +19,7 @@ CMAKE_COMPILER_IS_GNUCC == "${CMAKE_COMPILER_IS_GNUCC}"
CMAKE_COMPILER_IS_GNUCXX == "${CMAKE_COMPILER_IS_GNUCXX}"
CMAKE_C_COMPILER_ID == "${CMAKE_C_COMPILER_ID}"
CMAKE_C_COMPILER_VERSION == "${CMAKE_C_COMPILER_VERSION}"
CMAKE_C_COMPILER_ARCHITECTURE_ID == "${CMAKE_C_COMPILER_ARCHITECTURE_ID}"
CMAKE_C90_STANDARD_COMPILE_OPTION == "${CMAKE_C90_STANDARD_COMPILE_OPTION}"
CMAKE_C99_STANDARD_COMPILE_OPTION == "${CMAKE_C99_STANDARD_COMPILE_OPTION}"
CMAKE_C11_STANDARD_COMPILE_OPTION == "${CMAKE_C11_STANDARD_COMPILE_OPTION}"
@ -31,6 +32,7 @@ CMAKE_C99_COMPILE_FEATURES == "${CMAKE_C99_COMPILE_FEATURES}"
CMAKE_C11_COMPILE_FEATURES == "${CMAKE_C11_COMPILE_FEATURES}"
CMAKE_CXX_COMPILER_ID == "${CMAKE_CXX_COMPILER_ID}"
CMAKE_CXX_COMPILER_VERSION == "${CMAKE_CXX_COMPILER_VERSION}"
CMAKE_CXX_COMPILER_ARCHITECTURE_ID == "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}"
CMAKE_CXX98_STANDARD_COMPILE_OPTION == "${CMAKE_CXX98_STANDARD_COMPILE_OPTION}"
CMAKE_CXX11_STANDARD_COMPILE_OPTION == "${CMAKE_CXX11_STANDARD_COMPILE_OPTION}"
CMAKE_CXX98_EXTENSION_COMPILE_OPTION == "${CMAKE_CXX98_EXTENSION_COMPILE_OPTION}"