vppinfra: strstr_s_inline checks string unterminated wrong
[vpp.git] / src / cmake / library.cmake
index 37239f3..c80d7f2 100644 (file)
@@ -22,6 +22,7 @@ macro(add_vpp_library lib)
   set (lo ${lib}_objs)
   add_library(${lo} OBJECT ${ARG_SOURCES})
   set_target_properties(${lo} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+  target_compile_options(${lo} PUBLIC ${VPP_DEFAULT_MARCH_FLAGS})
 
   add_library(${lib} SHARED)
   target_sources(${lib} PRIVATE $<TARGET_OBJECTS:${lo}>)
@@ -107,6 +108,36 @@ function (add_vpp_headers path)
   endforeach()
 endfunction()
 
+macro(add_vat_test_library lib)
+  cmake_parse_arguments(TEST
+    ""
+    ""
+    ${ARGN}
+  )
+
+  foreach(file ${ARGN})
+    get_filename_component(name ${file} NAME_WE)
+    set(test_lib ${lib}_${name}_plugin)
+    add_library(${test_lib} SHARED ${file})
+    target_compile_options(${test_lib} PUBLIC ${VPP_DEFAULT_MARCH_FLAGS})
+    if(NOT VPP_EXTERNAL_PROJECT)
+      add_dependencies(${test_lib} api_headers)
+    endif()
+    include_directories(${CMAKE_CURRENT_BINARY_DIR})
+    set_target_properties(${test_lib} PROPERTIES NO_SONAME 1)
+    set_target_properties(${test_lib} PROPERTIES
+      PREFIX ""
+      LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/vpp_api_test_plugins)
+
+    # install .so
+    install(
+      TARGETS ${test_lib}
+      DESTINATION ${VPP_LIBRARY_DIR}/vpp_api_test_plugins
+      COMPONENT ${ARG_COMPONENT}
+    )
+  endforeach()
+endmacro()
+
 macro(add_vpp_test_library lib)
   cmake_parse_arguments(TEST
     ""
@@ -118,6 +149,7 @@ macro(add_vpp_test_library lib)
     get_filename_component(name ${file} NAME_WE)
     set(test_lib ${lib}_${name}_plugin)
     add_library(${test_lib} SHARED ${file}_test2.c)
+    target_compile_options(${test_lib} PUBLIC ${VPP_DEFAULT_MARCH_FLAGS})
     if(NOT VPP_EXTERNAL_PROJECT)
       add_dependencies(${test_lib} api_headers)
     endif()
@@ -127,12 +159,20 @@ macro(add_vpp_test_library lib)
       PREFIX ""
       LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/vat2_plugins)
 
-    # Later: Install and package
     # install .so
-    #install(
-    #  TARGETS ${test_lib}
-    #  DESTINATION ${VPP_LIBRARY_DIR}/vat2_plugins
-    #  #COMPONENT ${ARG_COMPONENT}
-    #  )
+    install(
+      TARGETS ${test_lib}
+      DESTINATION ${VPP_LIBRARY_DIR}/vat2_plugins
+      COMPONENT ${ARG_COMPONENT}
+    )
   endforeach()
 endmacro()
+
+macro(vpp_find_library var)
+  find_library(${var} ${ARGN})
+  mark_as_advanced(${var})
+endmacro()
+macro(vpp_find_path var)
+  find_path(${var} ${ARGN})
+  mark_as_advanced(${var})
+endmacro()