diff options
Diffstat (limited to 'libtransport/CMakeLists.txt')
-rw-r--r-- | libtransport/CMakeLists.txt | 160 |
1 files changed, 49 insertions, 111 deletions
diff --git a/libtransport/CMakeLists.txt b/libtransport/CMakeLists.txt index 28124b26e..62c0c0788 100644 --- a/libtransport/CMakeLists.txt +++ b/libtransport/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017-2019 Cisco and/or its affiliates. +# Copyright (c) 2021-2022 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: @@ -11,89 +11,70 @@ # See the License for the specific language governing permissions and # limitations under the License. -cmake_minimum_required(VERSION 3.5 FATAL_ERROR) - +############################################################## +# Project and cmake version +############################################################## +# CMake 3.11 required to use FetchContent +cmake_minimum_required(VERSION 3.11 FATAL_ERROR) project(libtransport) + +############################################################## +# Cmake modules +############################################################## set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" + ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules ) +include("${CMAKE_CURRENT_SOURCE_DIR}/../versions.cmake") -include(DefaultConfiguration) -include(BuildMacros) -if (NOT CMAKE_BUILD_TYPE) - message(STATUS "${PROJECT_NAME}: No build type selected, default to Release") - set(CMAKE_BUILD_TYPE "Release") -endif () +############################################################## +# C/CXX Standard +############################################################## +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_C_STANDARD 11) -######################################### -# LOG LEVELS AVAILABLE -# VERBOSE -# DEBUG -# INFO -# WARN -# ERROR -# FATAL -# NONE -# -# Default: INFO -set(TRANSPORT_LOG_LEVEL "INFO" CACHE STRING "Set log level") - -set(TRANSPORT_ROOT_PATH "src") - -set(TRANSPORT_CORE ${TRANSPORT_ROOT_PATH}/core) -set(TRANSPORT_TRANSPORT ${TRANSPORT_ROOT_PATH}/transport) -set(TRANSPORT_ERRORS ${TRANSPORT_ROOT_PATH}/errors) -set(TRANSPORT_UTILS ${TRANSPORT_ROOT_PATH}/utils) -set(TRANSPORT_HTTP ${TRANSPORT_ROOT_PATH}/http) -set(TRANSPORT_PORTABILITY ${TRANSPORT_ROOT_PATH}/portability) -set(TRANSPORT_INTERFACES ${TRANSPORT_ROOT_PATH}/interfaces) +############################################################## +# Libs and Bins names +############################################################## set(LIBTRANSPORT hicntransport) +set(LIBTRANSPORT_COMPONENT lib${LIBTRANSPORT}) + if ((BUILD_HICNPLUGIN OR BUILD_MEMIF_CONNECTOR) AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") set(__vpp__ 1) - set(LIBTRANSPORT ${LIBTRANSPORT}-memif) - find_package(Vpp REQUIRED) - - list(APPEND LIBTRANSPORT_INTERNAL_INCLUDE_DIRS - ${VPP_INCLUDE_DIRS} - ) endif () set(LIBTRANSPORT ${LIBTRANSPORT} CACHE INTERNAL "" FORCE) set(LIBTRANSPORT_SHARED ${LIBTRANSPORT}.shared CACHE INTERNAL "" FORCE) set(LIBTRANSPORT_STATIC ${LIBTRANSPORT}.static CACHE INTERNAL "" FORCE) -set(LIBTRANSPORT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src CACHE INTERNAL "" FORCE) -include(WindowsMacros) -include(IosMacros) -find_package_wrapper(Libparc REQUIRED) -find_package_wrapper(Asio REQUIRED) -find_package(OpenSSL REQUIRED) -if (${OPENSSL_VERSION} VERSION_EQUAL "1.1.1a" OR ${OPENSSL_VERSION} VERSION_GREATER "1.1.1a") - set(SECURE_HICNTRANSPORT 1) -endif() +############################################################## +# Dependencies and third party libs +############################################################## +find_package(Asio ${ASIO_DEFAULT_VERSION} REQUIRED) +find_package(OpenSSL ${OPENSSL_DEFAULT_VERSION} EXACT REQUIRED) +find_package(Threads REQUIRED) +find_package(Libconfig++ ${LIBCONFIG_DEFAULT_VERSION} REQUIRED) +add_subdirectory(third-party) -if (__vpp__) - find_package(Libmemif REQUIRED) -endif() +############################################################## +# Check if building as subproject or as root project +############################################################## if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) - if (__vpp__) - find_package(HicnPlugin REQUIRED) - find_package(SafeVapi REQUIRED) + include(CommonSetup) + find_package(Libhicn ${CURRENT_VERSION} REQUIRED NO_MODULE) - list(APPEND LIBRARIES - ${LIBMEMIF_LIBRARIES} - ${SAFE_VAPI_LIBRARIES} - ) + if (DISABLE_SHARED_LIBRARIES) + set(LIBTYPE static) + else() + set(LIBTYPE shared) endif() - find_package_wrapper(Libhicn REQUIRED) + list(APPEND HICN_LIBRARIES hicn::hicn.${LIBTYPE}) else() if (DISABLE_SHARED_LIBRARIES) if (WIN32) @@ -109,62 +90,19 @@ else() list(APPEND DEPENDENCIES ${LIBHICN_SHARED} ) - - if (__vpp__) - list(APPEND DEPENDENCIES - ${SAFE_VAPI_SHARED} - ) - - list(APPEND LIBRARIES - ${LIBMEMIF_LIBRARIES} - ${SAFE_VAPI_LIBRARIES} - ) - endif() endif() endif() -list(APPEND LIBTRANSPORT_INTERNAL_INCLUDE_DIRS - ${LIBMEMIF_INCLUDE_DIRS} - ${SAFE_VAPI_INCLUDE_DIRS} -) -include(Packaging) +############################################################## +# Packaging and versioning +############################################################## +include(${CMAKE_CURRENT_SOURCE_DIR}/../versions.cmake) +include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/packaging.cmake) -find_package(Threads REQUIRED) - -if (${COMPILE_TESTS}) - include(TestMacros) - find_package(GTest REQUIRED) - list(APPEND LIBTRANSPORT_INTERNAL_INCLUDE_DIRS - ${GTEST_INCLUDE_DIRS} - ) -endif() - -if(${CMAKE_SYSTEM_NAME} STREQUAL "Android") - find_package(OpenSSL REQUIRED) -endif () - -list(APPEND LIBRARIES - ${HICN_LIBRARIES} - ${LIBPARC_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} - ${VPP_LIBRARIES} - ${ANDROID_LIBRARIES} - ${OPENSSL_LIBRARIES} - ${WINDOWS_LIBRARIES} - ${LIBHICNCTRL_LIBRARIES} -) - -# Include dirs -- Order does matter! -list(APPEND LIBTRANSPORT_INTERNAL_INCLUDE_DIRS - ${HICN_INCLUDE_DIRS} - ${HICNPLUGIN_INCLUDE_DIRS} - ${LIBPARC_INCLUDE_DIRS} - ${CMAKE_THREADS_INCLUDE_DIRS} - ${ASIO_INCLUDE_DIRS} - ${WINDOWS_INCLUDE_DIRS} - ${OPENSSL_INCLUDE_DIR} -) +############################################################## +# Subdirectories +############################################################## add_subdirectory(includes/hicn/transport) -add_subdirectory(${TRANSPORT_ROOT_PATH}) +add_subdirectory(src) |