diff --git a/modules/build/CMakeLists.txt b/modules/build/CMakeLists.txt index e1e64c7..41a5ff0 100644 --- a/modules/build/CMakeLists.txt +++ b/modules/build/CMakeLists.txt @@ -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" ) \ No newline at end of file