confium 0.2.0

Open-source distributed trust store framework
Documentation
cmake_minimum_required(VERSION 3.15)
project(confium LANGUAGES CXX)
include(GNUInstallDirs)
include(CTest)
add_subdirectory(cmake/corrosion)

option(BUILD_C_BINDINGS "Build C bindings (requires cbindgen)")
option(BUILD_TESTING "Build C-binding tests" OFF)
set(BUILD_SHARED_LIBS ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

corrosion_import_crate(MANIFEST_PATH ./Cargo.toml)

install(
    FILES $<TARGET_FILE:confium-shared>
    DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)

if(BUILD_C_BINDINGS)
    find_program(CBINDGEN cbindgen REQUIRED)
    add_custom_command(TARGET cargo-build_confium POST_BUILD
        COMMAND ${CBINDGEN} "$<TARGET_PROPERTY:SOURCE_DIR>"
            --config "$<TARGET_PROPERTY:SOURCE_DIR>/cbindgen.toml"
            --output "$<TARGET_PROPERTY:BINARY_DIR>/confium.h"
        COMMENT "Generating bindings..."
    )
    install(
        FILES "$<TARGET_PROPERTY:cargo-build_confium,BINARY_DIR>/confium.h"
        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
    )
endif()

if(BUILD_TESTING)
    if(NOT BUILD_C_BINDINGS)
        message(FATAL_ERROR "C bindings must be built (BUILD_C_BINDINGS) to build tests")
    endif()
    add_subdirectory(cpp-tests)
endif()