From 9260bd53d4f0ca5c9bdbdf0c82e0fff6dac5ef06 Mon Sep 17 00:00:00 2001 From: OpenAI Date: Thu, 4 Jun 2026 12:08:13 +0000 Subject: [PATCH] Integrate NW crypto stack CMake options --- CMakeLists.txt | 53 +++++++++++++++++++++++++++++++++++++++++++++- src/CMakeLists.txt | 1 + 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 26d98f6..94c10a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,8 @@ option(ENABLE_XATTR "Should we build Mars Nwe with extended attribute support?" option(MARS_NWE_INSTALL_DOSUTILS "Install DOS client utilities" ON) option(MARS_NWE_INSTALL_NEW_DOSUTILS "Install the new/experimental DOS client utilities instead of legacy netold.exe" OFF) option(MARS_NWE_BUILD_TESTS "Build optional mars_nwe integration tests" OFF) +option(ENABLE_DIRECTORY "Build the optional nwdirectory/TinyLDAP subsystem" OFF) +option(MARS_NWE_BUILD_MATRIXSSL_PROGRAMS "Build MatrixSSL example apps, tests and helper tools" OFF) # Maintainer builds rebuild the DOS tools from source. In that mode install # the freshly built/new DOS utility set automatically so developers do not have @@ -174,7 +176,6 @@ ENDIF (NOT MAX_FILES) find_package(Crypt REQUIRED) find_package(GDBM REQUIRED) -find_package(OpenSSL REQUIRED) find_package(PAM REQUIRED) find_package(DL REQUIRED) @@ -236,7 +237,55 @@ set(BUILD_SHARED_LIBS ${MARS_NWE_SAVED_BUILD_SHARED_LIBS}) message(STATUS "Salvage JSON backend: bundled static yyjson") +# mars-nwe private third-party stack. These are built with the nw namespace so +# they can be installed next to system libraries and headers without collisions. +set(LIBOWFAT_LIBRARY_PREFIX nw CACHE STRING "" FORCE) +set(LIBOWFAT_BUILD_SHARED ON CACHE BOOL "" FORCE) +set(LIBOWFAT_BUILD_STATIC OFF CACHE BOOL "" FORCE) +set(LIBOWFAT_BUILD_TEST_PROGRAMS OFF CACHE BOOL "" FORCE) +set(LIBOWFAT_RUN_SELF_TESTS OFF CACHE BOOL "" FORCE) + +set(SODIUM_LIBRARY_PREFIX nw CACHE STRING "" FORCE) +set(SODIUM_DISABLE_TESTS ON CACHE BOOL "" FORCE) +set(SODIUM_INSTALL ON CACHE BOOL "" FORCE) + +set(MATRIXSSL_LIBRARY_PREFIX nw CACHE STRING "" FORCE) +set(MATRIXSSL_BUILD_SHARED ON CACHE BOOL "" FORCE) +set(MATRIXSSL_BUILD_STATIC OFF CACHE BOOL "" FORCE) +set(MATRIXSSL_BUILD_OPENSSL_COMPAT ON CACHE BOOL "" FORCE) +set(MATRIXSSL_USE_SODIUM ON CACHE BOOL "" FORCE) +set(MATRIXSSL_BUILD_TESTS ${MARS_NWE_BUILD_MATRIXSSL_PROGRAMS} CACHE BOOL "" FORCE) +set(MATRIXSSL_BUILD_APPS ${MARS_NWE_BUILD_MATRIXSSL_PROGRAMS} CACHE BOOL "" FORCE) +set(MATRIXSSL_BUILD_TOOLS ${MARS_NWE_BUILD_MATRIXSSL_PROGRAMS} CACHE BOOL "" FORCE) + +foreach(_mars_nwe_third_party IN ITEMS + third_party/libowfat + third_party/libsodium + third_party/matrixssl) + if(NOT EXISTS "${CMAKE_SOURCE_DIR}/${_mars_nwe_third_party}/CMakeLists.txt") + message(FATAL_ERROR "Missing ${_mars_nwe_third_party}; run git submodule update --init --recursive") + endif() +endforeach() + +add_subdirectory(third_party/libowfat) +set(_MARS_NWE_SAVED_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) +set(BUILD_SHARED_LIBS ON) +add_subdirectory(third_party/libsodium) +set(BUILD_SHARED_LIBS ${_MARS_NWE_SAVED_BUILD_SHARED_LIBS}) +add_subdirectory(third_party/matrixssl) + +if(ENABLE_DIRECTORY) + set(TINYLDAP_OUTPUT_NAME nwdirectory CACHE STRING "" FORCE) + set(TINYLDAP_BUILD_SHARED ON CACHE BOOL "" FORCE) + set(TINYLDAP_BUILD_STATIC OFF CACHE BOOL "" FORCE) + set(TINYLDAP_LIBOWFAT_INCLUDE_SUBDIR nwlibowfat CACHE STRING "" FORCE) + set(TINYLDAP_MATRIXSSL_INCLUDE_SUBDIR nwmatrixssl CACHE STRING "" FORCE) + set(TINYLDAP_ALLOW_SYSTEM_OPENSSL OFF CACHE BOOL "" FORCE) + add_subdirectory(directory) +endif() + # we want to use systemd, if possible +find_package(PkgConfig QUIET) set(SYSTEMD_SERVICES_INSTALL_DIR "" CACHE PATH "Directory for systemd service files") INCLUDE(${CMAKE_MODULE_PATH}/systemdservice.cmake) INCLUDE(${CMAKE_MODULE_PATH}/cupsutils.cmake) @@ -259,6 +308,8 @@ message(STATUS "SMArT admin group: ${MARS_NWE_SMART_ADMIN_GROUP}") message(STATUS "Install DOS utilities: ${MARS_NWE_INSTALL_DOSUTILS}") message(STATUS "Install new DOS utilities: ${MARS_NWE_INSTALL_NEW_DOSUTILS}") message(STATUS "Build DOS utilities: ${MAINTAINER_BUILD} (maintainer build)") +message(STATUS "Build nwdirectory: ${ENABLE_DIRECTORY}") +message(STATUS "Build MatrixSSL programs: ${MARS_NWE_BUILD_MATRIXSSL_PROGRAMS}") message(STATUS "Maintainer build: ${MAINTAINER_BUILD}") message(STATUS "Packet Burst support: ${ENABLE_BURSTMODE}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b35da8e..c1cb0b2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -43,6 +43,7 @@ INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include + ${GDBM_INCLUDE_DIR} ) #################################