@@ -59,6 +59,7 @@ SET(AVX2_CODE "
5959
6060MACRO (CHECK_SSE lang type flags )
6161 SET (__FLAG_I 1)
62+ string (REPLACE " " ";" flags "${flags} " )
6263 FOREACH (__FLAG ${flags} )
6364 IF (NOT ${lang} _${type} _FOUND)
6465 cmake_push_check_state(RESET)
@@ -70,9 +71,7 @@ MACRO(CHECK_SSE lang type flags)
7071 CONTINUE ()
7172 ENDIF ()
7273 IF (${CHECK_AVX_COMPILE} )
73- SET (${lang} _${type} _FOUND TRUE CACHE BOOL "${lang} ${type} support" )
74- string (REPLACE " " ";" __FLAG "${__FLAG} " )
75- SET (${lang} _${type} _FLAGS "${__FLAG} " CACHE STRING "${lang} ${type} flags" )
74+ SET (${lang} _${type} _FLAGS "${${lang} _${type} _FLAGS} ${__FLAG} " )
7675 MATH (EXPR __FLAG_I "${__FLAG_I} +1" )
7776 CONTINUE ()
7877 ENDIF ()
@@ -81,34 +80,31 @@ MACRO(CHECK_SSE lang type flags)
8180 unset (${lang} _HAS_${type} _${__FLAG_I} CACHE )
8281 SET (CMAKE_REQUIRED_FLAGS ${__FLAG} )
8382 CHECK_SOURCE_RUNS(${lang} "${${type} _CODE}" ${lang} _HAS_${type} _${__FLAG_I} )
83+ cmake_pop_check_state()
8484 IF (${lang} _HAS_${type} _${__FLAG_I} )
85- SET (${lang} _${type} _FOUND TRUE CACHE BOOL "${lang} ${type} support" )
86- string (REPLACE " " ";" __FLAG "${__FLAG} " )
87- SET (${lang} _${type} _FLAGS "${__FLAG} " CACHE STRING "${lang} ${type} flags" )
85+ SET (${lang} _${type} _FLAGS "${${lang} _${type} _FLAGS} ${__FLAG} " )
8886 ENDIF ()
8987 MATH (EXPR __FLAG_I "${__FLAG_I} +1" )
90- cmake_pop_check_state()
9188 ENDIF ()
9289 ENDFOREACH ()
93-
94- SET (${lang} _${type} _FOUND "${${lang} _${type} _FOUND}" CACHE BOOL "${lang} ${type} support" )
95- SET (${lang} _${type} _FLAGS "${${lang} _${type} _FLAGS}" CACHE STRING "${lang} ${type} flags" )
96-
9790 MARK_AS_ADVANCED (${lang} _${type} _FOUND ${lang} _${type} _FLAGS)
91+ if (${lang} _${type} _FLAGS)
92+ SET (${lang} _${type} _FLAGS "${${lang} _${type} _FLAGS}" CACHE STRING "${lang} ${type} flags" )
93+ endif ()
9894ENDMACRO ()
9995
10096
10197get_property (languages GLOBAL PROPERTY ENABLED_LANGUAGES )
10298foreach (lang C;CXX)
10399 if (lang IN_LIST languages)
104100 if (MSVC )
105- CHECK_SSE(${lang} "AVX" "/arch:AVX; " )
106- CHECK_SSE(${lang} "AVX2" "/arch:AVX2; " )
107- CHECK_SSE(${lang} "AVX512" "/arch:AVX512; " )
101+ CHECK_SSE(${lang} "AVX" "/arch:AVX" )
102+ CHECK_SSE(${lang} "AVX2" "/arch:AVX2" )
103+ CHECK_SSE(${lang} "AVX512" "/arch:AVX512" )
108104 else ()
109- CHECK_SSE(${lang} "AVX" "-mavx; " )
110- CHECK_SSE(${lang} "AVX2" "-mavx2 -mfma -mf16c; " )
111- CHECK_SSE(${lang} "AVX512" "-mavx512f -mavx512dq -mavx512vl -mavx512bw -mfma; " )
105+ CHECK_SSE(${lang} "AVX" "-mavx" )
106+ CHECK_SSE(${lang} "AVX2" "-mavx2 -mfma -mf16c" )
107+ CHECK_SSE(${lang} "AVX512" "-mavx512f -mavx512dq -mavx512vl -mavx512bw -mfma" )
112108 endif ()
113109 endif ()
114110endforeach ()
0 commit comments