| # 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" ] |
| } |