From 72cb4eabd20445c88dd7fe9543f4ed2d3ffe6fd6 Mon Sep 17 00:00:00 2001 From: jolavillette Date: Mon, 1 Jun 2026 12:58:11 +0200 Subject: [PATCH] fix(build): globally enable I2P SAMv3 support by default and link GUI to sam3 --- CMakeLists.txt | 29 ++++++++++++++++++----------- Makefile | 10 ++++++++-- libretroshare | 2 +- retroshare-gui/CMakeLists.txt | 15 ++------------- 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d48599a5..df81c7eb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,17 +6,6 @@ cmake_minimum_required(VERSION 3.5.0) set(CMAKE_POLICY_VERSION_MINIMUM 3.5) project(retroshare-monorepo) -# Force C++17 globally for all targets (including plugins) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -if(APPLE) - # On macOS, allow undefined symbols in shared modules/libraries at link time - # because they will be resolved at runtime by the host executable (retroshare-gui) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -undefined dynamic_lookup") -endif() - # Global setting to allow executables to export symbols for plugin/module linking set(CMAKE_ENABLE_EXPORTS ON) @@ -25,6 +14,24 @@ option(RS_GUI "Build RetroShare GUI" ON) option(RS_SERVICE "Build RetroShare Service" ON) option(RS_FRIENDSERVER "Build RetroShare Friendserver" ON) option(RS_PLUGINS "Build RetroShare Plugins" OFF) +option(RS_USE_I2P_SAM3 "Enable I2P SAMv3 support" ON) + +if(RS_USE_I2P_SAM3) + add_definitions(-DRS_USE_I2P_SAM3 -DRS_USE_I2P_SAM3_LIBSAM3) + + set(SAM3_DEVEL_DIR "${CMAKE_SOURCE_DIR}/supportlibs/libsam3") + if(EXISTS "${SAM3_DEVEL_DIR}") + message(STATUS "libsam3 found at ${SAM3_DEVEL_DIR}, defining target sam3 globally") + add_library(sam3 STATIC + "${SAM3_DEVEL_DIR}/src/libsam3/libsam3.c" + "${SAM3_DEVEL_DIR}/src/libsam3a/libsam3a.c" + ) + target_include_directories(sam3 PUBLIC + "${SAM3_DEVEL_DIR}/src/libsam3" + "${SAM3_DEVEL_DIR}/src/libsam3a" + ) + endif() +endif() # Global configurations for Windows builds if(WIN32) diff --git a/Makefile b/Makefile index 29aa5a417..2967d26df 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,7 @@ CACHE_RS_PLUGINS := $(call GET_CACHE_VAL,RS_PLUGINS) CACHE_RS_FORUM_DEEP_INDEX := $(call GET_CACHE_VAL,RS_FORUM_DEEP_INDEX) CACHE_RS_DEVELOPMENT_BUILD := $(call GET_CACHE_VAL,RS_DEVELOPMENT_BUILD) CACHE_CMAKE_BUILD_TYPE := $(call GET_CACHE_VAL,CMAKE_BUILD_TYPE) +CACHE_RS_USE_I2P_SAM3 := $(call GET_CACHE_VAL,RS_USE_I2P_SAM3) RS_RNPLIB ?= $(if $(CACHE_RS_RNPLIB),$(CACHE_RS_RNPLIB),ON) RS_JSON_API ?= $(if $(CACHE_RS_JSON_API),$(CACHE_RS_JSON_API),ON) @@ -21,6 +22,7 @@ RS_PLUGINS ?= $(if $(CACHE_RS_PLUGINS),$(CACHE_RS_PLUGINS),OFF) RS_FORUM_DEEP_INDEX ?= $(if $(CACHE_RS_FORUM_DEEP_INDEX),$(CACHE_RS_FORUM_DEEP_INDEX),OFF) RS_DEVELOPMENT_BUILD ?= $(if $(CACHE_RS_DEVELOPMENT_BUILD),$(CACHE_RS_DEVELOPMENT_BUILD),OFF) CMAKE_BUILD_TYPE ?= $(if $(CACHE_CMAKE_BUILD_TYPE),$(CACHE_CMAKE_BUILD_TYPE),RelWithDebInfo) +RS_USE_I2P_SAM3 ?= $(if $(CACHE_RS_USE_I2P_SAM3),$(CACHE_RS_USE_I2P_SAM3),ON) # ============================================================================== # Options validation (stops immediately if any option is invalid) @@ -41,6 +43,7 @@ $(eval $(call VALIDATE_OPTION,RS_WEBUI)) $(eval $(call VALIDATE_OPTION,RS_PLUGINS)) $(eval $(call VALIDATE_OPTION,RS_FORUM_DEEP_INDEX)) $(eval $(call VALIDATE_OPTION,RS_DEVELOPMENT_BUILD)) +$(eval $(call VALIDATE_OPTION,RS_USE_I2P_SAM3)) # Specific validation for CMAKE_BUILD_TYPE (if not empty) ifneq ($(CMAKE_BUILD_TYPE),) @@ -50,7 +53,7 @@ ifneq ($(CMAKE_BUILD_TYPE),) endif # Unrecognized command line variable protection -ALLOWED_VARS := RS_RNPLIB RS_JSON_API RS_WEBUI RS_PLUGINS RS_FORUM_DEEP_INDEX RS_DEVELOPMENT_BUILD CMAKE_BUILD_TYPE CMAKE_GEN CMAKE_FLAGS NPROC +ALLOWED_VARS := RS_RNPLIB RS_JSON_API RS_WEBUI RS_PLUGINS RS_FORUM_DEEP_INDEX RS_DEVELOPMENT_BUILD CMAKE_BUILD_TYPE RS_USE_I2P_SAM3 CMAKE_GEN CMAKE_FLAGS NPROC $(foreach var,$(.VARIABLES),\ $(if $(filter command line,$(origin $(var))),\ @@ -95,7 +98,8 @@ RS_CMAKE_COMMON = \ -DRS_RNPLIB=$(RS_RNPLIB) \ -DRS_PLUGINS=$(RS_PLUGINS) \ -DRS_FORUM_DEEP_INDEX=$(RS_FORUM_DEEP_INDEX) \ - -DRS_DEVELOPMENT_BUILD=$(RS_DEVELOPMENT_BUILD) + -DRS_DEVELOPMENT_BUILD=$(RS_DEVELOPMENT_BUILD) \ + -DRS_USE_I2P_SAM3=$(RS_USE_I2P_SAM3) .PHONY: all clean rnp libretroshare retroshare-service retroshare-friendserver retroshare-gui configure show-config help @@ -205,6 +209,7 @@ show-config: @echo " RS_PLUGINS = $(call GET_VAR_STATUS,RS_PLUGINS)" @echo " RS_FORUM_DEEP_INDEX = $(call GET_VAR_STATUS,RS_FORUM_DEEP_INDEX)" @echo " RS_DEVELOPMENT_BUILD = $(call GET_VAR_STATUS,RS_DEVELOPMENT_BUILD)" + @echo " RS_USE_I2P_SAM3 = $(call GET_VAR_STATUS,RS_USE_I2P_SAM3)" @echo " NPROC = $(NPROC)" @echo " BUILD_DIR = $(BUILD_DIR)" @echo ' CMAKE_GEN = $(CMAKE_GEN)' @@ -237,6 +242,7 @@ help: @echo " RS_PLUGINS Build RetroShare plugins (ON/OFF, default: OFF)" @echo " RS_FORUM_DEEP_INDEX Xapian/FTS5 forum full text search (ON/OFF, default: OFF)" @echo " RS_DEVELOPMENT_BUILD Disable optimisations for fast builds (ON/OFF, default: OFF)" + @echo " RS_USE_I2P_SAM3 Enable I2P SAMv3 support (ON/OFF, default: ON)" @echo " CMAKE_BUILD_TYPE CMake build type (Debug/Release/RelWithDebInfo/MinSizeRel)" @echo " NPROC Number of build threads (default: detected CPUs)" @echo "==============================================================================" diff --git a/libretroshare b/libretroshare index efc741f15..b60973cc0 160000 --- a/libretroshare +++ b/libretroshare @@ -1 +1 @@ -Subproject commit efc741f1512ba88214057197fa12a9dd0ce44f1b +Subproject commit b60973cc04a00c1cf5620c5b633b524405d55cb8 diff --git a/retroshare-gui/CMakeLists.txt b/retroshare-gui/CMakeLists.txt index c7a3b9b9c..6df4cbd01 100644 --- a/retroshare-gui/CMakeLists.txt +++ b/retroshare-gui/CMakeLists.txt @@ -292,19 +292,8 @@ endif(RS_GUI_CMARK) ################################# LibSam v3 #################################### -set(SAM3_DEVEL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../supportlibs/libsam3/") -if(EXISTS "${SAM3_DEVEL_DIR}" ) - message( STATUS "libsam3 found at ${SAM3_DEVEL_DIR}, defining target sam3" ) - add_library(sam3 STATIC - "${SAM3_DEVEL_DIR}/src/libsam3/libsam3.c" - "${SAM3_DEVEL_DIR}/src/libsam3a/libsam3a.c" - ) - target_include_directories(sam3 PUBLIC - "${SAM3_DEVEL_DIR}/src/libsam3" - "${SAM3_DEVEL_DIR}/src/libsam3a" - ) -else() - message( WARNING "libsam3 not found!" ) +if(RS_USE_I2P_SAM3) + target_link_libraries(${PROJECT_NAME} PRIVATE sam3) endif() ################################################################################