cmake_minimum_required(VERSION 3.13.0) project("corePKCS11 tests" LANGUAGES C) # Allow the project to be organized into folders. set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_directory_properties(PROPERTIES EP_PREFIX "${CMAKE_BINARY_DIR}/_deps") # Do not allow in-source build. if(${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR}) message( FATAL_ERROR "In-source build is not allowed. Please build in a separate directory, such as ${PROJECT_SOURCE_DIR}/build." ) endif() # Set global path variables. get_filename_component(__MODULE_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) set(MODULE_ROOT_DIR ${__MODULE_ROOT_DIR} CACHE INTERNAL "corePKCS11 repository root.") option(SYSTEM_TESTS "Set this to ON to build system tests" ON) option(UNIT_TESTS "Set this to ON to build unit tests" ON) # Set output directories. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) include(${MODULE_ROOT_DIR}/tools/mbedtls.cmake) include(${MODULE_ROOT_DIR}/tools/unity.cmake) include(${MODULE_ROOT_DIR}/tools/cmock.cmake) # ======================================== # Test Configuration # ======================================== # Define a CMock resource path. set(CMOCK_DIR ${MODULE_ROOT_DIR}/test/unit-test/CMock CACHE INTERNAL "CMock library source directory." ) # Use CTest utility for managing test runs. This has to be added BEFORE defining test targets with # add_test() enable_testing() if(UNIT_TESTS) add_subdirectory(pkcs11_mbedtls_utest) add_subdirectory(pkcs11_utils_utest) add_subdirectory(wrapper_utest) endif() if(SYSTEM_TESTS) add_subdirectory(mbedtls_integration) endif() add_subdirectory(coverity_analysis) # ======================================== # Coverage Analysis configuration # ======================================== # Add a target for running coverage on tests. add_custom_target( coverage COMMAND ${CMAKE_COMMAND} -P ${MODULE_ROOT_DIR}/tools/cmock/coverage.cmake DEPENDS cmock unity $<$:core_pkcs11_mbedtls_utest> $<$:pkcs11_wrapper_utest> $<$:pkcs11_utils_utest> $<$:integration_mbedtls_2> $<$:integration_mbedtls_3> WORKING_DIRECTORY ${CMAKE_BINARY_DIR} )