Skip to content

Commit 125d79c

Browse files
authored
Merge pull request #5797 from martin-frbg/issue5713-2
Fix compiler check for ARM64 SME support in CMake builds
2 parents 1877075 + d4d02fe commit 125d79c

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

cmake/arch.cmake

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,13 @@ if (DYNAMIC_ARCH)
4848
if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 11) # SVE ACLE supported in LLVM >= 11
4949
set(DYNAMIC_CORE ${DYNAMIC_CORE} NEOVERSEV1 NEOVERSEN2 ARMV8SVE A64FX)
5050
endif ()
51+
if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 17) # SME ACLE supported in LLVM >= 17
52+
set(DYNAMIC_CORE ${DYNAMIC_CORE} ARMV9SME)
53+
endif()
54+
5155
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
52-
if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 19 OR (${CMAKE_C_COMPILER_ID} MATCHES AppleClang AND ${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 17) ) # SME ACLE supported in LLVM >= 19 and AppleClang >= 17
53-
set(DYNAMIC_CORE ${DYNAMIC_CORE} ARMV9SME VORTEXM4)
56+
if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 19 OR (${CMAKE_C_COMPILER_ID} MATCHES AppleClang AND ${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 17) ) # SME w/out SVE supported in LLVM >= 19 and AppleClang >= 17
57+
set(DYNAMIC_CORE ${DYNAMIC_CORE} VORTEXM4)
5458
endif()
5559
endif()
5660
endif ()

cmake/system_check.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ endif()
157157
endif()
158158

159159
if (NOT NO_SME)
160-
file(WRITE ${PROJECT_BINARY_DIR}/sme.c ".text \n.global sme_test\n\nsme_test:\nsmstart\nsmstop\nret\n")
161-
execute_process(COMMAND ${CMAKE_C_COMPILER} -march=armv9-a+sve2+sme -c -v -o ${PROJECT_BINARY_DIR}/sme.o ${PROJECT_BINARY_DIR}/sme.c OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE NO_SME)
160+
file(WRITE ${PROJECT_BINARY_DIR}/sme.S ".text \n.global sme_test\n\nsme_test:\nsmstart\nsmstop\nret\n")
161+
execute_process(COMMAND ${CMAKE_C_COMPILER} -march=armv9-a+sve2+sme -c -v -o ${PROJECT_BINARY_DIR}/sme.o ${PROJECT_BINARY_DIR}/sme.S OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE NO_SME)
162162
if (NO_SME EQUAL 1)
163163
set (CCOMMON_OPT "${CCOMMON_OPT} -DNO_SME")
164164
endif()
165-
file(REMOVE "${PROJECT_BINARY_DIR}/sme.c" "${PROJECT_BINARY_DIR}/sme.o")
165+
file(REMOVE "${PROJECT_BINARY_DIR}/sme.S" "${PROJECT_BINARY_DIR}/sme.o")
166166
endif()
167167
endif()
168168

0 commit comments

Comments
 (0)