From 2498a085dbf319222c41e2d928f1ab320be7075a Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Mon, 9 Jan 2023 12:48:13 -0500 Subject: [PATCH] rearrange cmake libraries define relations and document them. make responsibilies clear and consice. --- CMakeLists.txt | 3 +- contrib/android-configure.sh | 1 - contrib/mac-configure.sh | 1 - contrib/windows-configure.sh | 1 - crypto/CMakeLists.txt | 2 +- external/CMakeLists.txt | 25 +- llarp/CMakeLists.txt | 469 +++++++++++++----- llarp/crypto/constants.hpp | 2 +- .../kitchen_sink.cpp => flow/stub.cpp} | 0 .../kitchen_sink.cpp => platform/stub.cpp} | 0 10 files changed, 366 insertions(+), 138 deletions(-) rename llarp/layers/{endpoint/kitchen_sink.cpp => flow/stub.cpp} (100%) rename llarp/layers/{flow/kitchen_sink.cpp => platform/stub.cpp} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77d85b073..dac2c3d36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,8 +49,7 @@ endif() option(USE_AVX2 "enable avx2 code" OFF) option(USE_NETNS "enable networking namespace support. Linux only" OFF) option(NATIVE_BUILD "optimise for host system and FPU" ON) -option(EMBEDDED_CFG "optimise for older hardware or embedded systems" OFF) -option(BUILD_LIBLOKINET "build liblokinet.so" ON) +option(WITH_EMBEDDED_LOKINET "build liblokinet.so for embedded lokinet" OFF) option(XSAN "use sanitiser, if your system has it (requires -DCMAKE_BUILD_TYPE=Debug)" OFF) option(USE_JEMALLOC "Link to jemalloc for memory allocations, if found" ON) option(TESTNET "testnet build" OFF) diff --git a/contrib/android-configure.sh b/contrib/android-configure.sh index 065e83e18..5e559b5a7 100755 --- a/contrib/android-configure.sh +++ b/contrib/android-configure.sh @@ -33,7 +33,6 @@ for abi in $build_abis; do -DBUILD_PACKAGE=ON \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TESTING=OFF \ - -DBUILD_LIBLOKINET=OFF \ -DWITH_TESTS=OFF \ -DWITH_BOOTSTRAP=OFF \ -DNATIVE_BUILD=OFF \ diff --git a/contrib/mac-configure.sh b/contrib/mac-configure.sh index fa45a960b..50c49099a 100755 --- a/contrib/mac-configure.sh +++ b/contrib/mac-configure.sh @@ -13,7 +13,6 @@ cd build-mac cmake \ -G Ninja \ -DBUILD_STATIC_DEPS=ON \ - -DBUILD_LIBLOKINET=OFF \ -DWITH_TESTS=OFF \ -DWITH_BOOTSTRAP=OFF \ -DNATIVE_BUILD=OFF \ diff --git a/contrib/windows-configure.sh b/contrib/windows-configure.sh index f41ef3af8..fa57a1aa4 100755 --- a/contrib/windows-configure.sh +++ b/contrib/windows-configure.sh @@ -32,7 +32,6 @@ cmake \ -DBUILD_PACKAGE=ON \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TESTING=OFF \ - -DBUILD_LIBLOKINET=OFF \ -DWITH_TESTS=OFF \ -DWITH_BOOTSTRAP=OFF \ -DNATIVE_BUILD=OFF \ diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index e4cedd9b6..c73a6ed14 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -20,7 +20,7 @@ add_library(lokinet-cryptography libntrup/src/ref/rq.c ) -target_include_directories(lokinet-cryptography PUBLIC libntrup/include) +target_include_directories(lokinet-cryptography PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/libntrup/include) # The avx implementation uses runtime CPU feature detection to enable itself, so we *always* want to # compile it with avx2/fma support when supported by the compiler even if we aren't compiling with diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 9b33431f9..c2226bd77 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -1,4 +1,3 @@ - option(SUBMODULE_CHECK "Enables checking that vendored library submodules are up to date" ON) if(SUBMODULE_CHECK) find_package(Git) @@ -140,3 +139,27 @@ if(WITH_BOOTSTRAP) endif() endif() + + +# libcrypt defaults, only on with macos and non static linux +set(default_libcrypt OFF) + +if(LINUX AND NOT STATIC_LINK) + set(default_libcrypt ON) +endif() +if(MACOS) + set(default_libcrypt ON) +endif() + +option(WITH_LIBCRYPT "enable fast password hash with libcrypt" ${default_libcrypt}) + +add_library(lokinet-libcrypt INTERFACE) +if(WITH_LIBCRYPT) + pkg_check_modules(LIBCRYPT libcrypt IMPORTED_TARGET REQUIRED) + add_definitions(-DHAVE_CRYPT) + target_link_libraries(lokinet-libcrypt INTERFACE PkgConfig::LIBCRYPT) + message(STATUS "using libcrypt ${LIBCRYPT_VERSION}") +else() + # TODO static build lib crypt? + message(STATUS "not building with libcrypt") +endif() diff --git a/llarp/CMakeLists.txt b/llarp/CMakeLists.txt index bb4b3bef2..643c485ec 100644 --- a/llarp/CMakeLists.txt +++ b/llarp/CMakeLists.txt @@ -1,5 +1,12 @@ include(Version) +target_sources(lokinet-cryptography PRIVATE + crypto/crypto_libsodium.cpp + crypto/crypto.cpp + crypto/encrypted_frame.cpp + crypto/types.cpp +) + add_library(lokinet-util STATIC ${CMAKE_CURRENT_BINARY_DIR}/constants/version.cpp @@ -15,19 +22,9 @@ add_library(lokinet-util util/thread/threading.cpp util/time.cpp) - add_dependencies(lokinet-util genversion) -target_include_directories(lokinet-util PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}) - -target_link_libraries(lokinet-util PUBLIC - lokinet-cryptography - nlohmann_json::nlohmann_json - filesystem - oxenc::oxenc - oxen::logging -) - +# lokinet-platform holds all platform specific code add_library(lokinet-platform STATIC # for networking @@ -45,9 +42,6 @@ add_library(lokinet-platform vpn/platform.cpp ) -target_link_libraries(lokinet-platform PUBLIC lokinet-cryptography lokinet-util Threads::Threads base_libs uvw) -target_link_libraries(lokinet-platform PRIVATE oxenmq::oxenmq) - if (ANDROID) target_sources(lokinet-platform PRIVATE android/ifaddrs.c util/nop_service_manager.cpp) endif() @@ -66,36 +60,26 @@ if (WIN32) net/win32.cpp vpn/win32.cpp win32/service_manager.cpp - win32/exec.cpp) - add_library(lokinet-win32 STATIC + win32/exec.cpp win32/dll.cpp - win32/exception.cpp) - add_library(lokinet-wintun STATIC - win32/wintun.cpp) - add_library(lokinet-windivert STATIC + win32/exception.cpp + win32/wintun.cpp win32/windivert.cpp) - - # wintun and windivert are privated linked by lokinet-platform - # this is so their details do not leak out to deps of lokinet-platform - # wintun and windivert still need things from lokinet-platform - target_compile_options(lokinet-wintun PUBLIC -I${CMAKE_BINARY_DIR}/wintun/include/) - target_compile_options(lokinet-windivert PUBLIC -I${CMAKE_BINARY_DIR}/WinDivert-${WINDIVERT_VERSION}/include/) - target_include_directories(lokinet-windivert PUBLIC ${PROJECT_SOURCE_DIR}) - target_link_libraries(lokinet-wintun PUBLIC lokinet-platform lokinet-util lokinet-config) - target_link_libraries(lokinet-win32 PUBLIC lokinet-util) - target_link_libraries(lokinet-windivert PUBLIC oxen-logging) - target_link_libraries(lokinet-windivert PRIVATE lokinet-win32) - target_link_libraries(lokinet-platform PRIVATE lokinet-win32 lokinet-wintun lokinet-windivert) + target_include_directories(lokinet-platform PRIVATE ${CMAKE_BINARY_DIR}/wintun/include/ ${CMAKE_BINARY_DIR}/WinDivert-${WINDIVERT_VERSION}/include/) else() target_sources(lokinet-platform PRIVATE net/posix.cpp) endif() - -if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - target_include_directories(lokinet-platform SYSTEM PUBLIC /usr/local/include) +if(APPLE) + add_subdirectory(apple) + target_sources(lokinet-platform PRIVATE util/nop_service_manager.cpp) endif() +# lokinet-dns is the dns parsing and hooking library that we use to +# parse modify and reconstitute dns wire proto, dns queries and RR +# should have no concept of dns caching, this is left as an implementation +# detail of dns resolvers (LATER: make separate lib for dns resolvers) add_library(lokinet-dns STATIC dns/message.cpp @@ -107,13 +91,50 @@ add_library(lokinet-dns dns/server.cpp dns/srv_data.cpp) +# platform specific bits and bobs for setting dns +add_library(lokinet-dns-platform INTERFACE) if(WITH_SYSTEMD) - target_sources(lokinet-dns PRIVATE dns/nm_platform.cpp dns/sd_platform.cpp) + add_library(lokinet-dns-systemd STATIC dns/nm_platform.cpp dns/sd_platform.cpp) + target_link_libraries(lokinet-dns-platform INTERFACE lokinet-dns-systemd) endif() -target_link_libraries(lokinet-dns PUBLIC lokinet-platform uvw) -target_link_libraries(lokinet-dns PRIVATE libunbound lokinet-config) +# lokinet-nodedb holds all types and logic for storing parsing and constructing +# nodedb data published to the network and versions of it stored locally +add_library(lokinet-nodedb + STATIC + bootstrap.cpp + net/address_info.cpp + net/exit_info.cpp + net/traffic_policy.cpp + nodedb.cpp + pow.cpp + profiling.cpp + router_contact.cpp + router_id.cpp + router_version.cpp +) + +set(BOOTSTRAP_FALLBACKS) +foreach(bs IN ITEMS MAINNET TESTNET) + if(BOOTSTRAP_FALLBACK_${bs}) + message(STATUS "Building with ${bs} fallback boostrap path \"${BOOTSTRAP_FALLBACK_${bs}}\"") + file(READ "${BOOTSTRAP_FALLBACK_${bs}}" bs_data HEX) + if(bs STREQUAL TESTNET) + set(network "gamma") + elseif(bs STREQUAL MAINNET) + set(network "lokinet") + else() + string(TOLOWER "${bs}" network) + endif() + string(REGEX REPLACE "([0-9a-f][0-9a-f])" "\\\\x\\1" bs_data "${bs_data}") + set(BOOTSTRAP_FALLBACKS "${BOOTSTRAP_FALLBACKS}{\"${network}\"s, \"${bs_data}\"sv},\n") + endif() +endforeach() +configure_file("bootstrap-fallbacks.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/bootstrap-fallbacks.cpp" @ONLY) +target_sources(lokinet-nodedb PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/bootstrap-fallbacks.cpp") + +# lokinet-config is for all configuration types and parsers add_library(lokinet-config STATIC config/config.cpp @@ -121,18 +142,15 @@ add_library(lokinet-config config/ini.cpp config/key_manager.cpp) -target_link_libraries(lokinet-config PUBLIC lokinet-dns lokinet-platform oxenmq::oxenmq) - -add_library(lokinet-amalgum +# lokinet-consensus is for deriving and tracking network consensus state for both service nodes and clients +add_library(lokinet-consensus STATIC consensus/reachability_testing.cpp +) - bootstrap.cpp - context.cpp - crypto/crypto_libsodium.cpp - crypto/crypto.cpp - crypto/encrypted_frame.cpp - crypto/types.cpp +# lokinet-dht holds all logic related to interacting with and participating in the DHT hashring +add_library(lokinet-dht + STATIC dht/context.cpp dht/dht.cpp dht/explorenetworkjob.cpp @@ -151,44 +169,56 @@ add_library(lokinet-amalgum dht/recursiverouterlookup.cpp dht/serviceaddresslookup.cpp dht/taglookup.cpp +) - endpoint_base.cpp +# lokinet-layer-flow is the flow layer which sits atop the routing layer which manages +# flows between lokinet snapp endpoints be they .loki or .snode +add_library(lokinet-layer-flow + STATIC + layers/flow/stub.cpp # todo: remove me +) - exit/context.cpp - exit/endpoint.cpp - exit/exit_messages.cpp - exit/policy.cpp - exit/session.cpp - handlers/exit.cpp - handlers/tun.cpp + +# lokinet-layer-onion is the "dumb" onion routing layer with builds manages and does i/o +# with onion paths. onion paths anonymize routing layer pdu. +add_library(lokinet-layer-onion + STATIC + path/ihophandler.cpp + path/path_context.cpp + path/path.cpp + path/pathbuilder.cpp + path/pathset.cpp + path/transit_hop.cpp + messages/relay.cpp + messages/relay_commit.cpp + messages/relay_status.cpp +) + +# lokinet-layer-wire is a layer 1 analog which splits up +# layer 2 frames into layer 1 symbols which in the case of iwp are encrypted udp/ip packets +add_library(lokinet-layer-wire + STATIC iwp/iwp.cpp iwp/linklayer.cpp iwp/message_buffer.cpp iwp/session.cpp +) + +# lokinet-layer-link is for our layer 2 analog which splits up layer 2 frames into +# a series of layer 1 symbols which are then transmitted between lokinet instances +add_library(lokinet-layer-link + STATIC link/link_manager.cpp link/session.cpp link/server.cpp messages/dht_immediate.cpp messages/link_intro.cpp messages/link_message_parser.cpp - messages/relay.cpp - messages/relay_commit.cpp - messages/relay_status.cpp - net/address_info.cpp - net/exit_info.cpp - net/traffic_policy.cpp - nodedb.cpp - path/ihophandler.cpp - path/path_context.cpp - path/path.cpp - path/pathbuilder.cpp - path/pathset.cpp - path/transit_hop.cpp - peerstats/peer_db.cpp - peerstats/types.cpp - pow.cpp - profiling.cpp - +) + +# lokinet-plainquic is for holding the tunneled plainquic code, not quic wire protocol code +add_library(lokinet-plainquic + STATIC quic/address.cpp quic/client.cpp quic/connection.cpp @@ -197,27 +227,61 @@ add_library(lokinet-amalgum quic/server.cpp quic/stream.cpp quic/tunnel.cpp +) - router_contact.cpp - router_id.cpp - router_version.cpp - service/name.cpp +# lokinet-context holds the contextualized god objects for a lokinet instance +# it is what any main function would link to in practice but it is hidden behind an interface library (lokinet-amalgum) +add_library(lokinet-context + STATIC + context.cpp + link/link_manager.cpp router/outbound_message_handler.cpp router/outbound_session_maker.cpp router/rc_lookup_handler.cpp router/rc_gossiper.cpp router/router.cpp router/route_poker.cpp +) + +# lokinet-rpc holds all rpc related compilation units +add_library(lokinet-rpc + STATIC + rpc/lokid_rpc_client.cpp + rpc/rpc_server.cpp + rpc/endpoint_rpc.cpp +) + +# optional peer stats library +add_library(lokinet-peerstats + STATIC + peerstats/peer_db.cpp + peerstats/types.cpp +) +# lokinet-layer-routing holds logic related to the routing layer +# routing layer is anonymized over the onion layer +add_library(lokinet-layer-routing + STATIC routing/dht_message.cpp routing/message_parser.cpp routing/path_confirm_message.cpp routing/path_latency_message.cpp routing/path_transfer_message.cpp routing/transfer_traffic_message.cpp - rpc/lokid_rpc_client.cpp - rpc/rpc_server.cpp - rpc/endpoint_rpc.cpp +) + +# kitchen sink to be removed after refactor +add_library(lokinet-service-deprecated-kitchensink + STATIC + endpoint_base.cpp + exit/context.cpp + exit/endpoint.cpp + exit/exit_messages.cpp + exit/policy.cpp + exit/session.cpp + handlers/exit.cpp + handlers/tun.cpp + service/name.cpp service/address.cpp service/async_key_exchange.cpp service/auth.cpp @@ -242,65 +306,216 @@ add_library(lokinet-amalgum service/tag.cpp ) -set(BOOTSTRAP_FALLBACKS) -foreach(bs IN ITEMS MAINNET TESTNET) - if(BOOTSTRAP_FALLBACK_${bs}) - message(STATUS "Building with ${bs} fallback boostrap path \"${BOOTSTRAP_FALLBACK_${bs}}\"") - file(READ "${BOOTSTRAP_FALLBACK_${bs}}" bs_data HEX) - if(bs STREQUAL TESTNET) - set(network "gamma") - elseif(bs STREQUAL MAINNET) - set(network "lokinet") - else() - string(TOLOWER "${bs}" network) - endif() - string(REGEX REPLACE "([0-9a-f][0-9a-f])" "\\\\x\\1" bs_data "${bs_data}") - set(BOOTSTRAP_FALLBACKS "${BOOTSTRAP_FALLBACKS}{\"${network}\"s, \"${bs_data}\"sv},\n") - endif() -endforeach() -configure_file("bootstrap-fallbacks.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/bootstrap-fallbacks.cpp" @ONLY) -target_sources(lokinet-amalgum PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/bootstrap-fallbacks.cpp") +add_library(lokinet-layer-platform + STATIC + layers/platform/stub.cpp # todo: remove me +) -if(WITH_PEERSTATS_BACKEND) - target_compile_definitions(lokinet-amalgum PRIVATE -DLOKINET_PEERSTATS_BACKEND) - target_link_libraries(lokinet-amalgum PUBLIC sqlite_orm) -endif() +# interal tooling for pybind +add_library(lokinet-tooling INTERFACE) if(WITH_HIVE) - target_sources(lokinet-amalgum PRIVATE + add_library(lokinet-hive-tooling + STATIC tooling/router_hive.cpp tooling/hive_router.cpp tooling/hive_context.cpp ) + target_link_libraries(lokinet-tooling INTERFACE lokinet-hive-tooling) endif() -# TODO: make libunbound hidden behind a feature flag like sqlite for embedded lokinet -target_link_libraries(lokinet-amalgum PRIVATE libunbound) -target_link_libraries(lokinet-amalgum PUBLIC - CLI11 - oxenc::oxenc +# interface library for setting commone includes, linkage and flags. +add_library(lokinet-base INTERFACE) +target_include_directories(lokinet-base + INTERFACE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include +) +target_link_libraries(lokinet-base INTERFACE oxen::logging lokinet-cryptography) + +if(WITH_PEERSTATS) + target_compile_definitions(lokinet-base INTERFACE -DLOKINET_PEERSTATS_BACKEND) + target_link_libraries(lokinet-base INTERFACE sqlite_orm) +endif() + +# interface libraries for internal linkage +add_library(lokinet-layers INTERFACE) +add_library(lokinet-amalgum INTERFACE) + + +# helper function to link a library to lokinet-base, enable lto, add to lokinet-amalgum and then link to other libs +function(lokinet_link_lib libname) + message(DEBUG "created target: ${libname}") + enable_lto(${libname}) + target_link_libraries(${libname} PUBLIC lokinet-base ${ARGN}) + target_link_libraries(lokinet-amalgum INTERFACE ${libname}) +endfunction() + +# internal public linkages of components +lokinet_link_lib(lokinet-util) +lokinet_link_lib(lokinet-cryptography lokinet-libcrypt lokinet-util) +lokinet_link_lib(lokinet-peerstats lokinet-context) +lokinet_link_lib(lokinet-consensus lokinet-context) +lokinet_link_lib(lokinet-layer-link lokinet-peerstats) + +if(TARGET lokinet-hive-tooling) + lokinet_link_lib(lokinet-hive-tooling lokinet-context) +endif() + +if(TARGET lokinet-dns-systemd) + lokinet_link_lib(lokinet-dns-systemd + lokinet-dns lokinet-platform - lokinet-config + ) +endif() + +lokinet_link_lib(lokinet-platform lokinet-util) + +lokinet_link_lib(lokinet-config + lokinet-util + lokinet-nodedb + lokinet-dns + lokinet-platform +) + +lokinet_link_lib(lokinet-context + lokinet-config + lokinet-platform + lokinet-peerstats + lokinet-layers + lokinet-consensus + lokinet-rpc +) + +lokinet_link_lib(lokinet-dht + lokinet-util + lokinet-nodedb +) + +lokinet_link_lib(lokinet-plainquic + lokinet-platform + lokinet-config +) + +lokinet_link_lib(lokinet-dns + lokinet-platform + lokinet-dns-platform + lokinet-config +) + +lokinet_link_lib(lokinet-nodedb + lokinet-util + lokinet-platform +) + +lokinet_link_lib(lokinet-util + lokinet-nodedb + lokinet-platform +) + +lokinet_link_lib(lokinet-rpc + lokinet-context + lokinet-peerstats + lokinet-util +) + +# inter lokinet-layer public/private linkage. +# when linking each layer, we consider the layer directly below private linkage and the layer above public linkage. +# this lets us hide functionality of layers below us when depended on by another component. +# +# from highest to lowest layer, the above layers are stacked as follows: +# +# platform (what lokinet snapps interact with, be it l3 os interaction or embedded lokinet) +# flow (how we want to route and stripe over our onion routing) +# routing (what we are onion routing) +# onion (how the onion routing happens) +# link (what we want to send over the wire and to where) +# wire (what is actually sent over the wire) +# +function(link_lokinet_layers) + set(lib ${ARGV0}) + if(${ARGC} GREATER 1) + lokinet_link_lib(${ARGV1} ${lib}) + list(REMOVE_AT ARGV 1) + target_link_libraries(${lib} PRIVATE ${ARGV1}) + # recursion :D + link_lokinet_layers(${ARGV}) + else() + lokinet_link_lib(${lib}) + endif() +endfunction() + +link_lokinet_layers( + lokinet-layer-platform + lokinet-layer-flow + lokinet-layer-routing + lokinet-layer-onion + lokinet-layer-link + lokinet-layer-wire +) + +# set me to OFF to disable old codepath +set(use_old_impl ON) +if(use_old_impl) + # flow layer deprecated-kitchensink (remove me after refactor) + lokinet_link_lib(lokinet-service-deprecated-kitchensink lokinet-dns - lokinet-util - lokinet-cryptography - ngtcp2_static - oxenmq::oxenmq) - -enable_lto(lokinet-util lokinet-platform lokinet-dns lokinet-config lokinet-amalgum) - -pkg_check_modules(CRYPT libcrypt IMPORTED_TARGET) -if(CRYPT_FOUND AND NOT CMAKE_CROSSCOMPILING) - add_definitions(-DHAVE_CRYPT) - add_library(libcrypt INTERFACE) - target_link_libraries(libcrypt INTERFACE PkgConfig::CRYPT) - target_link_libraries(lokinet-amalgum PRIVATE libcrypt) - message(STATUS "using libcrypt ${CRYPT_VERSION}") + lokinet-nodedb + lokinet-context + lokinet-plainquic + lokinet-layer-routing + lokinet-layer-onion + lokinet-dht + lokinet-platform + lokinet-rpc + ) + target_link_libraries(lokinet-layers INTERFACE lokinet-service-deprecated-kitchensink) endif() +target_link_libraries(lokinet-layers INTERFACE + lokinet-layer-platform + lokinet-layer-flow + lokinet-layer-routing + lokinet-layer-onion + lokinet-layer-link + lokinet-layer-wire +) + + +# per component external deps + +target_link_libraries(lokinet-config PUBLIC oxenmq::oxenmq) +target_link_libraries(lokinet-platform PUBLIC oxenmq::oxenmq) +target_link_libraries(lokinet-dns PUBLIC libunbound) + +target_link_libraries(lokinet-cryptography PUBLIC + oxenc::oxenc + sodium +) + +target_link_libraries(lokinet-context PUBLIC + CLI11 + oxenmq::oxenmq + uvw +) + +target_link_libraries(lokinet-platform PUBLIC + Threads::Threads + base_libs + uvw +) + +target_link_libraries(lokinet-util PUBLIC + nlohmann_json::nlohmann_json + filesystem + oxenc::oxenc +) + +target_link_libraries(lokinet-plainquic PUBLIC + ngtcp2_static + uvw +) -if(BUILD_LIBLOKINET) +if(WITH_EMBEDDED_LOKINET) include(GNUInstallDirs) add_library(lokinet-shared SHARED lokinet_shared.cpp) target_link_libraries(lokinet-shared PUBLIC lokinet-amalgum) @@ -316,11 +531,5 @@ if(BUILD_LIBLOKINET) endif() endif() -if(APPLE) - add_subdirectory(apple) - target_sources(lokinet-platform PRIVATE util/nop_service_manager.cpp) -endif() - file(GLOB_RECURSE docs_SRC */*.hpp *.hpp) - set(DOCS_SRC ${docs_SRC} PARENT_SCOPE) diff --git a/llarp/crypto/constants.hpp b/llarp/crypto/constants.hpp index 1d039bbc2..7f8eef90f 100644 --- a/llarp/crypto/constants.hpp +++ b/llarp/crypto/constants.hpp @@ -2,7 +2,7 @@ #include -#include +#include static constexpr uint32_t PUBKEYSIZE = 32; static constexpr uint32_t SECKEYSIZE = 64; diff --git a/llarp/layers/endpoint/kitchen_sink.cpp b/llarp/layers/flow/stub.cpp similarity index 100% rename from llarp/layers/endpoint/kitchen_sink.cpp rename to llarp/layers/flow/stub.cpp diff --git a/llarp/layers/flow/kitchen_sink.cpp b/llarp/layers/platform/stub.cpp similarity index 100% rename from llarp/layers/flow/kitchen_sink.cpp rename to llarp/layers/platform/stub.cpp