diff --git a/DEPENDENCIES b/DEPENDENCIES index 0e44ada1..ecc2d0ea 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -1,4 +1,4 @@ vendorpull https://github.com/sourcemeta/vendorpull dea311b5bfb53b6926a4140267959ae334d3ecf4 -noa https://github.com/sourcemeta/noa 2ce51f80794ad6dfd9547efa0d3b3d8fa85adbcf +noa https://github.com/sourcemeta/noa 1827a68799cfef6f1b9bf967f66d21dd42a84f96 jsontoolkit https://github.com/sourcemeta/jsontoolkit b5f2d36f05bb9d608700b78ac0922688689d5b41 jsonschema-test-suite https://github.com/json-schema-org/JSON-Schema-Test-Suite c2badb1298a8698f86dadf1aea7b44b3a894e5ac diff --git a/vendor/noa/cmake/noa/defaults.cmake b/vendor/noa/cmake/noa/defaults.cmake index 06ea6eb3..9d85f222 100644 --- a/vendor/noa/cmake/noa/defaults.cmake +++ b/vendor/noa/cmake/noa/defaults.cmake @@ -93,3 +93,42 @@ if(NOA_COMPILER_LLVM AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARE set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto=full") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto=full") endif() + +# Attempt to enable SIMD (SSE/AVX/NEON) +include(CheckCXXCompilerFlag) +if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86|AMD64") + if(MSVC) + check_cxx_compiler_flag("/arch:AVX2" COMPILER_SUPPORTS_AVX2) + if(COMPILER_SUPPORTS_AVX2) + message(STATUS "Enabling SIMD AVX2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2") + elseif(NOT CMAKE_CL_64) + message(STATUS "Enabling SIMD SSE2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2") + endif() + else() + check_cxx_compiler_flag("-mavx2" COMPILER_SUPPORTS_AVX2) + if(COMPILER_SUPPORTS_AVX2) + message(STATUS "Enabling SIMD AVX2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2") + else() + check_cxx_compiler_flag("-msse4.2" COMPILER_SUPPORTS_SSE42) + if(COMPILER_SUPPORTS_SSE42) + message(STATUS "Enabling SIMD SSE4.2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2") + else() + check_cxx_compiler_flag("-msse2" COMPILER_SUPPORTS_SSE2) + if(COMPILER_SUPPORTS_SSE2) + message(STATUS "Enabling SIMD SSE2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2") + endif() + endif() + endif() + endif() +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64|aarch64" AND NOT MSVC) + check_cxx_compiler_flag("-march=armv8-a+fp+simd" COMPILER_SUPPORTS_NEON) + if(COMPILER_SUPPORTS_NEON) + message(STATUS "Enabling SIMD NEON") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a+fp+simd") + endif() +endif()