| # Copyright (c) 2018 Cisco and/or its affiliates. |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at: |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| ############################################################################## |
| # Generate vpp/app/version.h |
| ############################################################################## |
| add_custom_command( |
| OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/app/version.h |
| WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
| COMMAND mkdir |
| ARGS -p ${CMAKE_CURRENT_BINARY_DIR}/app |
| COMMAND scripts/generate_version_h |
| ARGS ${CMAKE_CURRENT_BINARY_DIR}/app/version.h |
| COMMENT "Generating VPP version.h" |
| ) |
| |
| add_custom_target(vpp_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 |
| ) |
| |
| 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 |
| ) |
| |
| 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 |
| api/api.c |
| api/json_format.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} ${EPOLL_LIB} |
| DEPENDS vpp_version_h api_headers |
| ) |
| |
| ############################################################################## |
| # vppctl binary |
| ############################################################################## |
| add_vpp_executable(vppctl |
| SOURCES app/vppctl.c |
| LINK_LIBRARIES vppinfra ${EPOLL_LIB} |
| ) |
| |
| ############################################################################## |
| # vpp_get_metrics binary |
| ############################################################################## |
| add_vpp_executable(vpp_get_metrics |
| SOURCES api/vpp_get_metrics.c |
| LINK_LIBRARIES vppinfra svm svmdb |
| DEPENDS api_headers |
| ) |
| |
| ############################################################################## |
| # stats binaries |
| ############################################################################## |
| 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 ${EPOLL_LIB} |
| DEPENDS api_headers |
| ) |
| |
| ############################################################################## |
| # 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() |