aboutsummaryrefslogtreecommitdiffstats
path: root/lib/src/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/CMakeLists.txt')
-rw-r--r--lib/src/CMakeLists.txt145
1 files changed, 108 insertions, 37 deletions
diff --git a/lib/src/CMakeLists.txt b/lib/src/CMakeLists.txt
index 2588bde8b..27446a493 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,124 @@
# 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
+ base.c
+ common.c
+ error.c
+ face.c
+ mapme.c
+ name.c
+ ops.c
+ packet.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
+ util/pool.c
+ util/ring.c
+ util/slab.c
+ util/types.c
+ util/vector.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}
+ PRIVATE "-Wno-address-of-packed-member"
+)
+
+
+##############################################################
+# 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
+)