tools: add dnc (distributed netcat) tool

Change-Id: I85a4845a75f4aa46509a7a94ecace821745118e0
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dad3553..077c4d4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,8 @@
     LANGUAGES CXX
     DESCRIPTION "A C++ library for NAT traversal and secure communication")
 
+option(BUILD_TOOLS "Build dnc" ON)
+
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 include(CTest)
@@ -135,6 +137,16 @@
 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dhtnet)
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dhtnet.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
 
+if (BUILD_TOOLS)
+    add_executable(dnc
+        tools/dnc/main.cpp
+        tools/dnc/dnc.cpp
+        tools/common.cpp)
+    target_link_libraries(dnc PRIVATE dhtnet fmt::fmt)
+    target_include_directories(dnc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tools)
+    install(TARGETS dnc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif()
+
 if (BUILD_TESTING AND NOT MSVC)
     pkg_search_module(Cppunit REQUIRED IMPORTED_TARGET cppunit)
     add_executable(tests_certstore tests/certstore.cpp)