# 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 "^sunway-") set(ARCHITECTURE_ID "sw_64") 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") elseif(_dumpmachine_triple MATCHES "^wasm64-") set(ARCHITECTURE_ID "wasm64") elseif(_dumpmachine_triple MATCHES "^wasm32-") set(ARCHITECTURE_ID "wasm32") else() set(ARCHITECTURE_ID "") endif() set("${arch_id_var}" "${ARCHITECTURE_ID}" PARENT_SCOPE) endfunction()