fix(build): globally enable I2P SAMv3 support by default and link GUI to sam3

This commit is contained in:
jolavillette 2026-06-01 12:58:11 +02:00
parent 6e61ed2e77
commit 72cb4eabd2
4 changed files with 29 additions and 27 deletions

View File

@ -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)

View File

@ -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 "=============================================================================="

@ -1 +1 @@
Subproject commit efc741f1512ba88214057197fa12a9dd0ce44f1b
Subproject commit b60973cc04a00c1cf5620c5b633b524405d55cb8

View File

@ -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()
################################################################################