Skip to content

Commit 0931617

Browse files
brad0grooverdan
authored andcommitted
Enable CMake CRC32 / CRYPTO tests for aarch64 with Clang
1 parent ec495bf commit 0931617

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

mysys/CMakeLists.txt

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,16 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|i386|i686")
7979
ENDIF()
8080
ENDIF()
8181
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
82-
IF(CMAKE_C_COMPILER_ID STREQUAL "GNU")
83-
include(CheckCXXSourceCompiles)
82+
IF(CMAKE_C_COMPILER_ID MATCHES "Clang|GNU")
83+
include(CheckCSourceCompiles)
8484

85-
CHECK_CXX_SOURCE_COMPILES("
85+
CHECK_C_COMPILER_FLAG(-march=armv8-a+crc+crypto HAVE_ARMV8_CRC_CRYPTO_MARCH)
86+
IF(HAVE_ARMV8_CRC_CRYPTO_MARCH)
87+
SET(SAVE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
88+
SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -march=armv8-a+crc+crypto")
89+
ENDIF()
90+
91+
CHECK_C_SOURCE_COMPILES("
8692
#define CRC32CX(crc, value) __asm__(\"crc32cx %w[c], %w[c], %x[v]\":[c]\"+r\"(crc):[v]\"r\"(value))
8793
asm(\".arch_extension crc\");
8894
unsigned int foo(unsigned int ret) {
@@ -99,7 +105,7 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
99105
#endif
100106
}" HAVE_ARMV8_CRC)
101107

102-
CHECK_CXX_SOURCE_COMPILES("
108+
CHECK_C_SOURCE_COMPILES("
103109
asm(\".arch_extension crypto\");
104110
unsigned int foo(unsigned int ret) {
105111
__asm__(\"pmull v2.1q, v2.1d, v1.1d\");
@@ -115,10 +121,8 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
115121
#endif
116122
}" HAVE_ARMV8_CRYPTO)
117123

118-
CHECK_C_COMPILER_FLAG(-march=armv8-a+crc+crypto HAVE_ARMV8_CRC_CRYPTO_MARCH)
119-
120124
IF(HAVE_ARMV8_CRC_CRYPTO_MARCH)
121-
CHECK_INCLUDE_FILE(arm_acle.h HAVE_ARM_ACLE_H -march=armv8-a+crc+crypto)
125+
CHECK_INCLUDE_FILE(arm_acle.h HAVE_ARM_ACLE_H)
122126
IF(HAVE_ARM_ACLE_H)
123127
ADD_DEFINITIONS(-DHAVE_ARMV8_CRC_CRYPTO_INTRINSICS)
124128
ENDIF()
@@ -131,6 +135,8 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
131135
SET(MYSYS_SOURCES ${MYSYS_SOURCES} crc32/crc32_arm64.c)
132136
SET_SOURCE_FILES_PROPERTIES(crc32/crc32_arm64.c PROPERTIES
133137
COMPILE_FLAGS "-march=armv8-a+crc+crypto")
138+
139+
SET(CMAKE_REQUIRED_FLAGS "${SAVE_CMAKE_REQUIRED_FLAGS}")
134140
ENDIF()
135141
ENDIF()
136142
ENDIF()

0 commit comments

Comments
 (0)