blob: ce1b59d05d0d45fc73edd5cf9e58016198766451 [file] [log] [blame]
Adrien Béraud53bc4452023-07-12 11:15:13 -04001cmake_minimum_required(VERSION 3.16)
Adrien Béraudd50178b2023-07-09 21:41:12 -04002project(dhtnet
3 VERSION 0.0.1
4 LANGUAGES CXX
5 DESCRIPTION "A C++ library for NAT traversal and secure communication")
Adrien Béraud612b55b2023-05-29 10:42:04 -04006
7set(CMAKE_CXX_STANDARD 17)
8set(CMAKE_CXX_STANDARD_REQUIRED ON)
Adrien Béraudefe27372023-05-27 18:56:29 -04009include(CTest)
Adrien Béraud665d1112023-06-01 19:03:57 -040010include(GNUInstallDirs)
Amna366382f2023-10-02 16:37:02 -040011include(CheckIncludeFileCXX)
Adrien Bérauda4030cd2023-06-21 09:35:40 -040012set (prefix ${CMAKE_INSTALL_PREFIX})
13set (exec_prefix "\${prefix}")
14set (libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
15set (includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
Amnaf38fa102024-02-01 16:39:30 -050016set (bindir "${CMAKE_INSTALL_FULL_BINDIR}")
17set (sysconfdir "${CMAKE_INSTALL_FULL_SYSCONFDIR}")
18set (top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}")
Adrien Béraudd50178b2023-07-09 21:41:12 -040019set (VERSION ${CMAKE_PROJECT_VERSION})
Adrien Béraud612b55b2023-05-29 10:42:04 -040020
Adrien Béraud370257c2023-08-15 20:53:09 -040021option(DHTNET_PUPNP "Enable UPnP support" ON)
22option(DHTNET_NATPMP "Enable NAT-PMP support" ON)
Adrien Beraudb975dbf2023-08-22 17:33:42 -040023option(DHTNET_TESTABLE "Enable API for tests" ON)
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040024option(BUILD_TOOLS "Build tools" ON)
Adrien Béraud6c6a9622023-08-27 12:49:31 -040025option(BUILD_BENCHMARKS "Build benchamrks" ON)
Amna41d76622023-09-20 11:14:27 -040026option(BUILD_DEPENDENCIES "Build dependencies" ON)
Amnaf38fa102024-02-01 16:39:30 -050027option (DNC_SYSTEMD_UNIT_FILE_LOCATION "Where to install systemd unit file")
Amna061ead62024-02-08 16:27:52 -050028option(DNC_SYSTEMD "Enable dnc systemd integration" ON)
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040029
30if (NOT MSVC)
Adrien Béraudb1bcdec2023-11-23 14:45:54 -050031 set(DEPENDENCIES_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/install/${TARGET})
32 message("dependencies path: ${DEPENDENCIES_PATH}")
Amna41d76622023-09-20 11:14:27 -040033 if (BUILD_DEPENDENCIES)
Amnae7711902023-09-28 18:56:36 -040034 find_package(Python3 COMPONENTS Interpreter)
35 execute_process(
36 COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/build.py
37 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies
38 )
Amna41d76622023-09-20 11:14:27 -040039 endif()
Adrien Béraudb1bcdec2023-11-23 14:45:54 -050040 include (GNUInstallDirs)
41 list(APPEND CMAKE_FIND_ROOT_PATH ${DEPENDENCIES_PATH})
42 set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
43 list(APPEND CMAKE_PREFIX_PATH ${DEPENDENCIES_PATH})
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040044 find_package (PkgConfig REQUIRED)
Amna23158302023-12-04 14:08:19 -050045 if(NOT BUILD_SHARED_LIBS)
Adrien Béraudb1bcdec2023-11-23 14:45:54 -050046 list(APPEND PKG_CONFIG_EXECUTABLE "--static")
47 endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040048
Amna366382f2023-10-02 16:37:02 -040049 check_include_file_cxx(msgpack.hpp HAVE_MSGPACKCXX)
50 if (NOT HAVE_MSGPACKCXX)
51 find_package(msgpack QUIET CONFIG NAMES msgpack msgpackc-cxx)
52 if (NOT msgpack_FOUND)
53 find_package(msgpack REQUIRED CONFIG NAMES msgpack-cxx)
54 set(MSGPACK_TARGET "msgpack-cxx")
55 else()
56 set(MSGPACK_TARGET "msgpackc-cxx")
57 endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040058 endif()
Amna05eb28d2024-01-15 15:43:42 -050059
60 if (BUILD_TOOLS)
61 find_package(yaml-cpp REQUIRED)
62 endif()
63
Amna4e52b162024-01-14 21:16:57 -050064 include_directories(${YAML_CPP_INCLUDE_DIR})
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040065 find_package(fmt)
Amna41d76622023-09-20 11:14:27 -040066 pkg_search_module (opendht REQUIRED IMPORTED_TARGET opendht)
67 pkg_search_module (pjproject REQUIRED IMPORTED_TARGET libpjproject)
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040068else()
69 set (WIN32_DEP_DIR ${PROJECT_SOURCE_DIR}/../)
70 include_directories(
71 ${WIN32_DEP_DIR}/../msvc/include
72 ${WIN32_DEP_DIR}/msgpack-c/include
73 ${WIN32_DEP_DIR}/asio/asio/include
74 ${WIN32_DEP_DIR}/fmt/include
75 ${WIN32_DEP_DIR}/pjproject/pjlib/include
76 ${WIN32_DEP_DIR}/pjproject/pjlib-util/include
77 ${WIN32_DEP_DIR}/pjproject/pjnath/include
78 ${WIN32_DEP_DIR}/opendht/include
79 ${WIN32_DEP_DIR}/opendht/src/compat/msvc
80 ${WIN32_DEP_DIR}/openssl/include
81 ${WIN32_DEP_DIR}/restinio/dev
82 ${WIN32_DEP_DIR}/http_parser
83 ${WIN32_DEP_DIR}/pupnp/include
84 ${WIN32_DEP_DIR}/natpmp/include
85 )
86 # windirent.h
87 include_directories(include/compat/msvc)
88endif()
89
90if (NOT MSVC)
91 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
92 -DMSGPACK_NO_BOOST \
93 -DMSGPACK_DISABLE_LEGACY_NIL \
94 -DMSGPACK_DISABLE_LEGACY_CONVERT")
95else()
96 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
97 -DGNUTLS_INTERNAL_BUILD \
98 -D_USE_MATH_DEFINES \
99 -D_SCL_SECURE_NO_WARNINGS \
100 -D_CRT_SECURE_NO_WARNINGS \
101 -D_WINSOCK_DEPRECATED_NO_WARNINGS \
102 -DASIO_STANDALONE \
103 -DWIN32_LEAN_AND_MEAN \
104 -D_WIN32_WINNT=0x0601 \
105 -DNATPMP_STATICLIB \
106 -DMSGPACK_NO_BOOST \
107 -DMSGPACK_DISABLE_LEGACY_NIL \
108 -DMSGPACK_DISABLE_LEGACY_CONVERT \
109 -DUNICODE \
110 -D_UNICODE")
111endif()
Adrien Béraud370257c2023-08-15 20:53:09 -0400112
Amna061ead62024-02-08 16:27:52 -0500113if (DNC_SYSTEMD AND BUILD_TOOLS AND NOT MSVC)
Amnaf38fa102024-02-01 16:39:30 -0500114 if (NOT DEFINED DNC_SYSTEMD_UNIT_FILE_LOCATION OR NOT DNC_SYSTEMD_UNIT_FILE_LOCATION)
Amna061ead62024-02-08 16:27:52 -0500115 execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} systemd --variable=systemdsystemunitdir
116 OUTPUT_VARIABLE SYSTEMD_UNIT_INSTALL_DIR)
117 message("-- Using Systemd unit installation directory by pkg-config: " ${SYSTEMD_UNIT_INSTALL_DIR})
118 else()
119 message("-- Using Systemd unit installation directory requested: " ${DNC_SYSTEMD_UNIT_FILE_LOCATION})
120 set(SYSTEMD_UNIT_INSTALL_DIR ${DNC_SYSTEMD_UNIT_FILE_LOCATION})
121 endif()
Amnaf38fa102024-02-01 16:39:30 -0500122
Amna061ead62024-02-08 16:27:52 -0500123 configure_file (
124 tools/dnc/systemd/dnc.service.in
125 systemd/dnc.service
126 @ONLY
127 )
128 if (SYSTEMD_UNIT_INSTALL_DIR)
129 string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_UNIT_INSTALL_DIR "${SYSTEMD_UNIT_INSTALL_DIR}")
130 set (systemdunitdir "${SYSTEMD_UNIT_INSTALL_DIR}")
131 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/systemd/dnc.service DESTINATION ${systemdunitdir})
132 install (FILES tools/dnc/dnc.yaml DESTINATION ${sysconfdir}/dhtnet/)
133 else()
134 message(WARNING "Systemd unit installation directory not found. The systemd unit won't be installed.")
Amnaf38fa102024-02-01 16:39:30 -0500135 endif()
136endif()
Adrien Béraud612b55b2023-05-29 10:42:04 -0400137# Sources
138list (APPEND dhtnet_SOURCES
139 src/connectionmanager.cpp
140 src/ice_transport.cpp
141 src/multiplexed_socket.cpp
142 src/peer_connection.cpp
143 src/string_utils.cpp
144 src/fileutils.cpp
Adrien Béraud80c14e12023-07-18 16:13:15 -0400145 src/ip_utils.cpp
Adrien Béraud612b55b2023-05-29 10:42:04 -0400146 src/security/tls_session.cpp
147 src/security/certstore.cpp
148 src/security/threadloop.cpp
Adrien Béraud45dfac92023-07-19 00:08:50 -0400149 src/security/diffie-hellman.cpp
Adrien Bérauda1d294f2023-07-17 22:42:13 -0400150 src/turn/turn_cache.cpp
151 src/turn/turn_transport.cpp
Morteza Namvar5f639522023-07-04 17:08:58 -0400152 src/upnp/upnp_context.cpp
153 src/upnp/upnp_control.cpp
154 src/upnp/protocol/mapping.cpp
Adrien Béraud80c14e12023-07-18 16:13:15 -0400155 src/upnp/protocol/igd.cpp
Adrien Béraud612b55b2023-05-29 10:42:04 -0400156)
157
158list (APPEND dhtnet_HEADERS
Adrien Béraud149f29e2023-07-05 14:47:49 -0400159 include/connectionmanager.h
160 include/multiplexed_socket.h
161 include/tls_session.h
162 include/certstore.h
163 include/ice_options.h
Adrien Béraud6de3f882023-07-06 12:56:29 -0400164 include/ice_transport.h
Adrien Béraudcb121f82023-07-08 09:18:39 -0400165 include/ice_transport_factory.h
Adrien Béraudaa8c4422023-07-07 11:40:36 -0400166 include/ice_socket.h
Adrien Béraud149f29e2023-07-05 14:47:49 -0400167 include/fileutils.h
168 include/string_utils.h
169 include/ip_utils.h
170 include/upnp/mapping.h
171 include/upnp/upnp_context.h
172 include/upnp/upnp_control.h
Adrien Béraud612b55b2023-05-29 10:42:04 -0400173)
174
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400175# Port mapping dependencies - add sources and libraries
176if (DHTNET_PUPNP AND NOT MSVC)
Adrien Béraud370257c2023-08-15 20:53:09 -0400177 pkg_search_module (upnp IMPORTED_TARGET upnp libupnp)
178 if (NOT upnp_FOUND)
179 message("libupnp not found: disabling")
180 set(DHTNET_PUPNP Off)
Adrien Béraud6c6a9622023-08-27 12:49:31 -0400181 else()
182 set(upnp_LIBRARIES PkgConfig::upnp)
Adrien Béraud0e6730e2023-08-29 14:12:52 -0400183 set (requiresprivate "${requiresprivate} libupnp")
Adrien Béraud370257c2023-08-15 20:53:09 -0400184 endif()
185endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400186if (DHTNET_NATPMP AND NOT MSVC)
Adrien Béraud370257c2023-08-15 20:53:09 -0400187 pkg_search_module (natpmp IMPORTED_TARGET natpmp)
188 if (NOT natpmp_FOUND)
189 find_library(natpmp_LIBRARIES natpmp)
190 if (NOT natpmp_LIBRARIES)
191 message("NAT-PMP not found: disabling")
192 set(DHTNET_NATPMP Off)
193 else()
194 message("NAT-PMP found: ${natpmp_LIBRARIES}")
Adrien Béraud0e6730e2023-08-29 14:12:52 -0400195 set (libsprivate "${libsprivate} -lnatpmp")
Adrien Béraud370257c2023-08-15 20:53:09 -0400196 endif()
197 endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400198endif()
199
200if (DHTNET_PUPNP)
201 list (APPEND dhtnet_PRIVATE_DEFS HAVE_LIBUPNP)
202 list (APPEND dhtnet_SOURCES
203 src/upnp/protocol/pupnp/pupnp.cpp
204 src/upnp/protocol/pupnp/upnp_igd.cpp
205 )
206 list (APPEND dhtnet_PRIVATELIBS ${upnp_LIBRARIES})
207endif()
208if (DHTNET_NATPMP)
209 list (APPEND dhtnet_PRIVATE_DEFS HAVE_LIBNATPMP)
210 list (APPEND dhtnet_SOURCES
211 src/upnp/protocol/natpmp/nat_pmp.cpp
212 src/upnp/protocol/natpmp/pmp_igd.cpp
213 )
214 list (APPEND dhtnet_PRIVATELIBS ${natpmp_LIBRARIES})
Adrien Béraud370257c2023-08-15 20:53:09 -0400215endif()
216
Adrien Béraud612b55b2023-05-29 10:42:04 -0400217add_library(dhtnet ${dhtnet_SOURCES})
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400218if (NOT MSVC)
219 target_link_libraries(dhtnet PUBLIC PkgConfig::opendht PkgConfig::pjproject fmt::fmt ${MSGPACK_LIB})
220else()
221 target_link_libraries(dhtnet PUBLIC
222 ${WIN32_DEP_DIR}/../msvc/lib/libopendht.lib
223 ${WIN32_DEP_DIR}/../msvc/lib/libpjproject.lib
224 ${WIN32_DEP_DIR}/../msvc/lib/libfmt.lib
225 ${WIN32_DEP_DIR}/../msvc/lib/libmsgpackc-cxx.lib)
226endif()
Amna366382f2023-10-02 16:37:02 -0400227if (NOT HAVE_MSGPACKCXX)
Adrien Béraud62aefa62023-10-05 22:30:09 -0400228 target_link_libraries(dhtnet PUBLIC ${MSGPACK_TARGET})
Amna366382f2023-10-02 16:37:02 -0400229endif()
Adrien Béraud06271002023-07-27 15:52:29 -0400230if (APPLE)
Adrien Béraud08548d92023-07-27 16:02:48 -0400231 target_link_libraries(dhtnet PRIVATE "-framework CoreFoundation" "-framework Security" "resolv")
Adrien Béraud06271002023-07-27 15:52:29 -0400232endif()
233
Adrien Béraud665d1112023-06-01 19:03:57 -0400234target_include_directories(dhtnet PUBLIC
235 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
236 $<INSTALL_INTERFACE:include>
237)
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400238
239target_compile_definitions(dhtnet PRIVATE ${dhtnet_PRIVATE_DEFS})
240target_link_libraries(dhtnet PRIVATE ${dhtnet_PRIVATELIBS})
241if (MSVC)
242 target_compile_definitions(dhtnet PRIVATE
243 _CRT_SECURE_NO_WARNINGS
244 _WINSOCK_DEPRECATED_NO_WARNINGS
245 ASIO_STANDALONE
246 _WIN32_WINNT=0x0601
247 MSGPACK_NO_BOOST
248 MSGPACK_DISABLE_LEGACY_NIL
249 MSGPACK_DISABLE_LEGACY_CONVERT
250 DHTNET_STATIC
251 DHTNET_STATIC_DEFINE
252 DHTNET_EXPORTS
253 DHTNET_BUILDING
254 DHT)
255 target_compile_options(dhtnet PRIVATE
256 /O2; /Oi; ${DEFAULT_CXX_RUNTIME_LIBRARY}; /Gy; /MP; /Oy-; /sdl-; /W0;
257 /FC; /FS; /nologo; /Zi; /wd4996; /wd4503; /wd4180; /wd4244; /wd4267;
258 /Zc:__cplusplus;
259 ${DEFAULT_CXX_EXCEPTION_HANDLING})
260else()
261 target_compile_definitions(dhtnet PUBLIC PJ_AUTOCONF=1)
Adrien Béraud370257c2023-08-15 20:53:09 -0400262endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400263
264if (BUILD_TESTING AND NOT MSVC)
Adrien Béraud6b6a5d32023-08-15 15:53:33 -0400265 target_compile_definitions(dhtnet PUBLIC DHTNET_TESTABLE)
266endif()
Adrien Bérauda4030cd2023-06-21 09:35:40 -0400267
268configure_file(dhtnet.pc.in dhtnet.pc @ONLY)
269
Adrien Bérauda4030cd2023-06-21 09:35:40 -0400270# Install targets
Adrien Béraud13e33432023-07-18 14:49:35 -0400271install(TARGETS dhtnet)
Adrien Béraud149f29e2023-07-05 14:47:49 -0400272install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dhtnet)
Adrien Béraud13e33432023-07-18 14:49:35 -0400273install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dhtnet.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
Adrien Bérauda4030cd2023-06-21 09:35:40 -0400274
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400275if (BUILD_TOOLS AND NOT MSVC)
Amna38768302023-08-21 11:51:56 -0400276 add_executable(dnc
277 tools/dnc/main.cpp
278 tools/dnc/dnc.cpp
Amna423b25b2024-02-06 13:21:19 -0500279 tools/common.cpp
280 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
Amna41848a22024-01-22 16:22:57 -0500281 target_link_libraries(dnc PRIVATE dhtnet fmt::fmt yaml-cpp)
Amna38768302023-08-21 11:51:56 -0400282 target_include_directories(dnc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
283 install(TARGETS dnc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Adrien Béraudb75ab9d2023-08-23 09:26:58 -0400284
Amna4a70f5c2023-09-14 17:32:05 -0400285 add_executable(dsh
286 tools/dsh/main.cpp
287 tools/dsh/dsh.cpp
Amna423b25b2024-02-06 13:21:19 -0500288 tools/common.cpp
289 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
Amna41848a22024-01-22 16:22:57 -0500290 target_link_libraries(dsh PRIVATE dhtnet fmt::fmt yaml-cpp)
Amna4e52b162024-01-14 21:16:57 -0500291 target_include_directories(dsh PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
Amna4a70f5c2023-09-14 17:32:05 -0400292 install(TARGETS dsh RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
293
Amna4e52b162024-01-14 21:16:57 -0500294 add_executable(dvpn
295 tools/dvpn/main.cpp
296 tools/dvpn/dvpn.cpp
Amna423b25b2024-02-06 13:21:19 -0500297 tools/common.cpp
298 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
Amna4e52b162024-01-14 21:16:57 -0500299 target_link_libraries(dvpn PRIVATE dhtnet fmt::fmt yaml-cpp)
300 target_include_directories(dvpn PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
301 install(TARGETS dvpn RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
302
Adrien Béraudbd09c992023-09-20 11:55:37 -0400303 find_library(READLINE_LIBRARIES readline)
304 find_path(READLINE_INCLUDE_DIR readline/readline.h)
305 add_library(readline STATIC IMPORTED)
306 set_target_properties(readline PROPERTIES
307 IMPORTED_LOCATION "${READLINE_LIBRARIES}"
308 INTERFACE_INCLUDE_DIRECTORIES "${READLINE_INCLUDE_DIR}")
Adrien Béraudb75ab9d2023-08-23 09:26:58 -0400309 add_executable(upnpctrl
310 tools/upnp/upnpctrl.cpp)
311 target_link_libraries(upnpctrl PRIVATE dhtnet fmt::fmt readline)
312 target_include_directories(upnpctrl PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
313 install(TARGETS upnpctrl RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Amnab10c6e72023-09-25 11:12:35 -0400314
Amna423b25b2024-02-06 13:21:19 -0500315 add_executable(dhtnet-crtmgr
316 tools/dhtnet_crtmgr/main.cpp
317 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
318 target_link_libraries(dhtnet-crtmgr PRIVATE dhtnet fmt::fmt)
319 target_include_directories(dhtnet-crtmgr PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
320 install(TARGETS dhtnet-crtmgr RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
321
Amnab10c6e72023-09-25 11:12:35 -0400322 install(FILES
323 tools/dnc/dnc.1
324 tools/dsh/dsh.1
325 DESTINATION ${CMAKE_INSTALL_MANDIR})
Amna38768302023-08-21 11:51:56 -0400326endif()
327
Adrien Béraud6c6a9622023-08-27 12:49:31 -0400328if (BUILD_BENCHMARKS)
329 add_executable(bench
330 tools/benchmark/main.cpp
331 tools/common.cpp)
332 target_link_libraries(bench PRIVATE dhtnet fmt::fmt)
333 target_include_directories(bench PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
334 install(TARGETS bench RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
335endif()
336
Adrien Béraudefe27372023-05-27 18:56:29 -0400337if (BUILD_TESTING AND NOT MSVC)
338 pkg_search_module(Cppunit REQUIRED IMPORTED_TARGET cppunit)
339 add_executable(tests_certstore tests/certstore.cpp)
340 target_link_libraries(tests_certstore PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
341 add_test(NAME tests_certstore COMMAND tests_certstore)
342
343 add_executable(tests_connectionManager tests/connectionManager.cpp)
344 target_link_libraries(tests_connectionManager PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
345 add_test(NAME tests_connectionManager COMMAND tests_connectionManager)
346
Adrien Béraud2a4e73d2023-08-27 12:53:55 -0400347 add_executable(tests_fileutils tests/testFileutils.cpp)
348 target_link_libraries(tests_fileutils PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
349 add_test(NAME tests_fileutils COMMAND tests_fileutils)
Adrien Béraudefe27372023-05-27 18:56:29 -0400350
351 #add_executable(tests_stringutils tests/testString_utils.cpp)
352 #target_link_libraries(tests_stringutils PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
353 #add_test(NAME tests_stringutils COMMAND tests_stringutils)
Amnaf38fa102024-02-01 16:39:30 -0500354endif()