cmake_minimum_required(VERSION 3.10)
project(pqcp_test C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(PQCP_ROOT "${PROJECT_SOURCE_DIR}/..")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(SECUREC_LIB "" CACHE STRING "Path to the securec library")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MACROS}")
find_package(Threads REQUIRED)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3 -O0 -Wall -Wextra")
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra")
endif()
if(ENABLE_ASAN)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
endif()
if(ENABLE_GCOV)
message(STATUS "Enabling gcov code coverage flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov --coverage")
endif()
message(STATUS "HITLS_ROOT_DIR: ${HITLS_ROOT_DIR}")
set(PQCP_DEPENDENCY_DIRS
${HITLS_ROOT_DIR}/build
${CMAKE_SOURCE_DIR}/../build
CACHE STRING "PQCP dependency library paths")
find_library(HITLS_CRYPTO_LIB hitls_crypto
PATHS ${PQCP_DEPENDENCY_DIRS}
NO_DEFAULT_PATH)
find_library(HITLS_BSL_LIB hitls_bsl
PATHS ${PQCP_DEPENDENCY_DIRS}
NO_DEFAULT_PATH)
find_library(PQCP_PROVIDER_LIB pqcp_provider
PATHS ${PQCP_DEPENDENCY_DIRS}
NO_DEFAULT_PATH)
foreach(LIB IN ITEMS
HITLS_CRYPTO_LIB
HITLS_BSL_LIB
PQCP_PROVIDER_LIB)
if(NOT ${LIB})
message(FATAL_ERROR "Required library ${LIB} not found in: ${PQCP_DEPENDENCY_DIRS}")
endif()
endforeach()
add_compile_options(-Wall -Wextra -Werror -Wno-enum-conversion)
include_directories(
${HITLS_ROOT_DIR}/include/bsl
${HITLS_ROOT_DIR}/include/crypto
${CMAKE_SOURCE_DIR}/common
${CMAKE_SOURCE_DIR}/../include
${CMAKE_SOURCE_DIR}/../src/scloudplus/include
${CMAKE_SOURCE_DIR}/../src/scloudplus/src
${CMAKE_SOURCE_DIR}/../src/composite_sign/include
${CMAKE_SOURCE_DIR}/../src/composite_sign/src
${CMAKE_SOURCE_DIR}/../src/hiae/include
${CMAKE_SOURCE_DIR}/../src/hiae/src
)
if(BUILD_DEMO)
set(DEMO_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/output)
file(GLOB DEMO_FILES "demo/*.c")
foreach(DEMO_FILE ${DEMO_FILES})
get_filename_component(DEMO_NAME ${DEMO_FILE} NAME_WE)
add_executable(${DEMO_NAME} ${DEMO_FILE} ${COMMON_SOURCES})
set_target_properties(${DEMO_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${DEMO_OUTPUT_DIR}/demo
)
target_link_libraries(${DEMO_NAME}
${PQCP_LIBRARY}
${HITLS_CRYPTO_LIB}
${HITLS_BSL_LIB}
${PQCP_PROVIDER_LIB}
${SECUREC_LIB}
-Wl,--no-as-needed
-lpthread
-Wl,--as-needed
)
install(TARGETS ${DEMO_NAME} DESTINATION ../output)
endforeach()
endif()
include(ExternalProject)
ExternalProject_Add(gen_testcase
SOURCE_DIR ${PQCP_ROOT}
PREFIX ""
BINARY_DIR ${PQCP_ROOT}/testcode/framework/gen_test/build/
INSTALL_DIR ""
UPDATE_COMMAND ""
CONFIGURE_COMMAND cmake -DHITLS_ROOT_DIR=${HITLS_ROOT_DIR}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DPRINT_TO_TERMINAL=${ENABLE_PRINT} ..
BUILD_COMMAND make
INSTALL_COMMAND ""
BUILD_ALWAYS FALSE
LOG_BUILD TRUE
LOG_DOWNLOAD TRUE
EXCLUDE_FROM_ALL TRUE
LOG_OUTPUT_ON_FAILURE TRUE
)
add_subdirectory(sdv)