diff options
Diffstat (limited to 'lib/src/CMakeLists.txt')
-rw-r--r-- | lib/src/CMakeLists.txt | 138 |
1 files changed, 101 insertions, 37 deletions
diff --git a/lib/src/CMakeLists.txt b/lib/src/CMakeLists.txt index 2588bde8b..ef74127cc 100644 --- a/lib/src/CMakeLists.txt +++ b/lib/src/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,53 +11,117 @@ # See the License for the specific language governing permissions and # limitations under the License. +############################################################## +# Source and Header files +############################################################## list(APPEND LIBHICN_SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/common.c - ${CMAKE_CURRENT_SOURCE_DIR}/compat.c - ${CMAKE_CURRENT_SOURCE_DIR}/error.c - ${CMAKE_CURRENT_SOURCE_DIR}/mapme.c - ${CMAKE_CURRENT_SOURCE_DIR}/name.c - ${CMAKE_CURRENT_SOURCE_DIR}/ops.c - ${CMAKE_CURRENT_SOURCE_DIR}/policy.c - ${CMAKE_CURRENT_SOURCE_DIR}/protocol/ah.c - ${CMAKE_CURRENT_SOURCE_DIR}/protocol/icmp.c - ${CMAKE_CURRENT_SOURCE_DIR}/protocol/ipv4.c - ${CMAKE_CURRENT_SOURCE_DIR}/protocol/ipv6.c - ${CMAKE_CURRENT_SOURCE_DIR}/protocol/tcp.c - ${CMAKE_CURRENT_SOURCE_DIR}/util/ip_address.c - ${CMAKE_CURRENT_SOURCE_DIR}/util/log.c + common.c + compat.c + error.c + face.c + mapme.c + name.c + ops.c + policy.c + strategy.c + protocol/ah.c + protocol/icmp.c + protocol/ipv4.c + protocol/ipv6.c + protocol/tcp.c + protocol/udp.c + protocol/new.c + util/ip_address.c + util/log.c ) if (WIN32) list(APPEND LIBHICN_SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/util/windows/dlfcn.c + util/windows/dlfcn.c ) endif () -set (COMPILER_DEFINITIONS "-DWITH_MAPME") + +############################################################## +# Compiler definitions +############################################################## +set (COMPILER_DEFINITIONS + PUBLIC "-DWITH_MAPME" + PUBLIC "-DWITH_POLICY" +) include(BuildMacros) include(WindowsMacros) -if (DISABLE_SHARED_LIBRARIES) - build_library(${LIBHICN} - STATIC - SOURCES ${LIBHICN_SOURCE_FILES} ${LIBHICN_HEADER_FILES} ${LIBHICN_HEADER_FILES_PROTOCOL} ${LIBHICN_HEADER_FILES_UTIL} - COMPONENT lib${LIBHICN} - INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../includes - DEFINITIONS ${COMPILER_DEFINITIONS} - HEADER_ROOT_DIR hicn - INSTALL_HEADERS ${LIBHICN_HEADER_FILES} ${LIBHICN_HEADER_FILES_PROTOCOL} ${LIBHICN_HEADER_FILES_UTIL} - LINK_LIBRARIES ${WSOCK32_LIBRARY} ${WS2_32_LIBRARY} +############################################################## +# Build type +############################################################## +set (BUILD_TYPES "STATIC") + +if (NOT DISABLE_SHARED_LIBRARIES) + list(APPEND BUILD_TYPES + "SHARED" ) -else () - build_library(${LIBHICN} - SHARED STATIC - SOURCES ${LIBHICN_SOURCE_FILES} ${LIBHICN_HEADER_FILES} ${LIBHICN_HEADER_FILES_PROTOCOL} ${LIBHICN_HEADER_FILES_UTIL} - COMPONENT lib${LIBHICN} - INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../includes - DEFINITIONS ${COMPILER_DEFINITIONS} - HEADER_ROOT_DIR hicn - INSTALL_HEADERS ${LIBHICN_HEADER_FILES} ${LIBHICN_HEADER_FILES_PROTOCOL} ${LIBHICN_HEADER_FILES_UTIL} - LINK_LIBRARIES ${WSOCK32_LIBRARY} ${WS2_32_LIBRARY} +endif() + + +############################################################## +# Compiler Options +############################################################## +set(COMPILER_OPTIONS + ${DEFAULT_COMPILER_OPTIONS} +) + + +############################################################## +# Link libraries +############################################################## +if (WIN32) + list(APPEND LIBRARIES + PRIVATE ${WSOCK32_LIBRARY} + PRIVATE ${WS2_32_LIBRARY} ) endif () + + +############################################################## +# Build library +############################################################## +build_library(${LIBHICN} + ${BUILD_TYPES} + SOURCES ${LIBHICN_SOURCE_FILES} + COMPONENT ${LIBHICN_COMPONENT} + INCLUDE_DIRS + PUBLIC + $<BUILD_INTERFACE:${Libhicn_INCLUDE_DIRS}> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> + $<BUILD_INTERFACE:${THIRD_PARTY_INCLUDE_DIRS}> + DEFINITIONS ${COMPILER_DEFINITIONS} + INSTALL_HEADERS ${LIBHICN_HEADER_FILES} ${LIBHICN_HEADER_FILES_PROTOCOL} ${LIBHICN_HEADER_FILES_UTIL} + DEPENDS ${THIRD_PARTY_DEPENDENCIES} + LINK_LIBRARIES + PRIVATE ${WSOCK32_LIBRARY} + PRIVATE ${WS2_32_LIBRARY} + PUBLIC ${THIRD_PARTY_LIBRARIES} + VERSION ${CURRENT_VERSION} + EXPORT_NAME ${LIBHICN_COMPONENT} + COMPILE_OPTIONS ${COMPILER_OPTIONS} +) + +############################################################## +# Unit tests +############################################################## +if (${BUILD_TESTS}) + add_subdirectory(test) +endif() + + +############################################################## +# Cmake config files +############################################################## +create_cmake_config ( + ${LIBHICN_COMPONENT} + INCLUDE_DIRS ${HICN_INCLUDE_DIRS} + VERSION ${CURRENT_VERSION} + COMPONENT ${LIBHICN_COMPONENT} + NAMESPACE hicn +) |