vrrp: fix vrrp_garp_or_na_send()'s memory leak
[vpp.git] / src / plugins / CMakeLists.txt
index 877d25d..43ad4cc 100644 (file)
@@ -16,54 +16,34 @@ include_directories (
   ${CMAKE_CURRENT_BINARY_DIR}
 )
 
-macro(add_vpp_plugin name)
-  cmake_parse_arguments(PLUGIN
-    ""
-    "LINK_FLAGS"
-    "SOURCES;API_FILES;MULTIARCH_SOURCES;LINK_LIBRARIES;API_TEST_SOURCES"
-    ${ARGN}
-  )
-  set(plugin_name ${name}_plugin)
-  set(api_headers)
-  foreach(f ${PLUGIN_API_FILES})
-     vpp_generate_api_header(${f} plugins)
-     list(APPEND api_headers ${f}.h ${f}.json)
-  endforeach()
-  add_library(${plugin_name} SHARED ${PLUGIN_SOURCES} ${api_headers})
-  add_dependencies(${plugin_name} vpp_version_h api_headers)
-  set_target_properties(${plugin_name} PROPERTIES
-    PREFIX ""
-    LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/vpp_plugins)
-  if(PLUGIN_MULTIARCH_SOURCES)
-    vpp_library_set_multiarch_sources(${plugin_name} ${PLUGIN_MULTIARCH_SOURCES})
-  endif()
-  if(PLUGIN_LINK_LIBRARIES)
-    target_link_libraries(${plugin_name} ${PLUGIN_LINK_LIBRARIES})
-  endif()
-  if(PLUGIN_LINK_FLAGS)
-    set_target_properties(${plugin_name} PROPERTIES LINK_FLAGS "${PLUGIN_LINK_FLAGS}")
-  endif()
-  if(PLUGIN_API_TEST_SOURCES)
-    set(test_plugin_name ${name}_test_plugin)
-    add_library(${test_plugin_name} SHARED ${PLUGIN_API_TEST_SOURCES} ${api_headers})
-    add_dependencies(${test_plugin_name} api_headers)
-    set_target_properties(${test_plugin_name} PROPERTIES
-      PREFIX ""
-      LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/vpp_api_test_plugins)
-    install(TARGETS ${test_plugin_name} DESTINATION lib/vpp_api_test_plugins COMPONENT
-           plugins)
-  endif()
-  install(TARGETS ${plugin_name} DESTINATION lib/vpp_plugins COMPONENT plugins)
-endmacro()
-
 ##############################################################################
 # find and add all plugin subdirs
-############################################################################
+##############################################################################
 FILE(GLOB files RELATIVE
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/*/CMakeLists.txt
 )
+
+set(VPP_EXCLUDED_PLUGINS
+  ""
+  CACHE
+  STRING "Comma-separated list of core plugins excluded from packaging and tests"
+)
+
+# create the list of the plugins that we need to exclude from packaging
+SET(excluded_plugins "")
+STRING(REGEX REPLACE "[,]+" ";" exc_plugins "${VPP_EXCLUDED_PLUGINS}")
+foreach (e ${exc_plugins})
+  message(WARNING "Excluding plugin due to VPP_EXCLUDED_PLUGINS: '${e}'")
+  list(APPEND excluded_plugins ${e})
+endforeach()
+
 foreach (f ${files})
   get_filename_component(dir ${f} DIRECTORY)
-  add_subdirectory(${dir})
+
+  # if a plugin is in the list of excluded plugin, do not add that subdirectory
+  LIST(FIND excluded_plugins "${dir}" exc_index)
+  if(${exc_index} EQUAL "-1")
+    add_subdirectory(${dir})
+  endif()
 endforeach()