blob: 7084b4b5b0175d519de8e8930055c350f7441c3c [file] [log] [blame]
Adrien Béraud665d1112023-06-01 19:03:57 -04001cmake_minimum_required(VERSION 3.22)
Adrien Béraud612b55b2023-05-29 10:42:04 -04002project(dhtnet)
3
4set(CMAKE_CXX_STANDARD 17)
5set(CMAKE_CXX_STANDARD_REQUIRED ON)
Adrien Béraudefe27372023-05-27 18:56:29 -04006include(CTest)
Adrien Béraud665d1112023-06-01 19:03:57 -04007include(GNUInstallDirs)
Adrien Béraud612b55b2023-05-29 10:42:04 -04008
9find_package (PkgConfig REQUIRED)
10find_package(msgpack REQUIRED QUIET CONFIG NAMES msgpack msgpack-cxx)
Adrien Béraudefe27372023-05-27 18:56:29 -040011find_package(fmt)
Adrien Béraud612b55b2023-05-29 10:42:04 -040012pkg_check_modules (opendht REQUIRED IMPORTED_TARGET opendht>=2.6.0)
13pkg_check_modules (pjproject REQUIRED IMPORTED_TARGET libpjproject)
14
15set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMSGPACK_NO_BOOST -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT")
16
17# Sources
18list (APPEND dhtnet_SOURCES
19 src/connectionmanager.cpp
20 src/ice_transport.cpp
21 src/multiplexed_socket.cpp
22 src/peer_connection.cpp
23 src/string_utils.cpp
24 src/fileutils.cpp
25 src/security/tls_session.cpp
26 src/security/certstore.cpp
27 src/security/threadloop.cpp
28)
29
30list (APPEND dhtnet_HEADERS
31 include/connectionmanager.h
32 include/multiplexed_socket.h
33)
34
35add_library(dhtnet ${dhtnet_SOURCES})
Adrien Béraudefe27372023-05-27 18:56:29 -040036target_link_libraries(dhtnet PUBLIC PkgConfig::opendht fmt::fmt msgpack-cxx)
Adrien Béraud665d1112023-06-01 19:03:57 -040037target_include_directories(dhtnet PUBLIC
38 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
39 $<INSTALL_INTERFACE:include>
40)
41target_compile_definitions(dhtnet PUBLIC PJ_AUTOCONF=1)
42
43install(TARGETS dhtnet)
Adrien Béraudefe27372023-05-27 18:56:29 -040044
45if (BUILD_TESTING AND NOT MSVC)
46 pkg_search_module(Cppunit REQUIRED IMPORTED_TARGET cppunit)
47 add_executable(tests_certstore tests/certstore.cpp)
48 target_link_libraries(tests_certstore PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
49 add_test(NAME tests_certstore COMMAND tests_certstore)
50
51 add_executable(tests_connectionManager tests/connectionManager.cpp)
52 target_link_libraries(tests_connectionManager PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
53 add_test(NAME tests_connectionManager COMMAND tests_connectionManager)
54
55 #add_executable(tests_fileutils tests/testFileutils.cpp)
56 #target_link_libraries(tests_fileutils PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
57 #add_test(NAME tests_fileutils COMMAND tests_fileutils)
58
59 #add_executable(tests_stringutils tests/testString_utils.cpp)
60 #target_link_libraries(tests_stringutils PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
61 #add_test(NAME tests_stringutils COMMAND tests_stringutils)
62endif()