af_xdp: use desc offset on rx
[vpp.git] / src / cmake / cpu.cmake
index caeccc0..f4a57a3 100644 (file)
@@ -107,13 +107,15 @@ macro(add_vpp_march_variant v)
       endif()
       if (VPP_MARCH_VARIANT_${uv})
         list(APPEND MARCH_VARIANTS "${v}\;${fs}")
+      else()
+        list(APPEND MARCH_VARIANTS_DISABLED "${v}\;${fs}")
       endif()
     endif()
   endif()
 endmacro()
 
 if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
-  set(CMAKE_C_FLAGS "-march=corei7 -mtune=corei7-avx ${CMAKE_C_FLAGS}")
+  set(VPP_DEFAULT_MARCH_FLAGS -march=corei7 -mtune=corei7-avx)
 
   add_vpp_march_variant(hsw
     FLAGS -march=haswell -mtune=haswell
@@ -136,7 +138,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
     )
   endif()
 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)")
-  set(CMAKE_C_FLAGS "-march=armv8-a+crc ${CMAKE_C_FLAGS}")
+  set(VPP_DEFAULT_MARCH_FLAGS -march=armv8-a+crc)
 
   add_vpp_march_variant(qdf24xx
     FLAGS -march=armv8-a+crc+crypto -mtune=qdf24xx
@@ -169,11 +171,25 @@ macro(vpp_library_set_multiarch_sources lib)
   cmake_parse_arguments(ARG
     ""
     ""
-    "SOURCES;DEPENDS"
+    "SOURCES;DEPENDS;FORCE_ON"
     ${ARGN}
   )
 
-  foreach(V ${MARCH_VARIANTS})
+  set(VARIANTS "${MARCH_VARIANTS}")
+
+  if(ARG_FORCE_ON)
+    foreach(F ${ARG_FORCE_ON})
+      foreach(V ${MARCH_VARIANTS_DISABLED})
+        list(GET V 0 VARIANT)
+       if (VARIANT STREQUAL F)
+          list(GET V 1 VARIANT_FLAGS)
+          list(APPEND VARIANTS "${VARIANT}\;${VARIANT_FLAGS}")
+       endif()
+      endforeach()
+    endforeach()
+  endif()
+
+  foreach(V ${VARIANTS})
     list(GET V 0 VARIANT)
     list(GET V 1 VARIANT_FLAGS)
     set(l ${lib}_${VARIANT})
@@ -182,7 +198,7 @@ macro(vpp_library_set_multiarch_sources lib)
       add_dependencies(${l} ${ARG_DEPENDS})
     endif()
     set_target_properties(${l} PROPERTIES POSITION_INDEPENDENT_CODE ON)
-    target_compile_options(${l} PUBLIC "-DCLIB_MARCH_VARIANT=${VARIANT}")
+    target_compile_definitions(${l} PUBLIC CLIB_MARCH_VARIANT=${VARIANT})
     separate_arguments(VARIANT_FLAGS)
     target_compile_options(${l} PUBLIC ${VARIANT_FLAGS})
     target_sources(${lib} PRIVATE $<TARGET_OBJECTS:${l}>)