if(NOT BearSSL_FOUND)
  set(BEARSSL_DIR "${PROJECT_SOURCE_DIR}/vendor/bearssl")

  set(BEARSSL_PUBLIC_HEADER "${BEARSSL_DIR}/inc/bearssl.h")
  set(BEARSSL_PRIVATE_HEADERS
    "${BEARSSL_DIR}/inc/bearssl_aead.h"
    "${BEARSSL_DIR}/inc/bearssl_block.h"
    "${BEARSSL_DIR}/inc/bearssl_ec.h"
    "${BEARSSL_DIR}/inc/bearssl_hash.h"
    "${BEARSSL_DIR}/inc/bearssl_hmac.h"
    "${BEARSSL_DIR}/inc/bearssl_kdf.h"
    "${BEARSSL_DIR}/inc/bearssl_pem.h"
    "${BEARSSL_DIR}/inc/bearssl_prf.h"
    "${BEARSSL_DIR}/inc/bearssl_rand.h"
    "${BEARSSL_DIR}/inc/bearssl_rsa.h"
    "${BEARSSL_DIR}/inc/bearssl_ssl.h"
    "${BEARSSL_DIR}/inc/bearssl_x509.h")

  set(BEARSSL_SOURCES
    "${BEARSSL_PUBLIC_HEADER}" ${BEARSSL_PRIVATE_HEADERS}
    "${BEARSSL_DIR}/src/kdf/hkdf.c"
    "${BEARSSL_DIR}/src/ssl/ssl_hashes.c"
    "${BEARSSL_DIR}/src/ssl/ssl_scert_single_ec.c"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_rsavrfy.c"
    "${BEARSSL_DIR}/src/ssl/ssl_hs_client.t0"
    "${BEARSSL_DIR}/src/ssl/prf.c"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_ecdsa.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_minf2c.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_mine2g.c"
    "${BEARSSL_DIR}/src/ssl/ssl_io.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_minr2g.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_mine2c.c"
    "${BEARSSL_DIR}/src/ssl/ssl_hs_server.t0"
    "${BEARSSL_DIR}/src/ssl/ssl_engine.c"
    "${BEARSSL_DIR}/src/ssl/ssl_hs_client.c"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_aesccm.c"
    "${BEARSSL_DIR}/src/ssl/ssl_rec_ccm.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_minf2g.c"
    "${BEARSSL_DIR}/src/ssl/ssl_client.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_minu2g.c"
    "${BEARSSL_DIR}/src/ssl/ssl_rec_gcm.c"
    "${BEARSSL_DIR}/src/ssl/ssl_rec_chapol.c"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_aesgcm.c"
    "${BEARSSL_DIR}/src/ssl/ssl_keyexport.c"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_aescbc.c"
    "${BEARSSL_DIR}/src/ssl/ssl_rec_cbc.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_minv2g.c"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_descbc.c"
    "${BEARSSL_DIR}/src/ssl/ssl_lru.c"
    "${BEARSSL_DIR}/src/ssl/prf_sha384.c"
    "${BEARSSL_DIR}/src/ssl/prf_sha256.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server.c"
    "${BEARSSL_DIR}/src/ssl/ssl_hs_server.c"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_ec.c"
    "${BEARSSL_DIR}/src/ssl/ssl_client_default_rsapub.c"
    "${BEARSSL_DIR}/src/ssl/ssl_hs_common.t0"
    "${BEARSSL_DIR}/src/ssl/ssl_engine_default_chapol.c"
    "${BEARSSL_DIR}/src/ssl/ssl_scert_single_rsa.c"
    "${BEARSSL_DIR}/src/ssl/ssl_ccert_single_rsa.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_full_ec.c"
    "${BEARSSL_DIR}/src/ssl/prf_md5sha1.c"
    "${BEARSSL_DIR}/src/ssl/ssl_client_full.c"
    "${BEARSSL_DIR}/src/ssl/ssl_server_full_rsa.c"
    "${BEARSSL_DIR}/src/ssl/ssl_ccert_single_ec.c"
    "${BEARSSL_DIR}/src/aead/gcm.c"
    "${BEARSSL_DIR}/src/aead/ccm.c"
    "${BEARSSL_DIR}/src/aead/eax.c"
    "${BEARSSL_DIR}/src/config.h"
    "${BEARSSL_DIR}/src/hash/sha2small.c"
    "${BEARSSL_DIR}/src/hash/ghash_ctmul32.c"
    "${BEARSSL_DIR}/src/hash/mgf1.c"
    "${BEARSSL_DIR}/src/hash/sha1.c"
    "${BEARSSL_DIR}/src/hash/md5sha1.c"
    "${BEARSSL_DIR}/src/hash/dig_size.c"
    "${BEARSSL_DIR}/src/hash/multihash.c"
    "${BEARSSL_DIR}/src/hash/ghash_pclmul.c"
    "${BEARSSL_DIR}/src/hash/ghash_ctmul.c"
    "${BEARSSL_DIR}/src/hash/ghash_ctmul64.c"
    "${BEARSSL_DIR}/src/hash/sha2big.c"
    "${BEARSSL_DIR}/src/hash/ghash_pwr8.c"
    "${BEARSSL_DIR}/src/hash/md5.c"
    "${BEARSSL_DIR}/src/hash/dig_oid.c"
    "${BEARSSL_DIR}/src/codec/enc32le.c"
    "${BEARSSL_DIR}/src/codec/dec16le.c"
    "${BEARSSL_DIR}/src/codec/dec64be.c"
    "${BEARSSL_DIR}/src/codec/pemdec.t0"
    "${BEARSSL_DIR}/src/codec/dec16be.c"
    "${BEARSSL_DIR}/src/codec/enc32be.c"
    "${BEARSSL_DIR}/src/codec/dec64le.c"
    "${BEARSSL_DIR}/src/codec/enc64le.c"
    "${BEARSSL_DIR}/src/codec/dec32be.c"
    "${BEARSSL_DIR}/src/codec/enc16be.c"
    "${BEARSSL_DIR}/src/codec/pemenc.c"
    "${BEARSSL_DIR}/src/codec/ccopy.c"
    "${BEARSSL_DIR}/src/codec/pemdec.c"
    "${BEARSSL_DIR}/src/codec/enc64be.c"
    "${BEARSSL_DIR}/src/codec/enc16le.c"
    "${BEARSSL_DIR}/src/codec/dec32le.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_keygen_inner.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_pubexp.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i62_pkcs1_vrfy.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_modulus.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_oaep_encrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_pub.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_pub.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_modulus.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_pub.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i62_oaep_encrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_pkcs1_vrfy.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i32_oaep_decrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_keygen.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_oaep_decrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_pkcs1_vrfy.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_priv.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i32_priv.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_pubexp.c"
    "${BEARSSL_DIR}/src/rsa/rsa_oaep_unpad.c"
    "${BEARSSL_DIR}/src/rsa/rsa_ssl_decrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_keygen.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_pkcs1_sign.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i32_pub.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_pubexp.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_privexp.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_oaep_decrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_keygen.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i62_keygen.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i32_pkcs1_sign.c"
    "${BEARSSL_DIR}/src/rsa/rsa_pkcs1_sig_pad.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_priv.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i62_pkcs1_sign.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_oaep_encrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_priv.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_pkcs1_sign.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i62_pub.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_privexp.c"
    "${BEARSSL_DIR}/src/rsa/rsa_pkcs1_sig_unpad.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_pkcs1_sign.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i31_privexp.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i62_priv.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_oaep_encrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i62_oaep_decrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i32_oaep_encrypt.c"
    "${BEARSSL_DIR}/src/rsa/rsa_default_pkcs1_vrfy.c"
    "${BEARSSL_DIR}/src/rsa/rsa_oaep_pad.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_modulus.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i32_pkcs1_vrfy.c"
    "${BEARSSL_DIR}/src/rsa/rsa_i15_oaep_decrypt.c"
    "${BEARSSL_DIR}/src/ec/ec_keygen.c"
    "${BEARSSL_DIR}/src/ec/ec_prime_i31.c"
    "${BEARSSL_DIR}/src/ec/ec_default.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i31_vrfy_asn1.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_atr.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i15_vrfy_asn1.c"
    "${BEARSSL_DIR}/src/ec/ec_c25519_m31.c"
    "${BEARSSL_DIR}/src/ec/ec_c25519_i31.c"
    "${BEARSSL_DIR}/src/ec/ec_curve25519.c"
    "${BEARSSL_DIR}/src/ec/ec_all_m31.c"
    "${BEARSSL_DIR}/src/ec/ec_p256_m31.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_default_sign_asn1.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_rta.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i15_vrfy_raw.c"
    "${BEARSSL_DIR}/src/ec/ec_c25519_m15.c"
    "${BEARSSL_DIR}/src/ec/ec_all_m15.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i31_sign_asn1.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i15_sign_raw.c"
    "${BEARSSL_DIR}/src/ec/ec_c25519_i15.c"
    "${BEARSSL_DIR}/src/ec/ec_secp384r1.c"
    "${BEARSSL_DIR}/src/ec/ec_p256_m15.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i15_sign_asn1.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i31_vrfy_raw.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_default_sign_raw.c"
    "${BEARSSL_DIR}/src/ec/ec_secp256r1.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i31_bits.c"
    "${BEARSSL_DIR}/src/ec/ec_prime_i15.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i15_bits.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_default_vrfy_asn1.c"
    "${BEARSSL_DIR}/src/ec/ec_secp521r1.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_default_vrfy_raw.c"
    "${BEARSSL_DIR}/src/ec/ec_pubkey.c"
    "${BEARSSL_DIR}/src/ec/ecdsa_i31_sign_raw.c"
    "${BEARSSL_DIR}/src/x509/asn1.t0"
    "${BEARSSL_DIR}/src/x509/asn1enc.c"
    "${BEARSSL_DIR}/src/x509/encode_ec_rawder.c"
    "${BEARSSL_DIR}/src/x509/x509_minimal.t0"
    "${BEARSSL_DIR}/src/x509/skey_decoder.t0"
    "${BEARSSL_DIR}/src/x509/x509_minimal_full.c"
    "${BEARSSL_DIR}/src/x509/encode_rsa_rawder.c"
    "${BEARSSL_DIR}/src/x509/x509_minimal.c"
    "${BEARSSL_DIR}/src/x509/x509_decoder.t0"
    "${BEARSSL_DIR}/src/x509/x509_knownkey.c"
    "${BEARSSL_DIR}/src/x509/skey_decoder.c"
    "${BEARSSL_DIR}/src/x509/encode_rsa_pk8der.c"
    "${BEARSSL_DIR}/src/x509/encode_ec_pk8der.c"
    "${BEARSSL_DIR}/src/x509/x509_decoder.c"
    "${BEARSSL_DIR}/src/mac/hmac.c"
    "${BEARSSL_DIR}/src/mac/hmac_ct.c"
    "${BEARSSL_DIR}/src/int/i32_bitlen.c"
    "${BEARSSL_DIR}/src/int/i31_fmont.c"
    "${BEARSSL_DIR}/src/int/i31_decred.c"
    "${BEARSSL_DIR}/src/int/i15_rshift.c"
    "${BEARSSL_DIR}/src/int/i62_modpow2.c"
    "${BEARSSL_DIR}/src/int/i32_decmod.c"
    "${BEARSSL_DIR}/src/int/i31_encode.c"
    "${BEARSSL_DIR}/src/int/i32_iszero.c"
    "${BEARSSL_DIR}/src/int/i31_mulacc.c"
    "${BEARSSL_DIR}/src/int/i15_modpow2.c"
    "${BEARSSL_DIR}/src/int/i32_muladd.c"
    "${BEARSSL_DIR}/src/int/i15_reduce.c"
    "${BEARSSL_DIR}/src/int/i31_decode.c"
    "${BEARSSL_DIR}/src/int/i15_decred.c"
    "${BEARSSL_DIR}/src/int/i31_rshift.c"
    "${BEARSSL_DIR}/src/int/i32_modpow.c"
    "${BEARSSL_DIR}/src/int/i32_fmont.c"
    "${BEARSSL_DIR}/src/int/i31_reduce.c"
    "${BEARSSL_DIR}/src/int/i15_decode.c"
    "${BEARSSL_DIR}/src/int/i15_fmont.c"
    "${BEARSSL_DIR}/src/int/i31_ninv31.c"
    "${BEARSSL_DIR}/src/int/i31_montmul.c"
    "${BEARSSL_DIR}/src/int/i15_encode.c"
    "${BEARSSL_DIR}/src/int/i32_div32.c"
    "${BEARSSL_DIR}/src/int/i15_mulacc.c"
    "${BEARSSL_DIR}/src/int/i31_muladd.c"
    "${BEARSSL_DIR}/src/int/i32_ninv32.c"
    "${BEARSSL_DIR}/src/int/i32_decode.c"
    "${BEARSSL_DIR}/src/int/i31_decmod.c"
    "${BEARSSL_DIR}/src/int/i31_tmont.c"
    "${BEARSSL_DIR}/src/int/i31_iszero.c"
    "${BEARSSL_DIR}/src/int/i32_encode.c"
    "${BEARSSL_DIR}/src/int/i15_montmul.c"
    "${BEARSSL_DIR}/src/int/i32_mulacc.c"
    "${BEARSSL_DIR}/src/int/i15_moddiv.c"
    "${BEARSSL_DIR}/src/int/i32_decred.c"
    "${BEARSSL_DIR}/src/int/i31_sub.c"
    "${BEARSSL_DIR}/src/int/i15_modpow.c"
    "${BEARSSL_DIR}/src/int/i15_add.c"
    "${BEARSSL_DIR}/src/int/i31_add.c"
    "${BEARSSL_DIR}/src/int/i31_bitlen.c"
    "${BEARSSL_DIR}/src/int/i32_montmul.c"
    "${BEARSSL_DIR}/src/int/i15_sub.c"
    "${BEARSSL_DIR}/src/int/i15_iszero.c"
    "${BEARSSL_DIR}/src/int/i15_decmod.c"
    "${BEARSSL_DIR}/src/int/i32_tmont.c"
    "${BEARSSL_DIR}/src/int/i32_reduce.c"
    "${BEARSSL_DIR}/src/int/i15_muladd.c"
    "${BEARSSL_DIR}/src/int/i31_modpow2.c"
    "${BEARSSL_DIR}/src/int/i15_tmont.c"
    "${BEARSSL_DIR}/src/int/i15_bitlen.c"
    "${BEARSSL_DIR}/src/int/i15_ninv15.c"
    "${BEARSSL_DIR}/src/int/i31_modpow.c"
    "${BEARSSL_DIR}/src/int/i32_add.c"
    "${BEARSSL_DIR}/src/int/i32_sub.c"
    "${BEARSSL_DIR}/src/int/i31_moddiv.c"
    "${BEARSSL_DIR}/src/symcipher/des_tab_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct64.c"
    "${BEARSSL_DIR}/src/symcipher/aes_big_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_pwr8_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct_ctr.c"
    "${BEARSSL_DIR}/src/symcipher/des_ct.c"
    "${BEARSSL_DIR}/src/symcipher/aes_x86ni_ctrcbc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_small_ctrcbc.c"
    "${BEARSSL_DIR}/src/symcipher/des_ct_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/poly1305_ctmul32.c"
    "${BEARSSL_DIR}/src/symcipher/aes_big_ctr.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct_ctrcbc.c"
    "${BEARSSL_DIR}/src/symcipher/des_ct_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/poly1305_ctmulq.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct64_ctrcbc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_pwr8_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/chacha20_ct.c"
    "${BEARSSL_DIR}/src/symcipher/aes_big_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_small_ctr.c"
    "${BEARSSL_DIR}/src/symcipher/aes_x86ni.c"
    "${BEARSSL_DIR}/src/symcipher/des_tab_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct64_ctr.c"
    "${BEARSSL_DIR}/src/symcipher/des_support.c"
    "${BEARSSL_DIR}/src/symcipher/aes_big_ctrcbc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_small_dec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_x86ni_ctr.c"
    "${BEARSSL_DIR}/src/symcipher/aes_common.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct64_dec.c"
    "${BEARSSL_DIR}/src/symcipher/des_tab.c"
    "${BEARSSL_DIR}/src/symcipher/aes_big_dec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_pwr8.c"
    "${BEARSSL_DIR}/src/symcipher/aes_small_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/chacha20_sse2.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct_enc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_x86ni_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/poly1305_ctmul.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct64_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_pwr8_ctr.c"
    "${BEARSSL_DIR}/src/symcipher/poly1305_i15.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct64_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_x86ni_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct_dec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct_cbcenc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_small_cbcdec.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct.c"
    "${BEARSSL_DIR}/src/symcipher/aes_big_enc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_ct64_enc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_small_enc.c"
    "${BEARSSL_DIR}/src/symcipher/aes_pwr8_ctrcbc.c"
    "${BEARSSL_DIR}/src/settings.c"
    "${BEARSSL_DIR}/src/rand/sysrng.c"
    "${BEARSSL_DIR}/src/rand/aesctr_drbg.c"
    "${BEARSSL_DIR}/src/rand/hmac_drbg.c"
    "${BEARSSL_DIR}/src/inner.h")

  if(WIN32)
    # BearSSL doesn't seem to support DLLs
    add_library(bearssl STATIC ${BEARSSL_SOURCES})
  else()
    add_library(bearssl ${BEARSSL_SOURCES})
  endif()

  target_include_directories(bearssl PRIVATE "${BEARSSL_DIR}/src")
  target_include_directories(bearssl PUBLIC
    "$<BUILD_INTERFACE:${BEARSSL_DIR}/inc>"
    "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")

  add_library(BearSSL::BearSSL ALIAS bearssl)

  set_target_properties(bearssl
    PROPERTIES
      OUTPUT_NAME bearssl
      PUBLIC_HEADER "${BEARSSL_PUBLIC_HEADER}"
      PRIVATE_HEADER "${BEARSSL_PRIVATE_HEADERS}"
      C_VISIBILITY_PRESET "default"
      C_VISIBILITY_INLINES_HIDDEN FALSE
      WINDOWS_EXPORT_ALL_SYMBOLS TRUE
      EXPORT_NAME bearssl)

  if(SOURCEMETA_CORE_INSTALL)
    include(GNUInstallDirs)
    install(TARGETS bearssl
      EXPORT bearssl
      PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
        COMPONENT sourcemeta_core_dev
      PRIVATE_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
        COMPONENT sourcemeta_core_dev
      RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
        COMPONENT sourcemeta_core
      LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
        COMPONENT sourcemeta_core
        NAMELINK_COMPONENT sourcemeta_core_dev
      ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
        COMPONENT sourcemeta_core_dev)
    install(EXPORT bearssl
      DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/bearssl"
      COMPONENT sourcemeta_core_dev)

    file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bearssl-config.cmake
      "include(\"\${CMAKE_CURRENT_LIST_DIR}/bearssl.cmake\")\n"
      "check_required_components(\"bearssl\")\n")
    install(FILES
      "${CMAKE_CURRENT_BINARY_DIR}/bearssl-config.cmake"
      DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/bearssl"
      COMPONENT sourcemeta_core_dev)
  endif()

  set(BearSSL_FOUND ON)
endif()
