blob: 74f6741f06e41f25d2ef191f56461e755c5d7ca9 [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 "Enable dnc systemd integration" ON)
28option (DNC_SYSTEMD_UNIT_FILE_LOCATION "Where to install systemd unit file")
29
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040030
31if (NOT MSVC)
Adrien Béraudb1bcdec2023-11-23 14:45:54 -050032 set(DEPENDENCIES_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/install/${TARGET})
33 message("dependencies path: ${DEPENDENCIES_PATH}")
Amna41d76622023-09-20 11:14:27 -040034 if (BUILD_DEPENDENCIES)
Amnae7711902023-09-28 18:56:36 -040035 find_package(Python3 COMPONENTS Interpreter)
36 execute_process(
37 COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/build.py
38 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies
39 )
Amna41d76622023-09-20 11:14:27 -040040 endif()
Adrien Béraudb1bcdec2023-11-23 14:45:54 -050041 include (GNUInstallDirs)
42 list(APPEND CMAKE_FIND_ROOT_PATH ${DEPENDENCIES_PATH})
43 set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
44 list(APPEND CMAKE_PREFIX_PATH ${DEPENDENCIES_PATH})
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040045 find_package (PkgConfig REQUIRED)
Amna23158302023-12-04 14:08:19 -050046 if(NOT BUILD_SHARED_LIBS)
Adrien Béraudb1bcdec2023-11-23 14:45:54 -050047 list(APPEND PKG_CONFIG_EXECUTABLE "--static")
48 endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040049
Amna366382f2023-10-02 16:37:02 -040050 check_include_file_cxx(msgpack.hpp HAVE_MSGPACKCXX)
51 if (NOT HAVE_MSGPACKCXX)
52 find_package(msgpack QUIET CONFIG NAMES msgpack msgpackc-cxx)
53 if (NOT msgpack_FOUND)
54 find_package(msgpack REQUIRED CONFIG NAMES msgpack-cxx)
55 set(MSGPACK_TARGET "msgpack-cxx")
56 else()
57 set(MSGPACK_TARGET "msgpackc-cxx")
58 endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040059 endif()
Amna05eb28d2024-01-15 15:43:42 -050060
61 if (BUILD_TOOLS)
62 find_package(yaml-cpp REQUIRED)
63 endif()
64
Amna4e52b162024-01-14 21:16:57 -050065 include_directories(${YAML_CPP_INCLUDE_DIR})
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040066 find_package(fmt)
Amna41d76622023-09-20 11:14:27 -040067 pkg_search_module (opendht REQUIRED IMPORTED_TARGET opendht)
68 pkg_search_module (pjproject REQUIRED IMPORTED_TARGET libpjproject)
Andreas Traczyk24cc01e2023-08-23 18:55:15 -040069else()
70 set (WIN32_DEP_DIR ${PROJECT_SOURCE_DIR}/../)
71 include_directories(
72 ${WIN32_DEP_DIR}/../msvc/include
73 ${WIN32_DEP_DIR}/msgpack-c/include
74 ${WIN32_DEP_DIR}/asio/asio/include
75 ${WIN32_DEP_DIR}/fmt/include
76 ${WIN32_DEP_DIR}/pjproject/pjlib/include
77 ${WIN32_DEP_DIR}/pjproject/pjlib-util/include
78 ${WIN32_DEP_DIR}/pjproject/pjnath/include
79 ${WIN32_DEP_DIR}/opendht/include
80 ${WIN32_DEP_DIR}/opendht/src/compat/msvc
81 ${WIN32_DEP_DIR}/openssl/include
82 ${WIN32_DEP_DIR}/restinio/dev
83 ${WIN32_DEP_DIR}/http_parser
84 ${WIN32_DEP_DIR}/pupnp/include
85 ${WIN32_DEP_DIR}/natpmp/include
86 )
87 # windirent.h
88 include_directories(include/compat/msvc)
89endif()
90
91if (NOT MSVC)
92 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
93 -DMSGPACK_NO_BOOST \
94 -DMSGPACK_DISABLE_LEGACY_NIL \
95 -DMSGPACK_DISABLE_LEGACY_CONVERT")
96else()
97 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
98 -DGNUTLS_INTERNAL_BUILD \
99 -D_USE_MATH_DEFINES \
100 -D_SCL_SECURE_NO_WARNINGS \
101 -D_CRT_SECURE_NO_WARNINGS \
102 -D_WINSOCK_DEPRECATED_NO_WARNINGS \
103 -DASIO_STANDALONE \
104 -DWIN32_LEAN_AND_MEAN \
105 -D_WIN32_WINNT=0x0601 \
106 -DNATPMP_STATICLIB \
107 -DMSGPACK_NO_BOOST \
108 -DMSGPACK_DISABLE_LEGACY_NIL \
109 -DMSGPACK_DISABLE_LEGACY_CONVERT \
110 -DUNICODE \
111 -D_UNICODE")
112endif()
Adrien Béraud370257c2023-08-15 20:53:09 -0400113
Amnaf38fa102024-02-01 16:39:30 -0500114if (DNC_SYSTEMD)
115 if (NOT DEFINED DNC_SYSTEMD_UNIT_FILE_LOCATION OR NOT DNC_SYSTEMD_UNIT_FILE_LOCATION)
116 execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} systemd --variable=systemdsystemunitdir
117 OUTPUT_VARIABLE SYSTEMD_UNIT_INSTALL_DIR)
118 message("-- Using Systemd unit installation directory by pkg-config: " ${SYSTEMD_UNIT_INSTALL_DIR})
119 else()
120 message("-- Using Systemd unit installation directory requested: " ${DNC_SYSTEMD_UNIT_FILE_LOCATION})
121 set(SYSTEMD_UNIT_INSTALL_DIR ${DNC_SYSTEMD_UNIT_FILE_LOCATION})
122 endif()
123
124 configure_file (
125 tools/dnc/systemd/dnc.service.in
126 systemd/dnc.service
127 @ONLY
128 )
129 if (SYSTEMD_UNIT_INSTALL_DIR)
130 string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_UNIT_INSTALL_DIR "${SYSTEMD_UNIT_INSTALL_DIR}")
131 set (systemdunitdir "${SYSTEMD_UNIT_INSTALL_DIR}")
132 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/systemd/dnc.service DESTINATION ${systemdunitdir})
133 install (FILES tools/dnc/dnc.yaml DESTINATION ${sysconfdir}/dhtnet/)
134 else()
135 message(WARNING "Systemd unit installation directory not found. The systemd unit won't be installed.")
136 endif()
137endif()
Adrien Béraud612b55b2023-05-29 10:42:04 -0400138# Sources
139list (APPEND dhtnet_SOURCES
140 src/connectionmanager.cpp
141 src/ice_transport.cpp
142 src/multiplexed_socket.cpp
143 src/peer_connection.cpp
144 src/string_utils.cpp
145 src/fileutils.cpp
Adrien Béraud80c14e12023-07-18 16:13:15 -0400146 src/ip_utils.cpp
Adrien Béraud612b55b2023-05-29 10:42:04 -0400147 src/security/tls_session.cpp
148 src/security/certstore.cpp
149 src/security/threadloop.cpp
Adrien Béraud45dfac92023-07-19 00:08:50 -0400150 src/security/diffie-hellman.cpp
Adrien Bérauda1d294f2023-07-17 22:42:13 -0400151 src/turn/turn_cache.cpp
152 src/turn/turn_transport.cpp
Morteza Namvar5f639522023-07-04 17:08:58 -0400153 src/upnp/upnp_context.cpp
154 src/upnp/upnp_control.cpp
155 src/upnp/protocol/mapping.cpp
Adrien Béraud80c14e12023-07-18 16:13:15 -0400156 src/upnp/protocol/igd.cpp
Adrien Béraud612b55b2023-05-29 10:42:04 -0400157)
158
159list (APPEND dhtnet_HEADERS
Adrien Béraud149f29e2023-07-05 14:47:49 -0400160 include/connectionmanager.h
161 include/multiplexed_socket.h
162 include/tls_session.h
163 include/certstore.h
164 include/ice_options.h
Adrien Béraud6de3f882023-07-06 12:56:29 -0400165 include/ice_transport.h
Adrien Béraudcb121f82023-07-08 09:18:39 -0400166 include/ice_transport_factory.h
Adrien Béraudaa8c4422023-07-07 11:40:36 -0400167 include/ice_socket.h
Adrien Béraud149f29e2023-07-05 14:47:49 -0400168 include/fileutils.h
169 include/string_utils.h
170 include/ip_utils.h
171 include/upnp/mapping.h
172 include/upnp/upnp_context.h
173 include/upnp/upnp_control.h
Adrien Béraud612b55b2023-05-29 10:42:04 -0400174)
175
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400176# Port mapping dependencies - add sources and libraries
177if (DHTNET_PUPNP AND NOT MSVC)
Adrien Béraud370257c2023-08-15 20:53:09 -0400178 pkg_search_module (upnp IMPORTED_TARGET upnp libupnp)
179 if (NOT upnp_FOUND)
180 message("libupnp not found: disabling")
181 set(DHTNET_PUPNP Off)
Adrien Béraud6c6a9622023-08-27 12:49:31 -0400182 else()
183 set(upnp_LIBRARIES PkgConfig::upnp)
Adrien Béraud0e6730e2023-08-29 14:12:52 -0400184 set (requiresprivate "${requiresprivate} libupnp")
Adrien Béraud370257c2023-08-15 20:53:09 -0400185 endif()
186endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400187if (DHTNET_NATPMP AND NOT MSVC)
Adrien Béraud370257c2023-08-15 20:53:09 -0400188 pkg_search_module (natpmp IMPORTED_TARGET natpmp)
189 if (NOT natpmp_FOUND)
190 find_library(natpmp_LIBRARIES natpmp)
191 if (NOT natpmp_LIBRARIES)
192 message("NAT-PMP not found: disabling")
193 set(DHTNET_NATPMP Off)
194 else()
195 message("NAT-PMP found: ${natpmp_LIBRARIES}")
Adrien Béraud0e6730e2023-08-29 14:12:52 -0400196 set (libsprivate "${libsprivate} -lnatpmp")
Adrien Béraud370257c2023-08-15 20:53:09 -0400197 endif()
198 endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400199endif()
200
201if (DHTNET_PUPNP)
202 list (APPEND dhtnet_PRIVATE_DEFS HAVE_LIBUPNP)
203 list (APPEND dhtnet_SOURCES
204 src/upnp/protocol/pupnp/pupnp.cpp
205 src/upnp/protocol/pupnp/upnp_igd.cpp
206 )
207 list (APPEND dhtnet_PRIVATELIBS ${upnp_LIBRARIES})
208endif()
209if (DHTNET_NATPMP)
210 list (APPEND dhtnet_PRIVATE_DEFS HAVE_LIBNATPMP)
211 list (APPEND dhtnet_SOURCES
212 src/upnp/protocol/natpmp/nat_pmp.cpp
213 src/upnp/protocol/natpmp/pmp_igd.cpp
214 )
215 list (APPEND dhtnet_PRIVATELIBS ${natpmp_LIBRARIES})
Adrien Béraud370257c2023-08-15 20:53:09 -0400216endif()
217
Adrien Béraud612b55b2023-05-29 10:42:04 -0400218add_library(dhtnet ${dhtnet_SOURCES})
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400219if (NOT MSVC)
220 target_link_libraries(dhtnet PUBLIC PkgConfig::opendht PkgConfig::pjproject fmt::fmt ${MSGPACK_LIB})
221else()
222 target_link_libraries(dhtnet PUBLIC
223 ${WIN32_DEP_DIR}/../msvc/lib/libopendht.lib
224 ${WIN32_DEP_DIR}/../msvc/lib/libpjproject.lib
225 ${WIN32_DEP_DIR}/../msvc/lib/libfmt.lib
226 ${WIN32_DEP_DIR}/../msvc/lib/libmsgpackc-cxx.lib)
227endif()
Amna366382f2023-10-02 16:37:02 -0400228if (NOT HAVE_MSGPACKCXX)
Adrien Béraud62aefa62023-10-05 22:30:09 -0400229 target_link_libraries(dhtnet PUBLIC ${MSGPACK_TARGET})
Amna366382f2023-10-02 16:37:02 -0400230endif()
Adrien Béraud06271002023-07-27 15:52:29 -0400231if (APPLE)
Adrien Béraud08548d92023-07-27 16:02:48 -0400232 target_link_libraries(dhtnet PRIVATE "-framework CoreFoundation" "-framework Security" "resolv")
Adrien Béraud06271002023-07-27 15:52:29 -0400233endif()
234
Adrien Béraud665d1112023-06-01 19:03:57 -0400235target_include_directories(dhtnet PUBLIC
236 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
237 $<INSTALL_INTERFACE:include>
238)
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400239
240target_compile_definitions(dhtnet PRIVATE ${dhtnet_PRIVATE_DEFS})
241target_link_libraries(dhtnet PRIVATE ${dhtnet_PRIVATELIBS})
242if (MSVC)
243 target_compile_definitions(dhtnet PRIVATE
244 _CRT_SECURE_NO_WARNINGS
245 _WINSOCK_DEPRECATED_NO_WARNINGS
246 ASIO_STANDALONE
247 _WIN32_WINNT=0x0601
248 MSGPACK_NO_BOOST
249 MSGPACK_DISABLE_LEGACY_NIL
250 MSGPACK_DISABLE_LEGACY_CONVERT
251 DHTNET_STATIC
252 DHTNET_STATIC_DEFINE
253 DHTNET_EXPORTS
254 DHTNET_BUILDING
255 DHT)
256 target_compile_options(dhtnet PRIVATE
257 /O2; /Oi; ${DEFAULT_CXX_RUNTIME_LIBRARY}; /Gy; /MP; /Oy-; /sdl-; /W0;
258 /FC; /FS; /nologo; /Zi; /wd4996; /wd4503; /wd4180; /wd4244; /wd4267;
259 /Zc:__cplusplus;
260 ${DEFAULT_CXX_EXCEPTION_HANDLING})
261else()
262 target_compile_definitions(dhtnet PUBLIC PJ_AUTOCONF=1)
Adrien Béraud370257c2023-08-15 20:53:09 -0400263endif()
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400264
265if (BUILD_TESTING AND NOT MSVC)
Adrien Béraud6b6a5d32023-08-15 15:53:33 -0400266 target_compile_definitions(dhtnet PUBLIC DHTNET_TESTABLE)
267endif()
Adrien Bérauda4030cd2023-06-21 09:35:40 -0400268
269configure_file(dhtnet.pc.in dhtnet.pc @ONLY)
270
Adrien Bérauda4030cd2023-06-21 09:35:40 -0400271# Install targets
Adrien Béraud13e33432023-07-18 14:49:35 -0400272install(TARGETS dhtnet)
Adrien Béraud149f29e2023-07-05 14:47:49 -0400273install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dhtnet)
Adrien Béraud13e33432023-07-18 14:49:35 -0400274install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dhtnet.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
Adrien Bérauda4030cd2023-06-21 09:35:40 -0400275
Andreas Traczyk24cc01e2023-08-23 18:55:15 -0400276if (BUILD_TOOLS AND NOT MSVC)
Amna38768302023-08-21 11:51:56 -0400277 add_executable(dnc
278 tools/dnc/main.cpp
279 tools/dnc/dnc.cpp
Amna423b25b2024-02-06 13:21:19 -0500280 tools/common.cpp
281 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
Amna41848a22024-01-22 16:22:57 -0500282 target_link_libraries(dnc PRIVATE dhtnet fmt::fmt yaml-cpp)
Amna38768302023-08-21 11:51:56 -0400283 target_include_directories(dnc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
284 install(TARGETS dnc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Adrien Béraudb75ab9d2023-08-23 09:26:58 -0400285
Amna4a70f5c2023-09-14 17:32:05 -0400286 add_executable(dsh
287 tools/dsh/main.cpp
288 tools/dsh/dsh.cpp
Amna423b25b2024-02-06 13:21:19 -0500289 tools/common.cpp
290 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
Amna41848a22024-01-22 16:22:57 -0500291 target_link_libraries(dsh PRIVATE dhtnet fmt::fmt yaml-cpp)
Amna4e52b162024-01-14 21:16:57 -0500292 target_include_directories(dsh PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
Amna4a70f5c2023-09-14 17:32:05 -0400293 install(TARGETS dsh RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
294
Amna4e52b162024-01-14 21:16:57 -0500295 add_executable(dvpn
296 tools/dvpn/main.cpp
297 tools/dvpn/dvpn.cpp
Amna423b25b2024-02-06 13:21:19 -0500298 tools/common.cpp
299 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
Amna4e52b162024-01-14 21:16:57 -0500300 target_link_libraries(dvpn PRIVATE dhtnet fmt::fmt yaml-cpp)
301 target_include_directories(dvpn PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
302 install(TARGETS dvpn RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
303
Adrien Béraudbd09c992023-09-20 11:55:37 -0400304 find_library(READLINE_LIBRARIES readline)
305 find_path(READLINE_INCLUDE_DIR readline/readline.h)
306 add_library(readline STATIC IMPORTED)
307 set_target_properties(readline PROPERTIES
308 IMPORTED_LOCATION "${READLINE_LIBRARIES}"
309 INTERFACE_INCLUDE_DIRECTORIES "${READLINE_INCLUDE_DIR}")
Adrien Béraudb75ab9d2023-08-23 09:26:58 -0400310 add_executable(upnpctrl
311 tools/upnp/upnpctrl.cpp)
312 target_link_libraries(upnpctrl PRIVATE dhtnet fmt::fmt readline)
313 target_include_directories(upnpctrl PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
314 install(TARGETS upnpctrl RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Amnab10c6e72023-09-25 11:12:35 -0400315
Amna423b25b2024-02-06 13:21:19 -0500316 add_executable(dhtnet-crtmgr
317 tools/dhtnet_crtmgr/main.cpp
318 tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp)
319 target_link_libraries(dhtnet-crtmgr PRIVATE dhtnet fmt::fmt)
320 target_include_directories(dhtnet-crtmgr PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
321 install(TARGETS dhtnet-crtmgr RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
322
Amnab10c6e72023-09-25 11:12:35 -0400323 install(FILES
324 tools/dnc/dnc.1
325 tools/dsh/dsh.1
326 DESTINATION ${CMAKE_INSTALL_MANDIR})
Amna38768302023-08-21 11:51:56 -0400327endif()
328
Adrien Béraud6c6a9622023-08-27 12:49:31 -0400329if (BUILD_BENCHMARKS)
330 add_executable(bench
331 tools/benchmark/main.cpp
332 tools/common.cpp)
333 target_link_libraries(bench PRIVATE dhtnet fmt::fmt)
334 target_include_directories(bench PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
335 install(TARGETS bench RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
336endif()
337
Adrien Béraudefe27372023-05-27 18:56:29 -0400338if (BUILD_TESTING AND NOT MSVC)
339 pkg_search_module(Cppunit REQUIRED IMPORTED_TARGET cppunit)
340 add_executable(tests_certstore tests/certstore.cpp)
341 target_link_libraries(tests_certstore PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
342 add_test(NAME tests_certstore COMMAND tests_certstore)
343
344 add_executable(tests_connectionManager tests/connectionManager.cpp)
345 target_link_libraries(tests_connectionManager PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
346 add_test(NAME tests_connectionManager COMMAND tests_connectionManager)
347
Adrien Béraud2a4e73d2023-08-27 12:53:55 -0400348 add_executable(tests_fileutils tests/testFileutils.cpp)
349 target_link_libraries(tests_fileutils PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
350 add_test(NAME tests_fileutils COMMAND tests_fileutils)
Adrien Béraudefe27372023-05-27 18:56:29 -0400351
352 #add_executable(tests_stringutils tests/testString_utils.cpp)
353 #target_link_libraries(tests_stringutils PRIVATE dhtnet fmt::fmt PkgConfig::Cppunit)
354 #add_test(NAME tests_stringutils COMMAND tests_stringutils)
Amnaf38fa102024-02-01 16:39:30 -0500355endif()