# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/fuzzing/fuzzer.gni")
import("//build/test.gni")
import("BUILD.generated.gni")
import("BUILD.generated_tests.gni")

if (is_fuchsia) {
  import("//build/components.gni")
}

################################################################################
# Public targets

group("boringssl") {
  public_deps = [
    ":crypto",
    ":ssl",
  ]
}

group("boringssl-shared") {
  public_deps = [
    ":crypto-shared",
    ":ssl-shared",
  ]
}

group("boringssl-static") {
  public_deps = [
    ":crypto-static",
    ":ssl-static",
  ]
}

if (current_cpu == "arm64" && (is_fuchsia || is_linux)) {
  crypto_sources += crypto_sources_linux_aarch64
} else if (current_cpu == "x64" && (is_fuchsia || is_linux)) {
  crypto_sources += crypto_sources_linux_x86_64
} else if (current_cpu == "x64" && is_mac) {
  crypto_sources += crypto_sources_mac_x86_64
} else {
  assert(false, "unsupported OS or CPU: $current_os/$current_cpu")
}

# TODO(46139): remove this added source.
crypto_sources += [ "src/decrepit/xts/xts.c" ]

################
# libcrypto.so #
################

foreach(lib_type,
        [
          "static",
          "shared",
        ]) {
  target("${lib_type}_library", "crypto-${lib_type}") {
    if (default_library_type == "${lib_type}_library") {
      output_name = "crypto"
    }
    sources = crypto_sources
    public = crypto_headers
    public_configs = [ ":boringssl_config" ]
    configs += [ ":internal_config" ]

    if (is_fuchsia) {
      # TODO(46910): UBSan has found an instance of undefined behavior in this target.
      # Disable UBSan for this target temporarily until it is migrated into CI/CQ.
      configs += [ "//build/config:temporarily_disable_ubsan_do_not_use" ]

      # TODO(60545): profile instrumentation significantly affects performance.
      configs += [ "//build/config:no_profile" ]

      # boringssl should always be optimized for speed because otherwise performance is significantly
      # worse, impacting pave and boot times on debug builds (fxb/55456)
      configs -= [ "//build/config:default_optimize" ]
      configs += [ "//build/config:optimize_speed" ]

      # sysrand() uses Zircon system call.
      deps = [ "//src/zircon/lib/zircon" ]
    }
  }

  target("${lib_type}_library", "ssl-${lib_type}") {
    if (default_library_type == "${lib_type}_library") {
      output_name = "ssl"
    }
    sources = ssl_sources
    public = ssl_headers
    public_configs = [ ":boringssl_config" ]
    configs += [ ":internal_config" ]
    deps = [ ":crypto-${lib_type}" ]

    if (is_fuchsia) {
      # boringssl should always be optimized for speed because otherwise performance is significantly
      # worse, impacting pave and boot times on debug builds (fxb/55456)
      configs -= [ "//build/config:default_optimize" ]
      configs += [ "//build/config:optimize_speed" ]
    }
  }
}

foreach(lib_name,
        [
          "crypto",
          "ssl",
        ]) {
  group("$lib_name") {
    if (default_library_type == "shared_library") {
      public_deps = [ ":${lib_name}-shared" ]
    } else if (default_library_type == "static_library") {
      public_deps = [ ":${lib_name}-static" ]
    } else {
      assert(false, "unsupported default_library_type: $default_library_type")
    }
  }
}

source_set("crypto_unsafe") {
  testonly = true
  visibility = [ ":*" ]
  sources = crypto_sources
  public = crypto_headers
  configs += [ ":fuzz_config" ]

  if (is_fuchsia) {
    # TODO(46910): UBSan has found an instance of undefined behavior in this target.
    # Disable UBSan for this target temporarily until it is migrated into CI/CQ.
    configs += [ "//build/config:temporarily_disable_ubsan_do_not_use" ]

    # sysrand() uses Zircon system call.
    deps = [ "//src/zircon/lib/zircon" ]
  }
}

source_set("ssl_unsafe") {
  testonly = true
  visibility = [ ":*" ]
  sources = ssl_sources
  public = ssl_headers
  configs += [ ":fuzz_config" ]
  deps = [ ":crypto_unsafe" ]
}

##########################
# bssl command line tool #
##########################
if (is_fuchsia) {
  fuchsia_shell_package("boringssl_tool") {
    deps = [ ":bssl" ]
  }
} else {
  group("boringssl_tool") {
    deps = [ ":bssl" ]
  }
}

# See //third_party/boringssl/tool/CMakeLists.txt
executable("bssl") {
  visibility = [ ":*" ]
  sources = tool_sources
  configs += [ "//third_party/boringssl:internal_config" ]
  deps = [
    ":crypto",
    ":ssl",
  ]
}

##############
# Unit tests #
##############

