blob: 3c8b0667a552285ba4b4dd94d980a7edd89c1f60 [file] [log] [blame]
# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/arm.gni")
import("//build/config/compiler/compiler.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build_overrides/build.gni")
import("src/gen/sources.gni")
# Config for us and everybody else depending on BoringSSL.
config("external_config") {
include_dirs = [ "src/include" ]
if (is_component_build) {
defines = [ "BORINGSSL_SHARED_LIBRARY" ]
}
}
# The config used by the :boringssl component itself, and the fuzzer copies.
config("component_config") {
visibility = [ ":*" ]
configs = [ ":internal_config" ]
defines = [ "BORINGSSL_IMPLEMENTATION" ]
}
# This config is used by anything that consumes internal headers. Tests consume
# this rather than :component_config.
config("internal_config") {
visibility = [ ":*" ]
defines = [
"OPENSSL_SMALL",
"OPENSSL_STATIC_ARMCAP",
]
if (is_posix) {
defines += [ "_XOPEN_SOURCE=700" ]
}
}
config("no_asm_config") {
visibility = [ ":*" ]
defines = [ "OPENSSL_NO_ASM" ]
}
# TODO(crbug.com/42290535): Move Chromium's use of libpki to the public API and
# unexport pki_internal_headers.
all_sources = bcm_internal_headers + bcm_sources + crypto_internal_headers +
crypto_sources + ssl_internal_headers + ssl_sources + pki_sources
all_headers = crypto_headers + ssl_headers + pki_headers + pki_internal_headers
if (is_msan) {
# MSan instrumentation is incompatible with assembly optimizations.
# BoringSSL's GAS-compatible assembly knows how to detect MSan, but the NASM
# assembly does not, so we check for MSan explicitly.
source_set("boringssl_asm") {
visibility = [ ":*" ]
public_configs = [ ":no_asm_config" ]
}
} else if (is_win && (current_cpu == "x86" || current_cpu == "x64")) {
# Windows' x86 and x86_64 assembly is built with NASM.
source_set("boringssl_asm") {
visibility = [ ":*" ]
public_configs = [ ":no_asm_config" ]
}
} else {
# All other targets use GAS-compatible assembler. BoringSSL's assembly files
# are all wrapped in processor checks for the corresponding target, so there
# is no need to add target conditions in the build.
source_set("boringssl_asm") {
visibility = [ ":*" ]
sources = rebase_path(bcm_sources_asm + crypto_sources_asm, ".", "src")
include_dirs = [ "src/include" ]
}
}
source_set("boringssl") {
sources = rebase_path(all_sources, ".", "src")
public = rebase_path(all_headers, ".", "src")
if (is_win) {
configs += [ ":no_asm_config" ]
} else {
deps = [ ":boringssl_asm" ]
}
public_configs = [ ":external_config" ]
configs += [ ":component_config" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
}