-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
60 lines (47 loc) · 1.7 KB
/
Copy pathCMakeLists.txt
File metadata and controls
60 lines (47 loc) · 1.7 KB
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
cmake_minimum_required(VERSION 3.14)
project(Streebog LANGUAGES C)
# Настройки стандарта
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
enable_testing()
# --- Настройки компиляции ---
add_compile_options(-Wall -Wextra -Wpedantic -O3 -march=native)
# Clang-Tidy
find_program(CLANG_TIDY_EXE NAMES "clang-tidy")
if(CLANG_TIDY_EXE)
set(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_EXE})
endif()
# Clang-Format
find_program(CLANG_FORMAT_EXE NAMES "clang-format")
if(CLANG_FORMAT_EXE)
file(GLOB_RECURSE ALL_SOURCE_FILES src/*.c src/*.h tests/tests.c)
add_custom_target(format
COMMAND ${CLANG_FORMAT_EXE} -i ${ALL_SOURCE_FILES}
COMMENT "Formatting code with clang-format..."
)
endif()
# Библиотека самого алгоритма
add_library(streebog_lib
src/streebog.c
src/streebog_tables.c
src/streebog_compress.c
src/streebog_utils.c
src/streebog_transform.c
)
# Библиотека тестов
add_library(unity tests/unity/unity.c)
set_target_properties(unity PROPERTIES C_CLANG_TIDY "")
target_include_directories(streebog_lib PUBLIC src)
set(TEST_TARGETS test_streebog)
add_executable(${TEST_TARGETS} tests/test_main.c tests/test_vectors_256.c tests/test_vectors_512.c)
target_link_libraries(${TEST_TARGETS} PRIVATE streebog_lib unity)
# CLI-утилита
add_executable(streebog_cli tools/main.c)
target_link_libraries(streebog_cli PRIVATE streebog_lib)
# Бенчмарк
add_executable(benchmark tools/bench.c)
target_link_libraries(benchmark PRIVATE streebog_lib)
add_test(NAME StreebogTests COMMAND test_streebog)
add_test(NAME StreebogBenchmark COMMAND benchmark)