
FreeBSD doesn't offer epoll, but an implementation which uses kqueue is available as an external library. On FreeBSD in subsystems which require epoll have cmake look for libepoll-shim. Type: improvement Change-Id: Iafd5406a9e2ebaa53fd94034489ffbbf87a7d040 Signed-off-by: Tom Jones <thj@freebsd.org>
160 lines
4.7 KiB
CMake
160 lines
4.7 KiB
CMake
# 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()
|