Newer
Older
minerva / Meta / gn / secondary / Userland / Libraries / LibTLS / BUILD.gn
@minerva minerva on 13 Jul 1 KB Initial commit
import("//Meta/gn/build/download_cache.gni")
import("//Meta/gn/build/download_file.gni")

declare_args() {
  # If true, Download root CA certificate bundle from curl.se
  # Data will be downloaded to $cache_path/CACERT and used by LibTLS
  enable_cacert_download = true
}

cacert_cache = cache_path + "CACERT/"

cacert_version = "2023-12-12"

if (enable_cacert_download) {
  download_file("ca_certificates_download") {
    version = cacert_version
    url = "https://curl.se/ca/cacert-$version.pem"
    output = "$root_build_dir/cacert.pem"
    version_file = cacert_cache + "version.txt"
    sha256 = "ccbdfc2fe1a0d7bbbb9cc15710271acf1bb1afe4c8f1725fe95c4c7733fcbe5a"
  }
  # FIXME: Copy file to /etc/cacert.pem on minerva
}

shared_library("LibTLS") {
  output_name = "tls"
  include_dirs = [ "//Userland/Libraries" ]
  cflags_cc = [ "-Wvla" ]
  sources = [
    "Certificate.cpp",
    "Handshake.cpp",
    "HandshakeCertificate.cpp",
    "HandshakeClient.cpp",
    "HandshakeServer.cpp",
    "Record.cpp",
    "Socket.cpp",
    "TLSv12.cpp",
  ]
  deps = [
    ":ca_certificates_download",
    "//AK",
    "//Userland/Libraries/LibCore",
    "//Userland/Libraries/LibCrypto",
    "//Userland/Libraries/LibFileSystem",
  ]
}