cmake_minimum_required(VERSION 3.28) project(homcert LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Allow customizing what components to build option(HOMCERT_BUILD_TESTS "Build homcert tests" OFF) option(HOMCERT_BFV_SEAL "Provide BFV implementation using Microsoft SEAL" ON) if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) set(HOMCERT_BUILD_TESTS ON CACHE BOOL "Enable homcert tests" FORCE) endif() # Include lib crypto find_package(OpenSSL REQUIRED) # Make homcert main library add_library(homcert "") target_link_libraries(homcert PRIVATE OpenSSL::Crypto) target_include_directories(homcert PUBLIC include) target_compile_definitions(homcert PRIVATE $<$:HOMCERT_BFV_SEAL> ) if (HOMCERT_BFV_SEAL) set(SEAL_BUILD_TESTS OFF CACHE BOOL "Disable SEAL tests" FORCE) set(SEAL_BUILD_BENCH OFF CACHE BOOL "Disable SEAL benchmarks" FORCE) set(SEAL_BUILD_EXAMPLES OFF CACHE BOOL "Disable SEAL examples" FORCE) add_subdirectory(SEAL) target_link_libraries(homcert PRIVATE SEAL::seal) endif() add_subdirectory(src) if (HOMCERT_BUILD_TESTS) add_subdirectory(test) endif()