Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. option(USE_STATIC_MBEDTLS_LIBRARY "Build mbed TLS static library." ON)
  2. option(USE_SHARED_MBEDTLS_LIBRARY "Build mbed TLS shared library." OFF)
  3. option(LINK_WITH_PTHREAD "Explicitly link mbed TLS library to pthread." OFF)
  4.  
  5. set(src_crypto
  6.     aes.c
  7.     aesni.c
  8.     arc4.c
  9.     aria.c
  10.     asn1parse.c
  11.     asn1write.c
  12.     base64.c
  13.     bignum.c
  14.     blowfish.c
  15.     camellia.c
  16.     ccm.c
  17.     chacha20.c
  18.     chachapoly.c
  19.     cipher.c
  20.     cipher_wrap.c
  21.     cmac.c
  22.     ctr_drbg.c
  23.     des.c
  24.     dhm.c
  25.     ecdh.c
  26.     ecdsa.c
  27.     ecjpake.c
  28.     ecp.c
  29.     ecp_curves.c
  30.     entropy.c
  31.     entropy_poll.c
  32.     error.c
  33.     gcm.c
  34.     havege.c
  35.     hkdf.c
  36.     hmac_drbg.c
  37.     md.c
  38.     md2.c
  39.     md4.c
  40.     md5.c
  41.     md_wrap.c
  42.     memory_buffer_alloc.c
  43.     nist_kw.c
  44.     oid.c
  45.     padlock.c
  46.     pem.c
  47.     pk.c
  48.     pk_wrap.c
  49.     pkcs12.c
  50.     pkcs5.c
  51.     pkparse.c
  52.     pkwrite.c
  53.     platform.c
  54.     platform_util.c
  55.     poly1305.c
  56.     ripemd160.c
  57.     rsa.c
  58.     rsa_internal.c
  59.     sha1.c
  60.     sha256.c
  61.     sha512.c
  62.     threading.c
  63.     timing.c
  64.     version.c
  65.     version_features.c
  66.     xtea.c
  67. )
  68.  
  69. set(src_x509
  70.     certs.c
  71.     pkcs11.c
  72.     x509.c
  73.     x509_create.c
  74.     x509_crl.c
  75.     x509_crt.c
  76.     x509_csr.c
  77.     x509write_crt.c
  78.     x509write_csr.c
  79. )
  80.  
  81. set(src_tls
  82.     debug.c
  83.     net_sockets.c
  84.     ssl_cache.c
  85.     ssl_ciphersuites.c
  86.     ssl_cli.c
  87.     ssl_cookie.c
  88.     ssl_srv.c
  89.     ssl_ticket.c
  90.     ssl_tls.c
  91. )
  92.  
  93. if(CMAKE_COMPILER_IS_GNUCC)
  94.     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes")
  95. endif(CMAKE_COMPILER_IS_GNUCC)
  96.  
  97. if(CMAKE_COMPILER_IS_CLANG)
  98.     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes -Wdocumentation -Wno-documentation-deprecated-sync -Wunreachable-code")
  99. endif(CMAKE_COMPILER_IS_CLANG)
  100.  
  101. if(UNSAFE_BUILD)
  102.     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
  103.     set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_ASAN} -Wno-error")
  104.     set(CMAKE_C_FLAGS_ASANDBG "${CMAKE_C_FLAGS_ASANDBG} -Wno-error")
  105. endif(UNSAFE_BUILD)
  106.  
  107. if(WIN32)
  108.     set(libs ${libs} ws2_32)
  109. endif(WIN32)
  110.  
  111. if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  112.     SET(CMAKE_C_ARCHIVE_CREATE   "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
  113.     SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
  114.     SET(CMAKE_C_ARCHIVE_FINISH   "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
  115.     SET(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
  116. endif()
  117.  
  118. if(HAIKU)
  119.     set(libs ${libs} network)
  120. endif(HAIKU)
  121.  
  122. if(USE_PKCS11_HELPER_LIBRARY)
  123.     set(libs ${libs} pkcs11-helper)
  124. endif(USE_PKCS11_HELPER_LIBRARY)
  125.  
  126. if(ENABLE_ZLIB_SUPPORT)
  127.     set(libs ${libs} ${ZLIB_LIBRARIES})
  128. endif(ENABLE_ZLIB_SUPPORT)
  129.  
  130. if(LINK_WITH_PTHREAD)
  131.     set(libs ${libs} pthread)
  132. endif()
  133.  
  134. if (NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY)
  135.     message(FATAL_ERROR "Need to choose static or shared mbedtls build!")
  136. endif(NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY)
  137.  
  138. if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY)
  139.     set(mbedtls_static_target "mbedtls_static")
  140.     set(mbedx509_static_target "mbedx509_static")
  141.     set(mbedcrypto_static_target "mbedcrypto_static")
  142. elseif(USE_STATIC_MBEDTLS_LIBRARY)
  143.     set(mbedtls_static_target "mbedtls")
  144.     set(mbedx509_static_target "mbedx509")
  145.     set(mbedcrypto_static_target "mbedcrypto")
  146. endif()
  147.  
  148. if(USE_STATIC_MBEDTLS_LIBRARY)
  149.     add_library(${mbedcrypto_static_target} STATIC ${src_crypto})
  150.     set_target_properties(${mbedcrypto_static_target} PROPERTIES OUTPUT_NAME mbedcrypto)
  151.     target_link_libraries(${mbedcrypto_static_target} ${libs})
  152.  
  153.     add_library(${mbedx509_static_target} STATIC ${src_x509})
  154.     set_target_properties(${mbedx509_static_target} PROPERTIES OUTPUT_NAME mbedx509)
  155.     target_link_libraries(${mbedx509_static_target} ${libs} ${mbedcrypto_static_target})
  156.  
  157.     add_library(${mbedtls_static_target} STATIC ${src_tls})
  158.     set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls)
  159.     target_link_libraries(${mbedtls_static_target} ${libs} ${mbedx509_static_target})
  160.  
  161.     install(TARGETS ${mbedtls_static_target} ${mbedx509_static_target} ${mbedcrypto_static_target}
  162.             DESTINATION ${LIB_INSTALL_DIR}
  163.             PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  164. endif(USE_STATIC_MBEDTLS_LIBRARY)
  165.  
  166. if(USE_SHARED_MBEDTLS_LIBRARY)
  167.     add_library(mbedcrypto SHARED ${src_crypto})
  168.     set_target_properties(mbedcrypto PROPERTIES VERSION 2.16.6 SOVERSION 3)
  169.     target_link_libraries(mbedcrypto ${libs})
  170.  
  171.     add_library(mbedx509 SHARED ${src_x509})
  172.     set_target_properties(mbedx509 PROPERTIES VERSION 2.16.6 SOVERSION 0)
  173.     target_link_libraries(mbedx509 ${libs} mbedcrypto)
  174.  
  175.     add_library(mbedtls SHARED ${src_tls})
  176.     set_target_properties(mbedtls PROPERTIES VERSION 2.16.6 SOVERSION 12)
  177.     target_link_libraries(mbedtls ${libs} mbedx509)
  178.  
  179.     install(TARGETS mbedtls mbedx509 mbedcrypto
  180.             DESTINATION ${LIB_INSTALL_DIR}
  181.             PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  182. endif(USE_SHARED_MBEDTLS_LIBRARY)
  183.  
  184. add_custom_target(lib DEPENDS mbedcrypto mbedx509 mbedtls)
  185. if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY)
  186.     add_dependencies(lib mbedcrypto_static mbedx509_static mbedtls_static)
  187. endif()
  188.