Provide CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID on more compilers

Provide it whenever we can detect a target architecture from the
compiler during compiler inspection.  In order to avoid changing
existing IDs, do this only for compilers where we don't already
detect a target architecture during compiler identification.

Fixes: #17702
This commit is contained in:
Brad King
2025-03-24 11:41:20 -04:00
parent 019f0f8b32
commit 7f0f382c55
29 changed files with 603 additions and 3 deletions
@@ -3,11 +3,149 @@ CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
.. versionadded:: 3.10
Identifier indicating the
target architecture of the compiler for language ``<LANG>``.
:ref:`List <CMake Language Lists>` of identifiers indicating the
target architecture(s) of the compiler for language ``<LANG>``.
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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^