${CMAKE_CURRENT_BINARY_DIR}
)
-macro(add_vpp_plugin name)
- cmake_parse_arguments(PLUGIN
- ""
- "LINK_FLAGS"
- "SOURCES;API_FILES;MULTIARCH_SOURCES;LINK_LIBRARIES"
- ${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()
- install(TARGETS ${plugin_name} DESTINATION lib/vpp_plugins COMPONENT plugins)
-endmacro()
-
-macro(add_vpp_api_test_plugin plugin_name)
- set(api_headers)
- foreach(f ${ARGN})
- if(${f} MATCHES ".*\.api$")
- vpp_generate_api_header(${f} plugins)
- list(APPEND api_headers ${f}.h)
- endif()
- endforeach()
- add_library(${plugin_name} SHARED ${ARGN} ${api_headers})
- add_dependencies(${plugin_name} api_headers)
- set_target_properties(${plugin_name} PROPERTIES PREFIX "")
- set_target_properties(${plugin_name} PROPERTIES
- PREFIX ""
- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}//vpp_api_test_plugins)
- install(TARGETS ${plugin_name} DESTINATION lib/vpp_api_test_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()