• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cmake_minimum_required(VERSION 3.0)
2project(GmSSL)
3
4#set(CMAKE_MACOSX_RPATH 1)
5SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
6SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
7
8if (CMAKE_VERSION VERSION_LESS "3.1")
9  if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
10    set (CMAKE_C_FLAGS "-std=gnu99 ${CMAKE_C_FLAGS}")
11  endif ()
12else ()
13  set (CMAKE_C_STANDARD 99)
14endif ()
15
16#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mrdrnd -mrdseed")
17
18include_directories(include)
19
20add_library(
21	gmssl
22	SHARED
23	src/version.c
24	src/debug.c
25	src/sm4_common.c
26	src/sm4_enc.c
27	src/sm4_modes.c
28	src/sm4_setkey.c
29	src/sm3.c
30	src/sm3_hmac.c
31	src/sm3_kdf.c
32	src/sm2_alg.c
33	src/sm2_key.c
34	src/sm2_lib.c
35	src/sm9_alg.c
36	src/sm9_key.c
37	src/sm9_lib.c
38	src/zuc.c
39	src/zuc_modes.c
40	src/aes.c
41	src/aes_modes.c
42	src/sha256.c
43	src/sha512.c
44	src/chacha20.c
45	src/des.c
46	src/sha1.c
47	src/md5.c
48	src/rc4.c
49	src/rand.c
50	src/hash_drbg.c
51#	src/rdrand.c
52	src/block_cipher.c
53	src/digest.c
54	src/hmac.c
55	src/hkdf.c
56	src/pbkdf2.c
57	src/gf128.c
58	src/gcm.c
59	src/pkcs8.c
60	src/ec.c
61	src/rsa.c
62	src/asn1.c
63	src/hex.c
64	src/base64.c
65	src/pem.c
66	src/x509_oid.c
67	src/x509_alg.c
68	src/x509_str.c
69	src/x509_cer.c
70	src/x509_ext.c
71	src/x509_req.c
72	src/x509_crl.c
73	src/cms.c
74	src/sdf/sdf.c
75	src/sdf/sdf_lib.c
76	src/sdf/sdf_meth.c
77	src/sdf/sdf_ext.c
78	src/sdf/sdf_sansec.c
79	src/skf/skf.c
80	src/skf/skf_lib.c
81	src/skf/skf_meth.c
82	src/skf/skf_ext.c
83	src/skf/skf_prn.c
84	src/skf/skf_wisec.c
85	src/tls.c
86	src/tls_ext.c
87	src/tls_trace.c
88	src/tlcp.c
89	src/tls12.c
90	src/tls13.c
91)
92
93target_link_libraries(gmssl dl)
94SET_TARGET_PROPERTIES(gmssl PROPERTIES VERSION 3.0 SOVERSION 3)
95
96add_library(sdf_dummy SHARED src/sdf/sdf_dummy.c)
97SET_TARGET_PROPERTIES(sdf_dummy PROPERTIES VERSION 3.0 SOVERSION 3)
98
99add_library(skf_dummy SHARED src/skf/skf_dummy.c)
100SET_TARGET_PROPERTIES(skf_dummy PROPERTIES VERSION 3.0 SOVERSION 3)
101
102
103add_executable(
104	gmssl-bin
105	tools/gmssl.c
106	tools/version.c
107	tools/sm4.c
108	tools/sm3.c
109	tools/sm3hmac.c
110	tools/sm2keygen.c
111	tools/sm2sign.c
112	tools/sm2verify.c
113	tools/sm2encrypt.c
114	tools/sm2decrypt.c
115	tools/sm9setup.c
116	tools/sm9keygen.c
117	tools/sm9sign.c
118	tools/sm9verify.c
119	tools/sm9encrypt.c
120	tools/sm9decrypt.c
121	tools/zuc.c
122	tools/rand.c
123	tools/pbkdf2.c
124	tools/certgen.c
125	tools/certparse.c
126	tools/certverify.c
127	tools/reqgen.c
128	tools/reqparse.c
129	tools/reqsign.c
130	tools/crlparse.c
131	tools/crlverify.c
132	tools/cmssign.c
133	tools/cmsverify.c
134	tools/cmsencrypt.c
135	tools/cmsdecrypt.c
136	tools/cmsparse.c
137	tools/sdfutil.c
138	tools/skfutil.c
139	tools/tlcp_client.c
140	tools/tlcp_server.c
141	tools/tls12_client.c
142	tools/tls12_server.c
143	tools/tls13_client.c
144	tools/tls13_server.c
145)
146
147target_link_libraries (gmssl-bin LINK_PUBLIC gmssl)
148set_target_properties (gmssl-bin PROPERTIES RUNTIME_OUTPUT_NAME gmssl)
149
150enable_testing()
151
152add_test(NAME sm4		COMMAND sm4test)
153add_test(NAME sm3		COMMAND sm3test)
154add_test(NAME sm2		COMMAND sm2test)
155add_test(NAME sm9		COMMAND sm9test)
156add_test(NAME zuc		COMMAND zuctest)
157add_test(NAME aes		COMMAND aestest)
158add_test(NAME sha224		COMMAND sha224test)
159add_test(NAME sha256		COMMAND sha256test)
160add_test(NAME sha384		COMMAND sha384test)
161add_test(NAME sha512		COMMAND sha512test)
162add_test(NAME chacha20		COMMAND chacha20test)
163add_test(NAME des		COMMAND destest)
164add_test(NAME sha1		COMMAND sha1test)
165add_test(NAME md5		COMMAND md5test)
166add_test(NAME rc4		COMMAND rc4test)
167add_test(NAME hash_drbg		COMMAND hash_drbgtest)
168add_test(NAME block_cipher	COMMAND block_ciphertest)
169add_test(NAME digest		COMMAND digesttest)
170add_test(NAME hmac		COMMAND hmactest)
171add_test(NAME hkdf		COMMAND hkdftest)
172add_test(NAME pbkdf2		COMMAND pbkdf2test)
173add_test(NAME gf128		COMMAND gf128test)
174add_test(NAME gcm		COMMAND gcmtest)
175add_test(NAME pkcs8		COMMAND pkcs8test)
176add_test(NAME ec		COMMAND ectest)
177add_test(NAME asn1		COMMAND asn1test)
178add_test(NAME hex		COMMAND hextest)
179add_test(NAME base64		COMMAND base64test)
180add_test(NAME pem		COMMAND pemtest)
181add_test(NAME x509		COMMAND x509test)
182add_test(NAME x509_oid		COMMAND x509_oidtest)
183add_test(NAME x509_alg		COMMAND x509_algtest)
184add_test(NAME x509_str		COMMAND x509_strtest)
185add_test(NAME x509_ext		COMMAND x509_exttest)
186add_test(NAME x509_req		COMMAND x509_reqtest)
187add_test(NAME x509_crl		COMMAND x509_crltest)
188add_test(NAME cms		COMMAND cmstest)
189add_test(NAME tls		COMMAND tlstest)
190add_test(NAME tls13		COMMAND tls13test)
191
192
193add_executable(sm4test tests/sm4test.c)
194target_link_libraries (sm4test LINK_PUBLIC gmssl)
195add_executable(sm3test tests/sm3test.c)
196target_link_libraries (sm3test LINK_PUBLIC gmssl)
197add_executable(sm2test tests/sm2test.c)
198target_link_libraries (sm2test LINK_PUBLIC gmssl)
199add_executable(sm9test tests/sm9test.c)
200target_link_libraries (sm9test LINK_PUBLIC gmssl)
201add_executable(zuctest tests/zuctest.c)
202target_link_libraries (zuctest LINK_PUBLIC gmssl)
203add_executable(aestest tests/aestest.c)
204target_link_libraries (aestest LINK_PUBLIC gmssl)
205add_executable(sha224test tests/sha224test.c)
206target_link_libraries (sha224test LINK_PUBLIC gmssl)
207add_executable(sha256test tests/sha256test.c)
208target_link_libraries (sha256test LINK_PUBLIC gmssl)
209add_executable(sha384test tests/sha384test.c)
210target_link_libraries (sha384test LINK_PUBLIC gmssl)
211add_executable(sha512test tests/sha512test.c)
212target_link_libraries (sha512test LINK_PUBLIC gmssl)
213add_executable(chacha20test tests/chacha20test.c)
214target_link_libraries (chacha20test LINK_PUBLIC gmssl)
215add_executable(destest tests/destest.c)
216target_link_libraries (destest LINK_PUBLIC gmssl)
217add_executable(sha1test tests/sha1test.c)
218target_link_libraries (sha1test LINK_PUBLIC gmssl)
219add_executable(md5test tests/md5test.c)
220target_link_libraries (md5test LINK_PUBLIC gmssl)
221add_executable(rc4test tests/rc4test.c)
222target_link_libraries (rc4test LINK_PUBLIC gmssl)
223add_executable(hash_drbgtest tests/hash_drbgtest.c)
224target_link_libraries (hash_drbgtest LINK_PUBLIC gmssl)
225add_executable(block_ciphertest tests/block_ciphertest.c)
226target_link_libraries (block_ciphertest LINK_PUBLIC gmssl)
227add_executable(digesttest tests/digesttest.c)
228target_link_libraries (digesttest LINK_PUBLIC gmssl)
229add_executable(hmactest tests/hmactest.c)
230target_link_libraries (hmactest LINK_PUBLIC gmssl)
231add_executable(hkdftest tests/hkdftest.c)
232target_link_libraries (hkdftest LINK_PUBLIC gmssl)
233add_executable(pbkdf2test tests/pbkdf2test.c)
234target_link_libraries (pbkdf2test LINK_PUBLIC gmssl)
235add_executable(gf128test tests/gf128test.c)
236target_link_libraries (gf128test LINK_PUBLIC gmssl)
237add_executable(gcmtest tests/gcmtest.c)
238target_link_libraries (gcmtest LINK_PUBLIC gmssl)
239add_executable(pkcs8test tests/pkcs8test.c)
240target_link_libraries (pkcs8test LINK_PUBLIC gmssl)
241add_executable(ectest tests/ectest.c)
242target_link_libraries (ectest LINK_PUBLIC gmssl)
243add_executable(asn1test tests/asn1test.c)
244target_link_libraries (asn1test LINK_PUBLIC gmssl)
245add_executable(hextest tests/hextest.c)
246target_link_libraries (hextest LINK_PUBLIC gmssl)
247add_executable(base64test tests/base64test.c)
248target_link_libraries (base64test LINK_PUBLIC gmssl)
249add_executable(pemtest tests/pemtest.c)
250target_link_libraries (pemtest LINK_PUBLIC gmssl)
251add_executable(x509test tests/x509test.c)
252target_link_libraries (x509test LINK_PUBLIC gmssl)
253add_executable(x509_oidtest tests/x509_oidtest.c)
254target_link_libraries (x509_oidtest LINK_PUBLIC gmssl)
255add_executable(x509_algtest tests/x509_algtest.c)
256target_link_libraries (x509_algtest LINK_PUBLIC gmssl)
257add_executable(x509_strtest tests/x509_strtest.c)
258target_link_libraries (x509_strtest LINK_PUBLIC gmssl)
259add_executable(x509_exttest tests/x509_exttest.c)
260target_link_libraries (x509_exttest LINK_PUBLIC gmssl)
261add_executable(x509_reqtest tests/x509_reqtest.c)
262target_link_libraries (x509_reqtest LINK_PUBLIC gmssl)
263add_executable(x509_crltest tests/x509_crltest.c)
264target_link_libraries (x509_crltest LINK_PUBLIC gmssl)
265add_executable(cmstest tests/cmstest.c)
266target_link_libraries (cmstest LINK_PUBLIC gmssl)
267add_executable(tlstest tests/tlstest.c)
268target_link_libraries (tlstest LINK_PUBLIC gmssl)
269add_executable(tls13test tests/tls13test.c)
270target_link_libraries (tls13test LINK_PUBLIC gmssl)
271
272
273INSTALL(TARGETS gmssl ARCHIVE DESTINATION lib  LIBRARY DESTINATION lib)
274INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/include/gmssl DESTINATION include)
275INSTALL(TARGETS gmssl-bin RUNTIME DESTINATION bin)
276
277