@@ -60,6 +60,7 @@ target_link_libraries(aybabtu PRIVATE steinwurf::platform)
6060
6161# Check Accelerations
6262include (CheckCXXCompilerFlag )
63+ include (CheckCXXSourceCompiles )
6364
6465if (CMAKE_C_COMPILER_ID MATCHES "GNU|AppleClang|Clang" )
6566 # # SSE2 check_cxx_compiler_flag("-Werror -msse2" HAS_SSE2)
@@ -89,12 +90,21 @@ if(CMAKE_C_COMPILER_ID MATCHES "GNU|AppleClang|Clang")
8990 set_source_files_properties (${avx2} PROPERTIES COMPILE_FLAGS -mavx2)
9091 endif ()
9192
93+
9294 # NEON
93- check_cxx_compiler_flag ("-Werror -mfpu=neon" HAS_NEON )
95+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|AARCH64|arm64|ARM64)$" )
96+ check_cxx_source_compiles (
97+ "int main()\n {\n #if defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(__aarch64__)\n return 0;\n #else\n #error NEON is required\n #endif\n }\n "
98+ HAS_NEON )
99+ else ()
100+ check_cxx_compiler_flag ("-Werror -mfpu=neon" HAS_NEON )
101+ endif ()
94102
95103 if (HAS_NEON)
96104 file (GLOB_RECURSE neon ./src/*neon.cpp )
97- set_source_files_properties (${neon} PROPERTIES COMPILE_FLAGS -mfpu=neon)
105+ if (NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|AARCH64|arm64|ARM64)$" )
106+ set_source_files_properties (${neon} PROPERTIES COMPILE_FLAGS -mfpu=neon)
107+ endif ()
98108 endif ()
99109elseif (CMAKE_C_COMPILER_ID MATCHES "MSVC" )
100110 # AVX2
@@ -129,7 +139,7 @@ if(${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME})
129139 # Build test executable
130140 file (GLOB_RECURSE aybabtu_tests_sources ./test/*.cpp )
131141 add_executable (aybabtu_tests ${aybabtu_tests_sources} )
132- target_link_libraries (aybabtu_tests
142+ target_link_libraries (aybabtu_tests
133143 gtest_main
134144 steinwurf::aybabtu
135145 steinwurf::cpuid
0 commit comments