| option(USE_STATIC_MBEDTLS_LIBRARY "Build mbed TLS static library." ON) | 
 | option(USE_SHARED_MBEDTLS_LIBRARY "Build mbed TLS shared library." OFF) | 
 | option(LINK_WITH_PTHREAD "Explicitly link mbed TLS library to pthread." OFF) | 
 |  | 
 | set(src_crypto | 
 |     aes.c | 
 |     aesni.c | 
 |     arc4.c | 
 |     aria.c | 
 |     asn1parse.c | 
 |     asn1write.c | 
 |     base64.c | 
 |     bignum.c | 
 |     blowfish.c | 
 |     camellia.c | 
 |     ccm.c | 
 |     chacha20.c | 
 |     chachapoly.c | 
 |     cipher.c | 
 |     cipher_wrap.c | 
 |     cmac.c | 
 |     ctr_drbg.c | 
 |     des.c | 
 |     dhm.c | 
 |     ecdh.c | 
 |     ecdsa.c | 
 |     ecjpake.c | 
 |     ecp.c | 
 |     ecp_curves.c | 
 |     entropy.c | 
 |     entropy_poll.c | 
 |     error.c | 
 |     gcm.c | 
 |     havege.c | 
 |     hkdf.c | 
 |     hmac_drbg.c | 
 |     md.c | 
 |     md2.c | 
 |     md4.c | 
 |     md5.c | 
 |     md_wrap.c | 
 |     memory_buffer_alloc.c | 
 |     nist_kw.c | 
 |     oid.c | 
 |     padlock.c | 
 |     pem.c | 
 |     pk.c | 
 |     pk_wrap.c | 
 |     pkcs12.c | 
 |     pkcs5.c | 
 |     pkparse.c | 
 |     pkwrite.c | 
 |     platform.c | 
 |     platform_util.c | 
 |     poly1305.c | 
 |     ripemd160.c | 
 |     rsa.c | 
 |     rsa_internal.c | 
 |     sha1.c | 
 |     sha256.c | 
 |     sha512.c | 
 |     threading.c | 
 |     timing.c | 
 |     version.c | 
 |     version_features.c | 
 |     xtea.c | 
 | ) | 
 |  | 
 | set(src_x509 | 
 |     certs.c | 
 |     pkcs11.c | 
 |     x509.c | 
 |     x509_create.c | 
 |     x509_crl.c | 
 |     x509_crt.c | 
 |     x509_csr.c | 
 |     x509write_crt.c | 
 |     x509write_csr.c | 
 | ) | 
 |  | 
 | set(src_tls | 
 |     debug.c | 
 |     net_sockets.c | 
 |     ssl_cache.c | 
 |     ssl_ciphersuites.c | 
 |     ssl_cli.c | 
 |     ssl_cookie.c | 
 |     ssl_srv.c | 
 |     ssl_ticket.c | 
 |     ssl_tls.c | 
 | ) | 
 |  | 
 | if(CMAKE_COMPILER_IS_GNUCC) | 
 |     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes") | 
 | endif(CMAKE_COMPILER_IS_GNUCC) | 
 |  | 
 | if(CMAKE_COMPILER_IS_CLANG) | 
 |     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes -Wdocumentation -Wno-documentation-deprecated-sync -Wunreachable-code") | 
 | endif(CMAKE_COMPILER_IS_CLANG) | 
 |  | 
 | if(UNSAFE_BUILD) | 
 |     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error") | 
 |     set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_ASAN} -Wno-error") | 
 |     set(CMAKE_C_FLAGS_ASANDBG "${CMAKE_C_FLAGS_ASANDBG} -Wno-error") | 
 | endif(UNSAFE_BUILD) | 
 |  | 
 | if(WIN32) | 
 |     set(libs ${libs} ws2_32) | 
 | endif(WIN32) | 
 |  | 
 | if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") | 
 |     SET(CMAKE_C_ARCHIVE_CREATE   "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>") | 
 |     SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>") | 
 |     SET(CMAKE_C_ARCHIVE_FINISH   "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>") | 
 |     SET(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>") | 
 | endif() | 
 |  | 
 | if(HAIKU) | 
 |     set(libs ${libs} network) | 
 | endif(HAIKU) | 
 |  | 
 | if(USE_PKCS11_HELPER_LIBRARY) | 
 |     set(libs ${libs} pkcs11-helper) | 
 | endif(USE_PKCS11_HELPER_LIBRARY) | 
 |  | 
 | if(ENABLE_ZLIB_SUPPORT) | 
 |     set(libs ${libs} ${ZLIB_LIBRARIES}) | 
 | endif(ENABLE_ZLIB_SUPPORT) | 
 |  | 
 | if(LINK_WITH_PTHREAD) | 
 |     set(libs ${libs} pthread) | 
 | endif() | 
 |  | 
 | if (NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY) | 
 |     message(FATAL_ERROR "Need to choose static or shared mbedtls build!") | 
 | endif(NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY) | 
 |  | 
 | if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY) | 
 |     set(mbedtls_static_target "mbedtls_static") | 
 |     set(mbedx509_static_target "mbedx509_static") | 
 |     set(mbedcrypto_static_target "mbedcrypto_static") | 
 | elseif(USE_STATIC_MBEDTLS_LIBRARY) | 
 |     set(mbedtls_static_target "mbedtls") | 
 |     set(mbedx509_static_target "mbedx509") | 
 |     set(mbedcrypto_static_target "mbedcrypto") | 
 | endif() | 
 |  | 
 | if(USE_STATIC_MBEDTLS_LIBRARY) | 
 |  | 
 |     add_library(${mbedx509_static_target} STATIC ${src_x509}) | 
 |     set_target_properties(${mbedx509_static_target} PROPERTIES OUTPUT_NAME mbedx509) | 
 |     target_link_libraries(${mbedx509_static_target} ${libs} ${mbedcrypto_static_target}) | 
 |     target_include_directories(${mbedx509_static_target} | 
 |         PUBLIC ${MBEDTLS_DIR}/include/ | 
 |         PUBLIC ${MBEDTLS_DIR}/crypto/include/) | 
 |  | 
 |     add_library(${mbedtls_static_target} STATIC ${src_tls}) | 
 |     set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls) | 
 |     target_link_libraries(${mbedtls_static_target} ${libs} ${mbedx509_static_target}) | 
 |     target_include_directories(${mbedtls_static_target} | 
 |         PUBLIC ${MBEDTLS_DIR}/include/ | 
 |         PUBLIC ${MBEDTLS_DIR}/crypto/include/ | 
 |         ) | 
 |  | 
 |  | 
 |     install(TARGETS ${mbedtls_static_target} ${mbedx509_static_target} | 
 |             DESTINATION ${LIB_INSTALL_DIR} | 
 |             PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) | 
 |  | 
 | endif(USE_STATIC_MBEDTLS_LIBRARY) | 
 |  | 
 | if(USE_SHARED_MBEDTLS_LIBRARY) | 
 |  | 
 |     add_library(mbedx509 SHARED ${src_x509}) | 
 |     set_target_properties(mbedx509 PROPERTIES VERSION 2.17.0 SOVERSION 0) | 
 |     target_link_libraries(mbedx509 ${libs} mbedcrypto) | 
 |     target_include_directories(mbedx509 | 
 |         PUBLIC ${MBEDTLS_DIR}/include/ | 
 |         PUBLIC ${MBEDTLS_DIR}/crypto/include/) | 
 |  | 
 |     add_library(mbedtls SHARED ${src_tls}) | 
 |     set_target_properties(mbedtls PROPERTIES VERSION 2.17.0 SOVERSION 12) | 
 |     target_link_libraries(mbedtls ${libs} mbedx509) | 
 |     target_include_directories(mbedtls | 
 |         PUBLIC ${MBEDTLS_DIR}/include/ | 
 |         PUBLIC ${MBEDTLS_DIR}/crypto/include/) | 
 |  | 
 |       install(TARGETS mbedtls mbedx509 | 
 |               DESTINATION ${LIB_INSTALL_DIR} | 
 |               PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) | 
 |  | 
 | endif(USE_SHARED_MBEDTLS_LIBRARY) | 
 |  | 
 | add_custom_target(lib DEPENDS mbedx509 mbedtls) | 
 | if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY) | 
 |     add_dependencies(lib mbedx509_static mbedtls_static) | 
 | endif() |