mirror of
https://github.com/oxen-io/lokinet
synced 2023-12-14 06:53:00 +01:00
Merge pull request #568 from michael-loki/release_with_static
More work on router docker image
This commit is contained in:
commit
03865e76fb
16 changed files with 140 additions and 120 deletions
106
CMakeLists.txt
106
CMakeLists.txt
|
@ -40,29 +40,7 @@ else()
|
|||
enable_language(ASM)
|
||||
endif(MSVC_VERSION)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
||||
# check if we have the (saner) emulation of epoll here
|
||||
# it's basically linux epoll but with a sane method of
|
||||
# dealing with closed file handles that still exist in the
|
||||
# epoll set
|
||||
#
|
||||
# Note that the zombie of Oracle Solaris 2.11.x will NOT have
|
||||
# this, the header check is the only method we have to distinguish
|
||||
# them. -rick the svr4 guy
|
||||
set(SOLARIS ON)
|
||||
option(USE_POLL "Revert to using poll(2) event loop (useful if targeting Oracle Solaris)" OFF)
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lsocket -lnsl")
|
||||
add_definitions(-D_POSIX_PTHREAD_SEMANTICS)
|
||||
INCLUDE(CheckIncludeFiles)
|
||||
CHECK_INCLUDE_FILES(sys/epoll.h SOLARIS_HAVE_EPOLL)
|
||||
if (SOLARIS_HAVE_EPOLL AND NOT USE_POLL)
|
||||
message(STATUS "Using fast emulation of Linux epoll(5) on Solaris.")
|
||||
add_definitions(-DSOLARIS_HAVE_EPOLL)
|
||||
else()
|
||||
set(SOLARIS_HAVE_EPOLL OFF)
|
||||
message(STATUS "Falling back to poll(2)-based event loop.")
|
||||
endif()
|
||||
endif()
|
||||
include(cmake/solaris.cmake)
|
||||
|
||||
if(WIN32)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
@ -112,15 +90,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|||
add_compile_options(-Wthread-safety)
|
||||
endif()
|
||||
|
||||
if (WITH_COVERAGE)
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
add_compile_options( -fprofile-instr-generate -fcoverage-mapping )
|
||||
link_libraries( -fprofile-instr-generate )
|
||||
else()
|
||||
add_compile_options( --coverage -g0 )
|
||||
link_libraries( --coverage )
|
||||
endif()
|
||||
endif()
|
||||
include(cmake/coverage.cmake)
|
||||
|
||||
# these vars are set by the cmake toolchain spec
|
||||
if (WOW64_CROSS_COMPILE OR WIN64_CROSS_COMPILE)
|
||||
|
@ -173,16 +143,21 @@ find_package(Threads REQUIRED)
|
|||
# not supported on Solaris - system libraries are not available as archives
|
||||
if(STATIC_LINK_RUNTIME)
|
||||
if (NOT SOLARIS)
|
||||
add_compile_options(-static)
|
||||
add_compile_options(-static -flto)
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -static-libstdc++ -pthread" )
|
||||
link_libraries( -static -static-libstdc++ -pthread -flto )
|
||||
else()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" )
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
# this is messing with release builds
|
||||
add_compile_options(-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0)
|
||||
set(CMAKE_AR "gcc-ar")
|
||||
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
set(CMAKE_C_ARCHIVE_FINISH "true")
|
||||
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
set(CMAKE_CXX_ARCHIVE_FINISH "true")
|
||||
link_libraries( -flto -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive )
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc" )
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
link_libraries( -static-libstdc++ -static-libgcc )
|
||||
endif()
|
||||
endif(STATIC_LINK_RUNTIME)
|
||||
|
||||
|
@ -207,26 +182,14 @@ if(ASAN)
|
|||
endif(ASAN)
|
||||
|
||||
if(SHADOW)
|
||||
set(WITH_STATIC OFF)
|
||||
set(WITH_SHARED ON)
|
||||
if("${SHADOW_ROOT}" STREQUAL "")
|
||||
set(SHADOW_ROOT "$ENV{HOME}/.shadow")
|
||||
endif("${SHADOW_ROOT}" STREQUAL "")
|
||||
if(EXISTS "${SHADOW_ROOT}")
|
||||
message(STATUS "SHADOW_ROOT = ${SHADOW_ROOT}")
|
||||
else()
|
||||
message(FATAL_ERROR "SHADOW_ROOT path does not exist: '${SHADOW_ROOT}'")
|
||||
endif(EXISTS "${SHADOW_ROOT}")
|
||||
|
||||
set(CMAKE_MODULE_PATH "${SHADOW_ROOT}/share/cmake/Modules")
|
||||
include_directories(${CMAKE_MODULE_PATH})
|
||||
include(ShadowTools)
|
||||
add_compile_options(-fno-inline -fno-strict-aliasing )
|
||||
add_definitions(-DTESTNET=1)
|
||||
add_definitions(-DSHADOW_TESTNET)
|
||||
include_directories(${SHADOW_ROOT}/include)
|
||||
include(cmake/shadow.cmake)
|
||||
endif(SHADOW)
|
||||
|
||||
# if(CMAKE_BUILD_TYPE MATCHES Release AND CMAKE_CXX_COMPILER_ID MATCHES "Clang|GCC")
|
||||
# set(OPTIMIZE_FLAGS -UNDEBUG)
|
||||
# endif()
|
||||
|
||||
|
||||
if(CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]")
|
||||
set(OPTIMIZE_FLAGS "")
|
||||
add_definitions(-DLOKINET_DEBUG=1)
|
||||
|
@ -300,36 +263,7 @@ function(add_import_library libname)
|
|||
endfunction()
|
||||
|
||||
if(UNIX)
|
||||
add_definitions(-DUNIX)
|
||||
add_definitions(-DPOSIX)
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
get_filename_component(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-linux.c ABSOLUTE)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_epoll.cpp" ABSOLUTE)
|
||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
|
||||
get_filename_component(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-linux.c ABSOLUTE)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_epoll.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-openbsd.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-netbsd.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-freebsd.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-darwin.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-sunos.c)
|
||||
if (SOLARIS_HAVE_EPOLL)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_epoll.cpp" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_sun.cpp" ABSOLUTE)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Your operating system is not supported yet")
|
||||
endif()
|
||||
include(cmake/unix.cmake)
|
||||
elseif(WIN32)
|
||||
get_filename_component(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-windows.c ABSOLUTE)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_win32.cpp" ABSOLUTE)
|
||||
|
|
28
Makefile
28
Makefile
|
@ -9,6 +9,8 @@ prefix = $(DESTDIR)/usr/local
|
|||
CC ?= cc
|
||||
CXX ?= c++
|
||||
|
||||
BUILD_TYPE ?= Debug
|
||||
|
||||
PYTHON ?= python3
|
||||
|
||||
SETCAP ?= which setcap && setcap cap_net_admin,cap_net_bind_service=+eip
|
||||
|
@ -51,8 +53,6 @@ ANDROID_LOCAL_PROPS=$(ANDROID_DIR)/local.properties
|
|||
GRADLE ?= gradle
|
||||
JAVA_HOME ?= /usr/lib/jvm/default-java
|
||||
|
||||
# jsonrpc server
|
||||
JSONRPC ?= ON
|
||||
# native avx2 code
|
||||
AVX2 ?= OFF
|
||||
# non x86 target
|
||||
|
@ -86,17 +86,17 @@ SCAN_BUILD ?= scan-build
|
|||
UNAME = $(shell which uname)
|
||||
|
||||
ifeq ($(shell $(UNAME)),SunOS)
|
||||
CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DUSE_LIBABYSS=$(JSONRPC) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
|
||||
ANALYZE_CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DUSE_LIBABYSS=$(JSONRPC) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
ANALYZE_CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
|
||||
COVERAGE_CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DUSE_LIBABYSS=$(JSONRPC) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
COVERAGE_CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
else
|
||||
CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DUSE_LIBABYSS=$(JSONRPC) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
|
||||
ANALYZE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DUSE_LIBABYSS=$(JSONRPC) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
ANALYZE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
|
||||
COVERAGE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DUSE_LIBABYSS=$(JSONRPC) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
COVERAGE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
endif
|
||||
|
||||
TARGETS = $(REPO)/lokinet
|
||||
|
@ -118,11 +118,11 @@ clean:
|
|||
|
||||
debug-configure:
|
||||
mkdir -p '$(BUILD_ROOT)'
|
||||
$(CONFIG_CMD) -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
$(CONFIG_CMD) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
|
||||
release-configure: clean
|
||||
mkdir -p '$(BUILD_ROOT)'
|
||||
$(CONFIG_CMD) -DSTATIC_LINK_RUNTIME=ON -DCMAKE_BUILD_TYPE=Debug -DRELEASE_MOTTO="$(shell cat motto.txt)" -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
$(CONFIG_CMD) -DSTATIC_LINK_RUNTIME=ON -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DRELEASE_MOTTO="$(shell cat motto.txt)" -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
|
||||
debug: debug-configure
|
||||
$(MAKE) -C $(BUILD_ROOT)
|
||||
|
@ -143,7 +143,7 @@ release: $(SIGS)
|
|||
|
||||
shadow-configure: clean
|
||||
mkdir -p $(BUILD_ROOT)
|
||||
$(CONFIG_CMD) -DCMAKE_BUILD_TYPE=Debug -DSHADOW=ON
|
||||
$(CONFIG_CMD) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DSHADOW=ON
|
||||
|
||||
shadow-build: shadow-configure
|
||||
$(MAKE) -C $(BUILD_ROOT)
|
||||
|
@ -163,7 +163,7 @@ testnet-clean: clean
|
|||
|
||||
testnet-configure: testnet-clean
|
||||
mkdir -p $(BUILD_ROOT)
|
||||
$(CONFIG_CMD) -DCMAKE_BUILD_TYPE=Debug -DTESTNET=1
|
||||
$(CONFIG_CMD) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DTESTNET=1
|
||||
|
||||
testnet-build: testnet-configure
|
||||
$(MAKE) -C $(BUILD_ROOT)
|
||||
|
@ -198,7 +198,7 @@ android: android-gradle
|
|||
|
||||
windows-debug-configure: clean
|
||||
mkdir -p '$(BUILD_ROOT)'
|
||||
$(CONFIG_CMD) -DCMAKE_TOOLCHAIN_FILE='$(REPO)/contrib/cross/mingw.cmake' -DCMAKE_BUILD_TYPE=Debug -DCMAKE_ASM_FLAGS='$(ASFLAGS)' -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
$(CONFIG_CMD) -DCMAKE_TOOLCHAIN_FILE='$(REPO)/contrib/cross/mingw.cmake' -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DCMAKE_ASM_FLAGS='$(ASFLAGS)' -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
|
||||
windows-debug: windows-debug-configure
|
||||
$(MAKE) -C '$(BUILD_ROOT)'
|
||||
|
@ -206,7 +206,7 @@ windows-debug: windows-debug-configure
|
|||
|
||||
windows-release-configure: clean
|
||||
mkdir -p '$(BUILD_ROOT)'
|
||||
$(CONFIG_CMD) -DCMAKE_TOOLCHAIN_FILE='$(REPO)/contrib/cross/mingw.cmake' -DCMAKE_BUILD_TYPE=Release -DCMAKE_ASM_FLAGS='$(ASFLAGS)' -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
$(CONFIG_CMD) -DCMAKE_TOOLCHAIN_FILE='$(REPO)/contrib/cross/mingw.cmake' -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DCMAKE_ASM_FLAGS='$(ASFLAGS)' -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)'
|
||||
|
||||
windows-release: windows-release-configure
|
||||
$(MAKE) -C '$(BUILD_ROOT)'
|
||||
|
|
9
cmake/coverage.cmake
Normal file
9
cmake/coverage.cmake
Normal file
|
@ -0,0 +1,9 @@
|
|||
if (WITH_COVERAGE)
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
add_compile_options( -fprofile-instr-generate -fcoverage-mapping )
|
||||
link_libraries( -fprofile-instr-generate )
|
||||
else()
|
||||
add_compile_options( --coverage -g0 )
|
||||
link_libraries( --coverage )
|
||||
endif()
|
||||
endif()
|
18
cmake/shadow.cmake
Normal file
18
cmake/shadow.cmake
Normal file
|
@ -0,0 +1,18 @@
|
|||
set(WITH_STATIC OFF)
|
||||
set(WITH_SHARED ON)
|
||||
if("${SHADOW_ROOT}" STREQUAL "")
|
||||
set(SHADOW_ROOT "$ENV{HOME}/.shadow")
|
||||
endif("${SHADOW_ROOT}" STREQUAL "")
|
||||
if(EXISTS "${SHADOW_ROOT}")
|
||||
message(STATUS "SHADOW_ROOT = ${SHADOW_ROOT}")
|
||||
else()
|
||||
message(FATAL_ERROR "SHADOW_ROOT path does not exist: '${SHADOW_ROOT}'")
|
||||
endif(EXISTS "${SHADOW_ROOT}")
|
||||
|
||||
set(CMAKE_MODULE_PATH "${SHADOW_ROOT}/share/cmake/Modules")
|
||||
include_directories(${CMAKE_MODULE_PATH})
|
||||
include(ShadowTools)
|
||||
add_compile_options(-fno-inline -fno-strict-aliasing )
|
||||
add_definitions(-DTESTNET=1)
|
||||
add_definitions(-DSHADOW_TESTNET)
|
||||
include_directories(${SHADOW_ROOT}/include)
|
23
cmake/solaris.cmake
Normal file
23
cmake/solaris.cmake
Normal file
|
@ -0,0 +1,23 @@
|
|||
if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
||||
# check if we have the (saner) emulation of epoll here
|
||||
# it's basically linux epoll but with a sane method of
|
||||
# dealing with closed file handles that still exist in the
|
||||
# epoll set
|
||||
#
|
||||
# Note that the zombie of Oracle Solaris 2.11.x will NOT have
|
||||
# this, the header check is the only method we have to distinguish
|
||||
# them. -rick the svr4 guy
|
||||
set(SOLARIS ON)
|
||||
option(USE_POLL "Revert to using poll(2) event loop (useful if targeting Oracle Solaris)" OFF)
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lsocket -lnsl")
|
||||
add_definitions(-D_POSIX_PTHREAD_SEMANTICS)
|
||||
INCLUDE(CheckIncludeFiles)
|
||||
CHECK_INCLUDE_FILES(sys/epoll.h SOLARIS_HAVE_EPOLL)
|
||||
if (SOLARIS_HAVE_EPOLL AND NOT USE_POLL)
|
||||
message(STATUS "Using fast emulation of Linux epoll(5) on Solaris.")
|
||||
add_definitions(-DSOLARIS_HAVE_EPOLL)
|
||||
else()
|
||||
set(SOLARIS_HAVE_EPOLL OFF)
|
||||
message(STATUS "Falling back to poll(2)-based event loop.")
|
||||
endif()
|
||||
endif()
|
30
cmake/unix.cmake
Normal file
30
cmake/unix.cmake
Normal file
|
@ -0,0 +1,30 @@
|
|||
add_definitions(-DUNIX)
|
||||
add_definitions(-DPOSIX)
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
get_filename_component(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-linux.c ABSOLUTE)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_epoll.cpp" ABSOLUTE)
|
||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
|
||||
get_filename_component(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-linux.c ABSOLUTE)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_epoll.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-openbsd.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-netbsd.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-freebsd.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-darwin.c ${TT_ROOT}/tuntap-unix-bsd.c)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_kqueue.cpp" ABSOLUTE)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
||||
set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-unix-sunos.c)
|
||||
if (SOLARIS_HAVE_EPOLL)
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_epoll.cpp" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(EV_SRC "llarp/ev/ev_sun.cpp" ABSOLUTE)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Your operating system is not supported yet")
|
||||
endif()
|
|
@ -239,7 +239,7 @@ crypto_hash_sha512_update(crypto_hash_sha512_state *state,
|
|||
state->count[0] += bitlen[0];
|
||||
if(inlen < 128 - r)
|
||||
{
|
||||
for(i = 0; i < inlen; i++)
|
||||
for(i = 0; i < inlen || i < 128; i++)
|
||||
{
|
||||
state->buf[r + i] = in[i];
|
||||
}
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
FROM ubuntu:latest
|
||||
FROM alpine:latest as builder
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y build-essential cmake git libcap-dev curl ninja-build
|
||||
RUN apk update && \
|
||||
apk add build-base cmake git libcap-dev curl ninja bash binutils-gold
|
||||
|
||||
WORKDIR /src/
|
||||
COPY . /src/
|
||||
|
||||
RUN make NINJA=ninja
|
||||
#RUN ./lokinet -r -f
|
||||
COPY lokinet-docker.ini /root/.lokinet/lokinet.ini
|
||||
RUN make NINJA=ninja STATIC_LINK=ON BUILD_TYPE=Release
|
||||
RUN ./lokinet-bootstrap
|
||||
|
||||
FROM alpine:latest
|
||||
|
||||
COPY lokinet-docker.ini /root/.lokinet/lokinet.ini
|
||||
COPY --from=builder /src/build/lokinet .
|
||||
COPY --from=builder /root/.lokinet/bootstrap.signed /root/.lokinet/
|
||||
|
||||
CMD ["./lokinet"]
|
||||
EXPOSE 1090/udp 1190/tcp
|
||||
|
|
|
@ -366,13 +366,13 @@ namespace llarp
|
|||
// we are the farthest hop
|
||||
llarp::LogDebug("We are the farthest hop for ", info);
|
||||
// send a LRAM down the path
|
||||
self->context->Logic()->queue_job({self, &SendPathConfirm});
|
||||
self->context->logic()->queue_job({self, &SendPathConfirm});
|
||||
}
|
||||
else
|
||||
{
|
||||
// forward upstream
|
||||
// we are still in the worker thread so post job to logic
|
||||
self->context->Logic()->queue_job({self, &SendLRCM});
|
||||
self->context->logic()->queue_job({self, &SendLRCM});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -64,7 +64,7 @@ namespace llarp
|
|||
}
|
||||
|
||||
Logic*
|
||||
PathContext::Logic()
|
||||
PathContext::logic()
|
||||
{
|
||||
return m_Router->logic();
|
||||
}
|
||||
|
|
|
@ -675,7 +675,7 @@ namespace llarp
|
|||
Crypto();
|
||||
|
||||
Logic*
|
||||
Logic();
|
||||
logic();
|
||||
|
||||
AbstractRouter*
|
||||
Router();
|
||||
|
|
|
@ -897,14 +897,14 @@ namespace llarp
|
|||
if(!GetSenderFor(frame.T, si))
|
||||
return false;
|
||||
// verify source
|
||||
if(!frame.Verify(Crypto(), si))
|
||||
if(!frame.Verify(crypto(), si))
|
||||
return false;
|
||||
// remove convotag it doesn't exist
|
||||
LogWarn("remove convotag T=", frame.T);
|
||||
RemoveConvoTag(frame.T);
|
||||
return true;
|
||||
}
|
||||
if(!frame.AsyncDecryptAndVerify(EndpointLogic(), Crypto(), p, Worker(),
|
||||
if(!frame.AsyncDecryptAndVerify(EndpointLogic(), crypto(), p, Worker(),
|
||||
m_Identity, m_DataHandler))
|
||||
{
|
||||
// send discard
|
||||
|
@ -912,7 +912,7 @@ namespace llarp
|
|||
f.R = 1;
|
||||
f.T = frame.T;
|
||||
f.F = p->intro.pathID;
|
||||
if(!f.Sign(Crypto(), m_Identity))
|
||||
if(!f.Sign(crypto(), m_Identity))
|
||||
return false;
|
||||
const routing::PathTransferMessage d(f, frame.F);
|
||||
return p->SendRoutingMessage(d, router);
|
||||
|
@ -1197,7 +1197,7 @@ namespace llarp
|
|||
}
|
||||
|
||||
Crypto*
|
||||
Endpoint::Crypto()
|
||||
Endpoint::crypto()
|
||||
{
|
||||
return m_Router->crypto();
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ namespace llarp
|
|||
EndpointNetLoop();
|
||||
|
||||
Crypto*
|
||||
Crypto();
|
||||
crypto();
|
||||
|
||||
llarp_threadpool*
|
||||
Worker();
|
||||
|
|
|
@ -195,7 +195,7 @@ namespace llarp
|
|||
}
|
||||
currentConvoTag.Randomize();
|
||||
AsyncKeyExchange* ex = new AsyncKeyExchange(
|
||||
m_Endpoint->RouterLogic(), m_Endpoint->Crypto(), remoteIdent,
|
||||
m_Endpoint->RouterLogic(), m_Endpoint->crypto(), remoteIdent,
|
||||
m_Endpoint->GetIdentity(), currentIntroSet.K, remoteIntro,
|
||||
m_DataHandler, currentConvoTag);
|
||||
|
||||
|
|
|
@ -603,8 +603,9 @@ namespace llarp
|
|||
OurCrypto()->shorthash(rxKey, llarp_buffer_t(rid));
|
||||
remoteRC.Clear();
|
||||
|
||||
ABSL_ATTRIBUTE_UNUSED void* res = utp_set_userdata(sock, this);
|
||||
assert(res == this);
|
||||
assert(s == sock);
|
||||
assert(utp_set_userdata(sock, this) == this);
|
||||
GotLIM = std::bind(&InboundSession::InboundLIM, this, _1);
|
||||
}
|
||||
|
||||
|
@ -693,7 +694,8 @@ namespace llarp
|
|||
rid = p->GetOurRC().pubkey;
|
||||
OurCrypto()->shorthash(rxKey, llarp_buffer_t(rid));
|
||||
|
||||
assert(utp_set_userdata(sock, this) == this);
|
||||
ABSL_ATTRIBUTE_UNUSED void* res = utp_set_userdata(sock, this);
|
||||
assert(res == this);
|
||||
assert(s == sock);
|
||||
|
||||
GotLIM = std::bind(&OutboundSession::OutboundLIM, this, _1);
|
||||
|
|
|
@ -26,7 +26,7 @@ tmp=/tmp/bootstrap.tmp
|
|||
|
||||
# MacOS does not have wget without homebrew but does have curl
|
||||
# Rick also had indicated most BSDs have curl too
|
||||
curl "$url" > "$tmp" && \
|
||||
curl -o "$tmp" "$url" && \
|
||||
(mv "$tmp" "$HOME/.lokinet/bootstrap.signed" && echo -e "${GREEN}lokinet successfully bootstrapped${NC}" ) \
|
||||
|| echo -e "${RED}failed to download bootstrap from $url${NC}"
|
||||
rm -f "$tmp"
|
||||
|
|
Loading…
Reference in a new issue