diff options
Diffstat (limited to 'src/plugins/CMakeLists.txt')
-rw-r--r-- | src/plugins/CMakeLists.txt | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt index 56cb6ef39fc..8ea99c7566a 100644 --- a/src/plugins/CMakeLists.txt +++ b/src/plugins/CMakeLists.txt @@ -16,19 +16,33 @@ include_directories ( ${CMAKE_CURRENT_BINARY_DIR} ) -macro(add_vpp_plugin plugin_name) +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 ${ARGN}) - if(${f} MATCHES ".*\.api$") - vpp_generate_api_header(${f} plugins) - list(APPEND api_headers ${f}.h ${f}.json) - endif() + 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 ${ARGN} ${api_headers}) + 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() |