41 lines
1.1 KiB
CMake
41 lines
1.1 KiB
CMake
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
|
|
$<$<BOOL:${HOMCERT_BFV_SEAL}>: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()
|