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