forked from open-quantum-safe/liboqs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
108 lines (89 loc) · 3.59 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# SPDX-License-Identifier: MIT
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR
CMAKE_C_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wbad-function-cast)
endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wcast-qual)
add_compile_options(-Wnarrowing)
add_compile_options(-Wconversion)
endif()
if (MINGW OR MSYS OR CYGWIN)
add_definitions(-D__USE_MINGW_ANSI_STDIO=1)
add_compile_options(-Wno-unknown-pragmas)
add_compile_options(-Wno-unused-parameter)
endif()
if(WIN32 AND NOT (MINGW OR MSYS OR CYGWIN))
# ignore warning for test apps
add_compile_options(/wd4996 /wd4244)
endif()
if(NOT WIN32)
set(LIBM m)
if(OQS_USE_OPENSSL)
include_directories(${OPENSSL_INCLUDE_DIR})
set(INTERNAL_TEST_DEPS ${OPENSSL_CRYPTO_LIBRARY} ${LIBM})
else()
set(INTERNAL_TEST_DEPS ${LIBM})
endif()
if(DEFINED SANITIZER_LD_FLAGS)
set(INTERNAL_TEST_DEPS "${INTERNAL_TEST_DEPS} ${SANITIZER_LD_FLAGS}")
endif()
execute_process(COMMAND ${PROJECT_SOURCE_DIR}/scripts/git_commit.sh OUTPUT_VARIABLE GIT_COMMIT)
add_definitions(-DOQS_COMPILE_GIT_COMMIT="${GIT_COMMIT}")
add_executable(test_aes test_aes.c $<TARGET_OBJECTS:common>)
target_link_libraries(test_aes PRIVATE ${INTERNAL_TEST_DEPS})
add_executable(test_hash test_hash.c $<TARGET_OBJECTS:common>)
target_link_libraries(test_hash PRIVATE ${INTERNAL_TEST_DEPS})
add_executable(test_sha3 test_sha3.c $<TARGET_OBJECTS:common>)
target_link_libraries(test_sha3 PRIVATE ${INTERNAL_TEST_DEPS})
set(UNIX_TESTS test_aes test_hash test_sha3)
set(PYTHON3_EXEC python3)
if(BUILD_SHARED_LIBS)
set(USE_LIBOQS_SO --use_liboqs_so)
endif()
else()
set(PYTHON3_EXEC python)
endif()
set(API_TEST_DEPS oqs ${LIBM})
# KEM API tests
add_executable(example_kem example_kem.c)
target_link_libraries(example_kem PRIVATE ${API_TEST_DEPS})
add_executable(kat_kem kat_kem.c)
target_link_libraries(kat_kem PRIVATE ${API_TEST_DEPS})
add_executable(test_kem test_kem.c)
if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU"))
target_link_libraries(test_kem PRIVATE ${API_TEST_DEPS} Threads::Threads)
else ()
target_link_libraries(test_kem PRIVATE ${API_TEST_DEPS})
endif()
add_executable(speed_kem speed_kem.c)
target_link_libraries(speed_kem PRIVATE ${API_TEST_DEPS})
# SIG API tests
add_executable(example_sig example_sig.c)
target_link_libraries(example_sig PRIVATE ${API_TEST_DEPS})
add_executable(kat_sig kat_sig.c)
target_link_libraries(kat_sig PRIVATE ${API_TEST_DEPS})
add_executable(test_sig test_sig.c)
if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU"))
target_link_libraries(test_sig PRIVATE ${API_TEST_DEPS} Threads::Threads)
else ()
target_link_libraries(test_sig PRIVATE ${API_TEST_DEPS})
endif()
add_executable(speed_sig speed_sig.c)
target_link_libraries(speed_sig PRIVATE ${API_TEST_DEPS})
# See https://github.com/open-quantum-safe/liboqs/issues/738#issuecomment-621394744
if("$ENV{CIRCLE_JOB}" STREQUAL "ubuntu-bionic-x86_64-asan" AND
DEFINED ENV{CIRCLE_BUILD_NUM})
set(NUMPROCESSES 1)
else()
set(NUMPROCESSES auto)
endif()
# TODO: Get CMake to find python.
# and set PATH variable in Windows
# for DLL builds.
add_custom_target(
run_tests
COMMAND ${PYTHON3_EXEC} -m pytest --verbose --numprocesses=${NUMPROCESSES} --build_tool=${CMAKE_MAKE_PROGRAM} ${USE_LIBOQS_SO} --junitxml=${CMAKE_BINARY_DIR}/test-results/pytest/test-results.xml
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
DEPENDS oqs example_kem kat_kem test_kem example_sig kat_sig test_sig ${UNIX_TESTS}
USES_TERMINAL)