| # Copyright 2019 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/zircon/migrated_targets.gni") |
| |
| # Note this leads to "$root_out_dir/obj/ABS_PATH/..." files in the build. |
| bssl_dir = "//zircon/../third_party/boringssl" |
| |
| import("$bssl_dir/zircon.gni") |
| |
| # Zircon code that depends on BoringSSL should have a "#define BORINGSSL_NO_CXX" |
| # statement before any "#include <openssl/...>" statements to avoid pulling in |
| # C++ headers. |
| zx_library("boringssl") { |
| kernel = true |
| host = true |
| static = true |
| sdk = "static" |
| sdk_headers = [ |
| "openssl/aead.h", |
| "openssl/aes.h", |
| "openssl/arm_arch.h", |
| "openssl/base64.h", |
| "openssl/base.h", |
| "openssl/chacha.h", |
| "openssl/cipher.h", |
| "openssl/cpu.h", |
| "openssl/crypto.h", |
| "openssl/digest.h", |
| "openssl/err.h", |
| "openssl/evp.h", |
| "openssl/ex_data.h", |
| "openssl/hkdf.h", |
| "openssl/hmac.h", |
| "openssl/is_boringssl.h", |
| "openssl/md4.h", |
| "openssl/md5.h", |
| "openssl/mem.h", |
| "openssl/nid.h", |
| "openssl/opensslconf.h", |
| "openssl/rand.h", |
| "openssl/sha.h", |
| "openssl/stack.h", |
| "openssl/thread.h", |
| "openssl/type_check.h", |
| ] |
| |
| if (is_kernel) { |
| sources = rebase_path(boringssl_zircon_kernel_sources, ".", bssl_dir) + |
| [ "zircon-mem.c" ] |
| include_dirs = rebase_path(boringssl_zircon_include_dirs, ".", bssl_dir) |
| |
| # Avoid circularity. |
| configs -= [ "//zircon/kernel/vm:headers.config" ] |
| |
| defines = [ |
| # The assembly code uses vector registers, which is not allowed in |
| # kernel code. |
| "OPENSSL_NO_ASM", |
| "OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED", |
| ] |
| } else { |
| sources = rebase_path(boringssl_zircon_system_sources, ".", bssl_dir) + |
| [ "zircon-unused.c" ] |
| if (current_cpu == "arm64") { |
| sources += |
| rebase_path(boringssl_zircon_system_arm64_sources, ".", bssl_dir) |
| } else if (current_cpu == "x64") { |
| if (current_os == "mac") { |
| sources += rebase_path(boringssl_zircon_system_x64_darwin_sources, |
| ".", |
| bssl_dir) |
| } else if (current_os == "linux" || current_os == "fuchsia") { |
| # Fuchsia can use the Linux optimized assembly without modification. |
| sources += rebase_path(boringssl_zircon_system_x64_linux_sources, |
| ".", |
| bssl_dir) |
| } else { |
| assert(false, "Unsupported OS") |
| } |
| } else { |
| assert("Unsupported CPU") |
| } |
| include_dirs = rebase_path(boringssl_zircon_include_dirs, ".", bssl_dir) + |
| [ "$bssl_dir/src" ] |
| |
| if (is_fuchsia) { |
| deps = [ "//src/zircon/lib/zircon" ] |
| } else { |
| defines = [ |
| # Required for `pthread_rwlock_t`. |
| "_XOPEN_SOURCE=700", |
| ] |
| } |
| } |
| |
| # TODO(41904): 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/zircon:temporarily_disable_ubsan_do_not_use" ] |
| |
| # This code doesn't use the annotation attribute. |
| configs -= [ "//build/config/zircon:warn-implicit-fallthrough" ] |
| } |