forked from canokeys/canokey-crypto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
47 lines (40 loc) · 1.72 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
cmake_minimum_required(VERSION 3.7)
project(canokey-crypto C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
option(USE_MBEDCRYPTO "Use mbed-crypto as the crypto library" ON)
if (USE_MBEDCRYPTO)
add_definitions(-DUSE_MBEDCRYPTO)
set(USE_STATIC_MBEDTLS_LIBRARY ON CACHE BOOL "")
set(USE_SHARED_MBEDTLS_LIBRARY OFF CACHE BOOL "")
set(USE_CRYPTO_SUBMODULE ON CACHE BOOL "")
set(ENABLE_PROGRAMS OFF CACHE BOOL "")
set(ENABLE_TESTING OFF CACHE BOOL "") # disable mbedtls tests
file(COPY mbedtls DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/patched)
execute_process(COMMAND patch -p1 -u
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/patched/mbedtls
INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mbedtls-ed25519.patch)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/patched/mbedtls)
endif (USE_MBEDCRYPTO)
file(GLOB SRC src/*.c)
add_library(canokey-crypto ${SRC})
if (USE_MBEDCRYPTO)
target_link_libraries(canokey-crypto ${MBEDTLS_TARGET_PREFIX}mbedcrypto)
endif (USE_MBEDCRYPTO)
target_include_directories(canokey-crypto PUBLIC include)
target_include_directories(canokey-crypto PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/patched/mbedtls/include)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
option(ENABLE_CRYPTO_TESTS "Perform unit tests after build" OFF)
if (ENABLE_CRYPTO_TESTS)
# for coverage
if (CMAKE_C_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-usage --coverage")
endif()
find_package(CMocka CONFIG REQUIRED)
include(AddCMockaTest)
include(AddMockedTest)
add_subdirectory(test)
enable_testing()
endif (ENABLE_CRYPTO_TESTS)