# Generate vpp/app/version.h
##############################################################################
add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/include/vpp/app/version.h
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/app/version.h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND mkdir
- ARGS -p ${CMAKE_BINARY_DIR}/include/vpp/app
+ ARGS -p ${CMAKE_CURRENT_BINARY_DIR}/app
COMMAND scripts/generate_version_h
- ARGS ${CMAKE_BINARY_DIR}/include/vpp/app/version.h
+ ARGS ${CMAKE_CURRENT_BINARY_DIR}/app/version.h
COMMENT "Generating VPP version.h"
)
add_custom_target(vpp_version_h
- DEPENDS ${CMAKE_BINARY_DIR}/include/vpp/app/version.h
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/app/version.h
+)
+
+install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/app/version.h
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vpp/app
+ COMPONENT vpp-dev
)
##############################################################################
# vpp binary
##############################################################################
+option(VPP_API_TEST_BUILTIN "Use builtin VPP API test." ON)
+
+configure_file(
+ ${CMAKE_SOURCE_DIR}/vpp/vnet/config.h.in
+ ${CMAKE_CURRENT_BINARY_DIR}/vnet/config.h
+)
-vpp_add_api_files(vpp_api_headers
+install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/vnet/config.h
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vpp/vnet
+ COMPONENT vpp-dev
+)
+
+set(VPP_API_FILES
+ api/vpe_types.api
api/vpe.api
- stats/stats.api
- oam/oam.api
)
-add_executable (vpp
+vpp_add_api_files(vpp core vpp ${VPP_API_FILES})
+
+foreach(file ${VPP_API_FILES})
+ get_filename_component(dir ${file} DIRECTORY)
+ install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/${file}.h
+ ${CMAKE_CURRENT_BINARY_DIR}/${file}_enum.h
+ ${CMAKE_CURRENT_BINARY_DIR}/${file}_types.h
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vpp/${dir}
+ COMPONENT vpp-dev
+ )
+endforeach()
+
+set(VPP_SOURCES
vnet/main.c
app/vpe_cli.c
app/version.c
- oam/oam.c
- oam/oam_api.c
- stats/stats.c
- stats/stat_segment.c
api/api.c
- api/api_main.c
- api/api_format.c
api/json_format.c
- api/custom_dump.c
- api/plugin.c
+ api/types.c
+)
+
+if(VPP_API_TEST_BUILTIN)
+ list(APPEND VPP_SOURCES
+ api/api_format.c
+ api/api_main.c
+ api/plugin.c
+ api/types.c
+ )
+ add_definitions(-DVPP_API_TEST_BUILTIN=1)
+endif()
+
+add_vpp_executable(vpp
+ ENABLE_EXPORTS
+ SOURCES ${VPP_SOURCES}
+ LINK_LIBRARIES svm vlib vppinfra vlibmemory vnet Threads::Threads ${CMAKE_DL_LIBS}
+ DEPENDS vpp_version_h api_headers
)
-target_link_libraries(vpp svm vlib vppinfra vlibmemory vnet Threads::Threads
- ${CMAKE_DL_LIBS})
-add_dependencies(vpp vpp_version_h api_headers)
-set_target_properties(vpp PROPERTIES ENABLE_EXPORTS 1)
-install(TARGETS vpp DESTINATION bin)
##############################################################################
# vppctl binary
##############################################################################
-add_executable(vppctl app/vppctl.c)
-target_link_libraries(vppctl vppinfra)
-install(TARGETS vppctl DESTINATION bin)
+add_vpp_executable(vppctl
+ SOURCES app/vppctl.c
+ LINK_LIBRARIES vppinfra
+)
##############################################################################
# vpp_get_metrics binary
##############################################################################
-add_executable (vpp_get_metrics api/vpp_get_metrics.c ${VPP_API_HDRS})
-target_link_libraries (vpp_get_metrics vppinfra svm svmdb)
-install(TARGETS vpp_get_metrics DESTINATION bin)
+add_vpp_executable(vpp_get_metrics
+ SOURCES api/vpp_get_metrics.c
+ LINK_LIBRARIES vppinfra svm svmdb
+ DEPENDS api_headers
+)
##############################################################################
# stats binaries
##############################################################################
-add_executable(summary_stats_client api/summary_stats_client.c)
-add_executable(stat_client app/stat_client.c)
-add_dependencies(summary_stats_client api_headers)
-add_dependencies(stat_client api_headers)
-target_link_libraries(summary_stats_client vppinfra svm vlibmemoryclient)
-target_link_libraries(stat_client vppinfra svm vlibmemoryclient)
+add_vpp_executable(vpp_get_stats
+ SOURCES app/vpp_get_stats.c
+ LINK_LIBRARIES vppapiclient vppinfra
+ DEPENDS api_headers
+)
+
+add_vpp_executable(vpp_prometheus_export
+ SOURCES app/vpp_prometheus_export.c
+ LINK_LIBRARIES vppapiclient vppinfra svm vlibmemoryclient
+ DEPENDS api_headers
+)
##############################################################################
-# install
+# vppmem_preload library
##############################################################################
+add_vpp_library(vppmem_preload
+ SOURCES mem/mem.c
+ LINK_LIBRARIES vppinfra
+)
+install(FILES conf/startup.conf DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/vpp COMPONENT vpp)
+install(FILES conf/80-vpp.conf DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/sysctl.d COMPONENT vpp)
+
+##############################################################################
+# VAT2 plugins
+##############################################################################
+add_vpp_test_library(vpp
+ ${VPP_API_FILES}
+)
+
+add_vat_test_library(vpp
+ api/api_test.c
+)
+
+##############################################################################
+# minimal interactive startup.conf - only if not present
+##############################################################################
+if(NOT EXISTS ${CMAKE_BINARY_DIR}/startup.conf)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/conf/startup.conf.in
+ ${CMAKE_BINARY_DIR}/startup.conf
+ )
+endif()