mirror of https://github.com/oxen-io/lokinet
redo cmake parts
* add liblokinet.so target * make every library we build except liblokinet.so static * wire up parts of liblokinet
This commit is contained in:
parent
affd2e23f7
commit
e4841917ba
|
@ -38,7 +38,7 @@ option(USE_AVX2 "enable avx2 code" OFF)
|
||||||
option(USE_NETNS "enable networking namespace support. Linux only" OFF)
|
option(USE_NETNS "enable networking namespace support. Linux only" OFF)
|
||||||
option(NATIVE_BUILD "optimise for host system and FPU" ON)
|
option(NATIVE_BUILD "optimise for host system and FPU" ON)
|
||||||
option(EMBEDDED_CFG "optimise for older hardware or embedded systems" OFF)
|
option(EMBEDDED_CFG "optimise for older hardware or embedded systems" OFF)
|
||||||
option(BUILD_SHARED_LIBS "build lokinet libraries as shared libraries instead of static" OFF)
|
option(BUILD_LIBLOKINET "build liblokinet.so" ON)
|
||||||
option(SHADOW "use shadow testing framework. linux only" OFF)
|
option(SHADOW "use shadow testing framework. linux only" OFF)
|
||||||
option(XSAN "use sanitiser, if your system has it (requires -DCMAKE_BUILD_TYPE=Debug)" OFF)
|
option(XSAN "use sanitiser, if your system has it (requires -DCMAKE_BUILD_TYPE=Debug)" OFF)
|
||||||
option(WITH_JEMALLOC "use jemalloc as allocator" OFF)
|
option(WITH_JEMALLOC "use jemalloc as allocator" OFF)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
|
||||||
add_library(lokinet-cryptography
|
add_library(lokinet-cryptography
|
||||||
|
STATIC
|
||||||
libntrup/src/ntru.cpp
|
libntrup/src/ntru.cpp
|
||||||
libntrup/src/ref/randomsmall.c
|
libntrup/src/ref/randomsmall.c
|
||||||
libntrup/src/ref/swap.c
|
libntrup/src/ref/swap.c
|
||||||
|
@ -58,10 +59,6 @@ endif()
|
||||||
enable_lto(lokinet-cryptography)
|
enable_lto(lokinet-cryptography)
|
||||||
add_log_tag(lokinet-cryptography)
|
add_log_tag(lokinet-cryptography)
|
||||||
|
|
||||||
if(BUILD_SHARED_LIBS)
|
|
||||||
install(TARGETS lokinet-cryptography LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (WARNINGS_AS_ERRORS)
|
if (WARNINGS_AS_ERRORS)
|
||||||
target_compile_options(lokinet-cryptography PUBLIC -Wall -Wextra -Werror)
|
target_compile_options(lokinet-cryptography PUBLIC -Wall -Wextra -Werror)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define LOKINET_H
|
#define LOKINET_H
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
include(Version)
|
include(Version)
|
||||||
|
|
||||||
add_library(lokinet-util
|
add_library(lokinet-util
|
||||||
|
STATIC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/constants/version.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/constants/version.cpp
|
||||||
util/bencode.cpp
|
util/bencode.cpp
|
||||||
util/buffer.cpp
|
util/buffer.cpp
|
||||||
|
@ -47,7 +48,8 @@ if(ANDROID)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(lokinet-platform
|
add_library(lokinet-platform
|
||||||
# for networking
|
STATIC
|
||||||
|
# for networking
|
||||||
ev/ev.cpp
|
ev/ev.cpp
|
||||||
ev/ev_libuv.cpp
|
ev/ev_libuv.cpp
|
||||||
net/ip.cpp
|
net/ip.cpp
|
||||||
|
@ -91,6 +93,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(liblokinet
|
add_library(liblokinet
|
||||||
|
STATIC
|
||||||
config/config.cpp
|
config/config.cpp
|
||||||
config/definition.cpp
|
config/definition.cpp
|
||||||
config/ini.cpp
|
config/ini.cpp
|
||||||
|
@ -230,13 +233,16 @@ target_link_libraries(liblokinet PUBLIC cxxopts lokinet-platform lokinet-util lo
|
||||||
target_link_libraries(liblokinet PRIVATE libunbound)
|
target_link_libraries(liblokinet PRIVATE libunbound)
|
||||||
|
|
||||||
|
|
||||||
if(BUILD_SHARED_LIBS)
|
if(BUILD_LIBLOKINET)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
add_library(lokinet-shared SHARED lokinet_shared.cpp)
|
||||||
install(TARGETS lokinet-util lokinet-platform liblokinet LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
set_target_properties(lokinet-shared PROPERTIES OUTPUT_NAME lokinet)
|
||||||
|
target_link_libraries(lokinet-shared liblokinet)
|
||||||
|
install(TARGETS lokinet-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_link_libraries(liblokinet PUBLIC ws2_32 iphlpapi)
|
target_link_libraries(lokinet-shared PUBLIC ws2_32 iphlpapi)
|
||||||
endif()
|
endif()
|
||||||
|
add_log_tag(lokinet-shared)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
foreach(lokinet_lib liblokinet lokinet-platform lokinet-util lokinet-cryptography)
|
foreach(lokinet_lib liblokinet lokinet-platform lokinet-util lokinet-cryptography)
|
||||||
|
@ -244,5 +250,5 @@ foreach(lokinet_lib liblokinet lokinet-platform lokinet-util lokinet-cryptograph
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
file(GLOB_RECURSE docs_SRC */*.hpp *.hpp)
|
file(GLOB_RECURSE docs_SRC */*.hpp *.hpp)
|
||||||
|
|
||||||
set(DOCS_SRC ${docs_SRC} PARENT_SCOPE)
|
set(DOCS_SRC ${docs_SRC} PARENT_SCOPE)
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
|
||||||
|
|
||||||
|
#include "lokinet.h"
|
||||||
|
#include "llarp.hpp"
|
||||||
|
#include "config/config.hpp"
|
||||||
|
|
||||||
|
struct lokinet_context
|
||||||
|
{
|
||||||
|
std::shared_ptr<llarp::Context> impl;
|
||||||
|
|
||||||
|
std::unique_ptr<std::thread> runner;
|
||||||
|
|
||||||
|
lokinet_context() : impl{std::make_shared<llarp::Context>()}
|
||||||
|
{}
|
||||||
|
|
||||||
|
~lokinet_context()
|
||||||
|
{
|
||||||
|
if (runner)
|
||||||
|
runner->join();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct lokinet_context g_context
|
||||||
|
{};
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
struct lokinet_context*
|
||||||
|
lokinet_default()
|
||||||
|
{
|
||||||
|
return &g_context;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct lokinet_context*
|
||||||
|
lokinet_context_new()
|
||||||
|
{
|
||||||
|
return new lokinet_context{};
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
lokinet_context_free(struct lokinet_context* ctx)
|
||||||
|
{
|
||||||
|
delete ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
lokinet_context_start(struct lokinet_context* ctx)
|
||||||
|
{
|
||||||
|
ctx->runner = std::make_unique<std::thread>([ctx]() {
|
||||||
|
auto config = std::make_shared<llarp::Config>(fs::path{""});
|
||||||
|
ctx->impl->Configure(config);
|
||||||
|
const llarp::RuntimeOptions opts{};
|
||||||
|
ctx->impl->Setup(opts);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
lokinet_context_stop(struct lokinet_context* ctx)
|
||||||
|
{
|
||||||
|
ctx->impl->CloseAsync();
|
||||||
|
ctx->impl->Wait();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue