basic signing capabilities - initial implementation, lots of kinks to work out

master
Chris Punches 2025-03-23 14:16:47 -04:00
parent c733bb634c
commit 9642581509
1 changed files with 47 additions and 37 deletions
modules/build

View File

@ -5,9 +5,9 @@ set(CMAKE_CXX_STANDARD 20)
# Set DPM_ROOT_DIR based on whether this is a standalone build or part of the main build
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(DPM_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
set(DPM_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
else()
set(DPM_ROOT_DIR "${CMAKE_SOURCE_DIR}")
set(DPM_ROOT_DIR "${CMAKE_SOURCE_DIR}")
endif()
# Find OpenSSL
@ -16,48 +16,57 @@ find_package(OpenSSL REQUIRED)
# Find LibArchive
find_package(LibArchive REQUIRED)
# Find GPGME
find_path(GPGME_INCLUDE_DIR gpgme.h)
find_library(GPGME_LIBRARY NAMES gpgme)
if(NOT GPGME_INCLUDE_DIR OR NOT GPGME_LIBRARY)
message(FATAL_ERROR "GPGME library not found. Please install libgpgme-dev or equivalent package.")
endif()
# Module version - used by DPM
add_library(build MODULE
build.cpp
src/helpers.cpp
src/cli_parsers.cpp
src/commands.cpp
src/staging.cpp
src/signing.cpp
src/checksums.cpp
src/metadata.cpp
src/sealing.cpp
build.cpp
src/helpers.cpp
src/cli_parsers.cpp
src/commands.cpp
src/staging.cpp
src/signing.cpp
src/checksums.cpp
src/metadata.cpp
src/sealing.cpp
)
# Set output properties
set_target_properties(
build PROPERTIES
PREFIX ""
SUFFIX ".so"
build PROPERTIES
PREFIX ""
SUFFIX ".so"
)
# Include directories
target_include_directories(build PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${DPM_ROOT_DIR}
${OPENSSL_INCLUDE_DIR}
${LibArchive_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/include
${DPM_ROOT_DIR}
${OPENSSL_INCLUDE_DIR}
${LibArchive_INCLUDE_DIRS}
${GPGME_INCLUDE_DIR}
)
# Link with filesystem library and OpenSSL
target_link_libraries(build stdc++fs ${OPENSSL_LIBRARIES} ${LibArchive_LIBRARIES})
# Link with libraries
target_link_libraries(build stdc++fs ${OPENSSL_LIBRARIES} ${LibArchive_LIBRARIES} ${GPGME_LIBRARY})
# Standalone version - used for debugging
add_executable(build_standalone
build.cpp
src/helpers.cpp
src/cli_parsers.cpp
src/commands.cpp
src/staging.cpp
src/signing.cpp
src/checksums.cpp
src/metadata.cpp
src/sealing.cpp
build.cpp
src/helpers.cpp
src/cli_parsers.cpp
src/commands.cpp
src/staging.cpp
src/signing.cpp
src/checksums.cpp
src/metadata.cpp
src/sealing.cpp
)
# Define the BUILD_STANDALONE macro for the standalone build
@ -65,17 +74,18 @@ target_compile_definitions(build_standalone PRIVATE BUILD_STANDALONE)
# Include directories for standalone
target_include_directories(build_standalone PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${DPM_ROOT_DIR}
${OPENSSL_INCLUDE_DIR}
${LibArchive_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/include
${DPM_ROOT_DIR}
${OPENSSL_INCLUDE_DIR}
${LibArchive_INCLUDE_DIRS}
${GPGME_INCLUDE_DIR}
)
# Link with filesystem library and OpenSSL for standalone
target_link_libraries(build_standalone stdc++fs ${OPENSSL_LIBRARIES} ${LibArchive_LIBRARIES})
# Link with libraries for standalone
target_link_libraries(build_standalone stdc++fs ${OPENSSL_LIBRARIES} ${LibArchive_LIBRARIES} ${GPGME_LIBRARY})
# Set the output name for the standalone executable
set_target_properties(
build_standalone PROPERTIES
OUTPUT_NAME "build_debug"
build_standalone PROPERTIES
OUTPUT_NAME "build_debug"
)