diff --git a/cmake/modules/FindAVX.cmake b/cmake/modules/FindAVX.cmake index e6da244bf5..895036095e 100644 --- a/cmake/modules/FindAVX.cmake +++ b/cmake/modules/FindAVX.cmake @@ -59,6 +59,7 @@ SET(AVX2_CODE " MACRO(CHECK_SSE lang type flags) SET(__FLAG_I 1) + string(REPLACE " " ";" flags "${flags}") FOREACH(__FLAG ${flags}) IF(NOT ${lang}_${type}_FOUND) cmake_push_check_state(RESET) @@ -70,9 +71,7 @@ MACRO(CHECK_SSE lang type flags) CONTINUE() ENDIF() IF(${CHECK_AVX_COMPILE}) - SET(${lang}_${type}_FOUND TRUE CACHE BOOL "${lang} ${type} support") - string(REPLACE " " ";" __FLAG "${__FLAG}") - SET(${lang}_${type}_FLAGS "${__FLAG}" CACHE STRING "${lang} ${type} flags") + SET(${lang}_${type}_FLAGS "${${lang}_${type}_FLAGS} ${__FLAG}") MATH(EXPR __FLAG_I "${__FLAG_I}+1") CONTINUE() ENDIF() @@ -81,20 +80,17 @@ MACRO(CHECK_SSE lang type flags) unset(${lang}_HAS_${type}_${__FLAG_I} CACHE) SET(CMAKE_REQUIRED_FLAGS ${__FLAG}) CHECK_SOURCE_RUNS(${lang} "${${type}_CODE}" ${lang}_HAS_${type}_${__FLAG_I}) + cmake_pop_check_state() IF(${lang}_HAS_${type}_${__FLAG_I}) - SET(${lang}_${type}_FOUND TRUE CACHE BOOL "${lang} ${type} support") - string(REPLACE " " ";" __FLAG "${__FLAG}") - SET(${lang}_${type}_FLAGS "${__FLAG}" CACHE STRING "${lang} ${type} flags") + SET(${lang}_${type}_FLAGS "${${lang}_${type}_FLAGS} ${__FLAG}") ENDIF() MATH(EXPR __FLAG_I "${__FLAG_I}+1") - cmake_pop_check_state() ENDIF() ENDFOREACH() - - SET(${lang}_${type}_FOUND "${${lang}_${type}_FOUND}" CACHE BOOL "${lang} ${type} support") - SET(${lang}_${type}_FLAGS "${${lang}_${type}_FLAGS}" CACHE STRING "${lang} ${type} flags") - MARK_AS_ADVANCED(${lang}_${type}_FOUND ${lang}_${type}_FLAGS) + if(${lang}_${type}_FLAGS) + SET(${lang}_${type}_FLAGS "${${lang}_${type}_FLAGS}" CACHE STRING "${lang} ${type} flags") + endif() ENDMACRO() @@ -102,13 +98,13 @@ get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) foreach(lang C;CXX) if(lang IN_LIST languages) if(MSVC) - CHECK_SSE(${lang} "AVX" "/arch:AVX;") - CHECK_SSE(${lang} "AVX2" "/arch:AVX2;") - CHECK_SSE(${lang} "AVX512" "/arch:AVX512;") + CHECK_SSE(${lang} "AVX" "/arch:AVX") + CHECK_SSE(${lang} "AVX2" "/arch:AVX2") + CHECK_SSE(${lang} "AVX512" "/arch:AVX512") else() - CHECK_SSE(${lang} "AVX" "-mavx;") - CHECK_SSE(${lang} "AVX2" "-mavx2 -mfma -mf16c;") - CHECK_SSE(${lang} "AVX512" "-mavx512f -mavx512dq -mavx512vl -mavx512bw -mfma;") + CHECK_SSE(${lang} "AVX" "-mavx") + CHECK_SSE(${lang} "AVX2" "-mavx2 -mfma -mf16c") + CHECK_SSE(${lang} "AVX512" "-mavx512f -mavx512dq -mavx512vl -mavx512bw -mfma") endif() endif() endforeach()