# Copyright (c) 2021-2023 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. ############################################################## # Libs and Bins names ############################################################## set(SAFE_VAPI safevapi CACHE INTERNAL "" FORCE) set(SAFE_VAPI_SHARED ${SAFE_VAPI}.shared CACHE INTERNAL "" FORCE) set(SAFE_VAPI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/includes CACHE INTERNAL "" FORCE) set(SAFE_VAPI_LIBRARIES ${SAFE_VAPI_SHARED} CACHE INTERNAL "" FORCE) ############################################################## # C/CXX Standard ############################################################## set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11) ############################################################## # Dependencies and third party libs ############################################################## find_package(Vpp ${VPP_DEFAULT_VERSION} EXACT REQUIRED) find_package(Asio ${ASIO_DEFAULT_VERSION} REQUIRED) ############################################################## # Check if building as subproject or as root project ############################################################## if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) include(CommonSetup) find_package(HicnPlugin ${CURRENT_VERSION} EXACT REQUIRED) else() list(APPEND DEPENDENCIES ${HICNPLUGIN_SHARED} ) endif() ############################################################## # Sources ############################################################## list(APPEND HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/includes/vapi/vapi_safe.h ) list(APPEND SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/vapi_safe.cc ) ############################################################## # Compiler Options ############################################################## set(COMPILER_OPTIONS ${DEFAULT_COMPILER_OPTIONS} ${MARCH_COMPILER_OPTIONS} ) ############################################################## # Libraries to link ############################################################## set (LIBRARIES ${VPP_LIBRARY_VAPICLIENT} ) ############################################################## # Include directories ############################################################## list (APPEND INCLUDE_DIRS PUBLIC $ $ $ $ $ ) ############################################################## # Compiler definitions ############################################################## list(APPEND COMPILER_DEFINITIONS PUBLIC "-DASIO_STANDALONE" ) ############################################################## # Build library ############################################################## build_library(${SAFE_VAPI} SHARED SOURCES ${SOURCE_FILES} ${HEADER_FILES} INSTALL_HEADERS ${HEADER_FILES} LINK_LIBRARIES PRIVATE ${LIBRARIES} COMPONENT ${HICN_PLUGIN} INCLUDE_DIRS ${INCLUDE_DIRS} HEADER_ROOT_DIR "" DEFINITIONS PRIVATE ${COMPILER_DEFINITIONS} DEPENDS ${DEPENDENCIES} VERSION ${CURRENT_VERSION} EXPORT_NAME "libsafevapi" COMPILE_OPTIONS ${COMPILER_OPTIONS} ) ############################################################## # Create cmake configuration ############################################################## create_cmake_config ( "libsafevapi" INCLUDE_DIRS ${SAFE_VAPI_INCLUDE_DIRS} VERSION ${CURRENT_VERSION} COMPONENT ${HICN_PLUGIN} NAMESPACE hicn )