crypto-native: properly deal with broken or outdated toolchains
[vpp.git] / src / plugins / crypto_native / CMakeLists.txt
index c6d916d..e71df3d 100644 (file)
 # limitations under the License.
 
 if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
-  list(APPEND VARIANTS "sse42\;-march=silvermont")
-  list(APPEND VARIANTS "avx2\;-march=core-avx2")
-  if(compiler_flag_march_skylake_avx512)
-    list(APPEND VARIANTS "avx512\;-march=skylake-avx512")
+  list(APPEND VARIANTS "slm\;-march=silvermont")
+  list(APPEND VARIANTS "hsw\;-march=haswell")
+  if(compiler_flag_march_skylake_avx512 AND compiler_flag_mprefer_vector_width)
+    list(APPEND VARIANTS "skx\;-march=skylake-avx512 -mprefer-vector-width=256")
   endif()
-  if(compiler_flag_march_icelake_client)
-    list(APPEND VARIANTS "vaesni\;-march=icelake-client")
+  if(compiler_flag_march_icelake_client AND compiler_flag_mprefer_vector_width)
+    list(APPEND VARIANTS "icl\;-march=icelake-client -mprefer-vector-width=512")
   endif()
   set (COMPILE_FILES aes_cbc.c aes_gcm.c)
   set (COMPILE_OPTS -Wall -fno-common -maes)
@@ -42,6 +42,7 @@ foreach(VARIANT ${VARIANTS})
   set(l crypto_native_${v})
   add_library(${l} OBJECT ${COMPILE_FILES})
   set_target_properties(${l} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+  separate_arguments(f)
   target_compile_options(${l} PUBLIC ${f} ${COMPILE_OPTS})
   target_sources(crypto_native_plugin PRIVATE $<TARGET_OBJECTS:${l}>)
 endforeach()