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