]> www.wagner.pp.ru Git - openssl-gost/engine.git/blob - CMakeLists.txt
Make sure CMake does not pick stray directories for linking the engine
[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 # module linker flags
22 SET (CMAKE_MODULE_LINKER_FLAGS "-L${OPENSSL_PATH}" "-L${OPENSSL_PATH}/lib" $ENV{LDFLAGS}
23      CACHE STRING "Flags used by the linker during the creation of modules.")
24 # exe linker flags
25 SET (CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS_INIT} $ENV{LDFLAGS}
26      CACHE STRING "Flags used by the linker during the creation of executables.")
27 # shared lib linker flags
28 SET (CMAKE_SHARED_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS_INIT} $ENV{LDFLAGS}
29      CACHE STRING "Flags used by the linker during the creation of shared libraries.")
30
31
32 include_directories("${GOST_INCLUDE_DIRECTORIES}")
33
34 set(BIN_DIRECTORY bin)
35
36 set(OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/${BIN_DIRECTORY})
37
38 #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY})
39 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY})
40 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY})
41
42 set(GOST_89_SOURCE_FILES
43         gost89.c
44         gost89.h
45         )
46
47 set(GOST_HASH_SOURCE_FILES
48         gosthash.c
49         gosthash.h
50         )
51
52 set(GOST_HASH_2012_SOURCE_FILES
53         gosthash2012.c
54         gosthash2012.h
55         gosthash2012_const.h
56         gosthash2012_precalc.h
57         gosthash2012_ref.h
58         gosthash2012_sse2.h
59         )
60
61 set(GOST_GRASSHOPPER_SOURCE_FILES
62         gost_grasshopper.h
63         gost_grasshopper_core.h
64         gost_grasshopper_core.c
65         gost_grasshopper_defines.h
66         gost_grasshopper_defines.c
67         gost_grasshopper_math.h
68         gost_grasshopper_galois_precompiled.c
69         gost_grasshopper_precompiled.c
70         gost_grasshopper_cipher.h
71         gost_grasshopper_cipher.c
72         gost_grasshopper_mac.h
73         gost_grasshopper_mac.c
74         )
75
76 set(GOST_CORE_SOURCE_FILES
77         e_gost_err.c
78         e_gost_err.h
79         gost_asn1.c
80         gost_crypt.c
81         gost_ctl.c
82         gost_eng.c
83         gost_keywrap.c
84         gost_keywrap.h
85         gost_lcl.h
86         gost_params.c
87         )
88
89 set(GOST_EC_SOURCE_FILES
90         gost_ec_keyx.c
91         gost_ec_sign.c
92         )
93
94 set(GOST_LIB_SOURCE_FILES
95         ${GOST_EC_SOURCE_FILES}
96         ${GOST_89_SOURCE_FILES}
97         ${GOST_HASH_SOURCE_FILES}
98         ${GOST_GRASSHOPPER_SOURCE_FILES}
99         ${GOST_HASH_2012_SOURCE_FILES})
100
101 set(GOST_ENGINE_SOURCE_FILES
102         ${GOST_CORE_SOURCE_FILES}
103         gost_ameth.c
104         gost_md.c
105         gost_md2012.c
106         gost_pmeth.c)
107
108 link_directories(${GOST_LINK_DIRECTORIES})
109
110 add_library(gost STATIC ${GOST_LIB_SOURCE_FILES})
111 set_target_properties(gost PROPERTIES POSITION_INDEPENDENT_CODE ON)
112
113 add_library(gost_engine MODULE ${GOST_ENGINE_SOURCE_FILES})
114 set_target_properties(gost_engine PROPERTIES PREFIX "" OUTPUT_NAME "gost")
115
116 target_link_libraries(gost_engine crypto gost)
117
118 set(GOST_12_SUM_SOURCE_FILES
119         gost12sum.c
120         )
121
122 add_executable(gost12sum ${GOST_12_SUM_SOURCE_FILES})
123
124 target_link_libraries(gost12sum gost)
125
126 set(GOST_SUM_SOURCE_FILES
127         gostsum.c
128         )
129
130 add_executable(gostsum ${GOST_SUM_SOURCE_FILES})
131
132 target_link_libraries(gostsum gost)
133
134 set(GOST_SUM_12_SOURCE_FILES
135         gostsum12.c
136         )
137
138 add_executable(gostsum12 ${GOST_SUM_12_SOURCE_FILES})
139
140 target_link_libraries(gostsum12 gost)