crypto_tests = []
common_crypto_test_sources = [
  "crypto_test_data.cc",

  # This test does nothing when BORINGSSL_SHARED_LIBRARY is defined and is
  # needed to resolve missing symbols. /shrug
  "src/crypto/test/abi_test.cc",
  "src/crypto/test/file_test_gtest.cc",
  "src/crypto/test/gtest_main.cc",
]
_crypto_test_sources = crypto_test_sources - common_crypto_test_sources
foreach(crypto_test_source, _crypto_test_sources) {
  name = get_path_info(crypto_test_source, "name")
  target_name = "${name}_crypto_test"
  crypto_tests += [ target_name ]
  test(target_name) {
    visibility = [ ":*" ]
    sources = [ crypto_test_source ] + common_crypto_test_sources +
              test_support_sources
    configs += [ ":test_config" ]
    deps = [
      ":crypto",
      "//third_party/googletest:gtest",
    ]
  }
}

test("ssl_test") {
  visibility = [ ":*" ]
  sources = ssl_test_sources + test_support_sources
  configs += [ ":test_config" ]
  deps = [
    ":crypto",
    ":ssl",
    "//third_party/googletest:gtest",
  ]
}

if (is_fuchsia) {
  crypto_test_components = []
  needs_custom_component_manifest = [ "bio_test_crypto_test" ]
  foreach(crypto_test, crypto_tests) {
    _component_name = "${crypto_test}_component"
    crypto_test_components += [ ":${_component_name}" ]
    fuchsia_unittest_component(_component_name) {
      if (needs_custom_component_manifest + [ crypto_test ] - [ crypto_test ] !=
          needs_custom_component_manifest) {
        manifest = "meta/${crypto_test}.cml"
      }
      deps = [ ":${crypto_test}" ]
    }
  }
  fuchsia_unittest_component("ssl_test_component") {
    deps = [ ":ssl_test" ]
  }
  fuchsia_test_package("boringssl_tests") {
    test_components = crypto_test_components + [ ":ssl_test_component" ]
    deps = [
      "//src/connectivity/network/netstack:component",
      "//src/sys/stash:stash_secure_v2",
    ]
  }
}

group("tests") {
  testonly = true
  if (is_fuchsia) {
    deps = [ ":boringssl_tests" ]
  } else {
    deps = [ ":ssl_test" ]
    foreach(crypto_test, crypto_tests) {
      deps += [ ":${crypto_test}" ]
    }
  }
}

################################################################################
# Fuzzers

# Upstream BoringSSL defines a `fuzzers` global variable in the generated
# GNI files; we rename it to avoid colliding with the similarly-named parameter
# on the fuzzers_package.
fuzzer_names = fuzzers

# Explicitly remove the arm_cpuinfo fuzzer, which tests Linux-specific routines
if (is_fuchsia) {
  fuzzer_names -= [ "arm_cpuinfo" ]
}

foreach(name, fuzzer_names) {
  fuzzer("${name}_fuzzer") {
    visibility = [ ":*" ]
    sources = [ "src/fuzz/${name}.cc" ]
    configs += [ ":fuzz_config" ]
    deps = [
      ":crypto_unsafe",
      ":ssl_unsafe",
    ]
  }
}

fuzzers_package("boringssl_fuzzers") {
  fuzzers = []
  foreach(name, fuzzer_names) {
    fuzzers += [ ":${name}_fuzzer" ]
  }
}

################################################################################
# Configs
config("boringssl_config") {
  include_dirs = [ "src/include" ]
}

config("internal_config") {
  visibility = [ ":*" ]
  defines = [
    "BORINGSSL_ALLOW_CXX_RUNTIME",
    "BORINGSSL_IMPLEMENTATION",
    "BORINGSSL_NO_STATIC_INITIALIZER",
    "BORINGSSL_SHARED_LIBRARY",
    "OPENSSL_SMALL",
  ]
  if (is_linux) {
    # pthread_rwlock_t on Linux requires a feature flag.
    defines += [ "_XOPEN_SOURCE=700" ]
  }
  cflags = [
    "-Wno-conversion",
    "-Wno-deprecated-copy",
    "-Wno-extra-semi",
    "-Wno-unused-but-set-variable",
    "-Wno-unused-function",
  ]
  configs = [
    ":boringssl_config",
    "//build/config:shared_library_config",
  ]
  if (is_fuchsia) {
    configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
  }
}

config("test_config") {
  visibility = [ ":*" ]
  include_dirs = [
    "src/crypto/test",
    "src/ssl/test",
  ]
  configs = [ ":internal_config" ]

  # TODO(fxbug.dev/11049): Newer googletest's are spamming about an API rename, but
  # BoringSSL hasn't updated yet.
  cflags = [ "-Wno-deprecated-declarations" ]
}

config("fuzz_config") {
  visibility = [ ":*" ]

  # BoringSSL explicitly decided against using the common LLVM fuzzing macro:
  # https://boringssl-review.googlesource.com/c/boringssl/+/31244
  defines = [ "BORINGSSL_UNSAFE_DETERMINISTIC_MODE" ]
  configs = [ ":internal_config" ]
}
