add initial project structure

Change-Id: I6a3fb080ff623b312e42d71754480a7ce00b81a0
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..227118f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,37 @@
+cmake_minimum_required(VERSION 3.20)
+project(dhtnet)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package (PkgConfig REQUIRED)
+find_package(msgpack REQUIRED QUIET CONFIG NAMES msgpack msgpack-cxx)
+pkg_check_modules (opendht REQUIRED IMPORTED_TARGET opendht>=2.6.0)
+pkg_check_modules (pjproject REQUIRED IMPORTED_TARGET libpjproject)
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMSGPACK_NO_BOOST -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT")
+
+# Sources
+list (APPEND dhtnet_SOURCES
+    src/connectionmanager.cpp
+    src/ice_transport.cpp
+    src/multiplexed_socket.cpp
+    src/peer_connection.cpp
+    src/string_utils.cpp
+    src/fileutils.cpp
+    src/security/tls_session.cpp
+    src/security/certstore.cpp
+    src/security/threadloop.cpp
+)
+
+list (APPEND dhtnet_HEADERS
+    include/connectionmanager.h
+    include/multiplexed_socket.h
+)
+
+add_library(dhtnet ${dhtnet_SOURCES})
+target_link_libraries(dhtnet PUBLIC PkgConfig::opendht msgpack-cxx)
+target_include_directories(dhtnet PUBLIC include)
+target_compile_definitions(dhtnet PRIVATE
+    PJ_AUTOCONF=1
+)