]> www.wagner.pp.ru Git - openssl-gost/engine.git/blob - CMakeLists.txt
allow OPENSSL_ENGINES to be specified explicitly
[openssl-gost/engine.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2 project(ccgost C)
3
4 enable_testing()
5
6 if (CMAKE_C_COMPILER_ID MATCHES "Clang")
7    message(STATUS "Using Clang and adding -Qunused-arguments flag")
8    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments")
9 endif()
10
11 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c98 -O3 -Werror -Qunused-arguments -Wno-unused-function -Wno-missing-braces -Wall")
12 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Werror -Wall -Wno-unused-parameter -Wno-unused-function -Wno-missing-braces -ggdb")
13
14 include (TestBigEndian)
15 TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
16 if(IS_BIG_ENDIAN)
17  message(STATUS "BIG_ENDIAN")
18 else()
19  message(STATUS "LITTLE_ENDIAN")
20  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c98 -O3 -Werror -Wall")
21  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DL_ENDIAN")
22 endif()
23
24 set(BIN_DIRECTORY bin)
25
26 set(OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/${BIN_DIRECTORY})
27
28 #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY})
29 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY})
30 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY})
31
32 set(GOST_89_SOURCE_FILES
33         gost89.c
34         gost89.h
35         )
36
37 set(GOST_HASH_SOURCE_FILES
38         gosthash.c
39         gosthash.h
40         )
41
42 set(GOST_HASH_2012_SOURCE_FILES
43         gosthash2012.c
44         gosthash2012.h
45         gosthash2012_const.h
46         gosthash2012_precalc.h
47         gosthash2012_ref.h
48         gosthash2012_sse2.h
49         )
50
51 set(GOST_GRASSHOPPER_SOURCE_FILES
52         gost_grasshopper.h
53         gost_grasshopper_core.h
54         gost_grasshopper_core.c
55         gost_grasshopper_defines.h
56         gost_grasshopper_defines.c
57         gost_grasshopper_math.h
58         gost_grasshopper_galois_precompiled.c
59         gost_grasshopper_precompiled.c
60         gost_grasshopper_cipher.h
61         gost_grasshopper_cipher.c
62         gost_grasshopper_mac.h
63         gost_grasshopper_mac.c
64         )
65
66 set(GOST_CORE_SOURCE_FILES
67         e_gost_err.c
68         e_gost_err.h
69         gost_asn1.c
70         gost_crypt.c
71         gost_ctl.c
72         gost_eng.c
73         gost_keywrap.c
74         gost_keywrap.h
75         gost_lcl.h
76         gost_params.c
77         )
78
79 set(GOST_EC_SOURCE_FILES
80         gost_ec_keyx.c
81         gost_ec_sign.c
82         )
83
84 set(GOST_LIB_SOURCE_FILES
85         ${GOST_EC_SOURCE_FILES}
86         ${GOST_89_SOURCE_FILES}
87         ${GOST_HASH_SOURCE_FILES}
88         ${GOST_GRASSHOPPER_SOURCE_FILES}
89         ${GOST_HASH_2012_SOURCE_FILES})
90
91 set(GOST_ENGINE_SOURCE_FILES
92         ${GOST_CORE_SOURCE_FILES}
93         gost_ameth.c
94         gost_md.c
95         gost_md2012.c
96         gost_pmeth.c)
97
98 add_test(NAME engine
99          COMMAND perl run_tests
100          WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test)
101
102 add_library(gost STATIC ${GOST_LIB_SOURCE_FILES})
103 set_target_properties(gost PROPERTIES POSITION_INDEPENDENT_CODE ON)
104
105 add_library(gost_engine MODULE ${GOST_ENGINE_SOURCE_FILES})
106 set_target_properties(gost_engine PROPERTIES PREFIX "" OUTPUT_NAME "gost")
107
108 target_link_libraries(gost_engine crypto gost)
109
110 set(GOST_12_SUM_SOURCE_FILES
111         gost12sum.c
112         )
113
114 add_executable(gost12sum ${GOST_12_SUM_SOURCE_FILES})
115
116 target_link_libraries(gost12sum gost)
117
118 set(GOST_SUM_SOURCE_FILES
119         gostsum.c
120         )
121
122 add_executable(gostsum ${GOST_SUM_SOURCE_FILES})
123
124 target_link_libraries(gostsum gost)
125
126 set(GOST_SUM_12_SOURCE_FILES
127         gostsum12.c
128         )
129
130 #add_executable(gostsum12 ${GOST_SUM_12_SOURCE_FILES})
131 #
132 #target_link_libraries(gostsum12 gost)