blob: ac610817843758a2588ee15fdaba25564a166a95 [file] [log] [blame]
# 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/cpp/prebuilt_shared_library.gni")
import("//build/package.gni")
import("BUILD.generated.gni")
import("BUILD.generated_tests.gni")
################################################################################
# Public targets
group("boringssl") {
public_deps = [
":crypto",
":ssl",
]
}
if (is_fuchsia) {
library_type = "prebuilt_shared_library"
} else {
library_type = default_library_type
}
################
# libcrypto.so #
################
target(library_type, "crypto") {
if (is_fuchsia) {
category = "partner"
}
sources = crypto_sources
public = crypto_headers
public_configs = [ ":boringssl_config" ]
configs += [ ":internal_config" ]
if (current_cpu == "arm64") {
if (is_mac) {
sources += crypto_sources_ios_aarch64
configs += [ ":pthread_config" ]
} else if (is_fuchsia) {
# TODO(aarongreen): Switch once aarch64 once crypto/cpu-aarch64-fuchsia.c
# is upstreamed.
# sources += crypto_sources_linux_aarch64
configs += [ ":no_asm_config" ]
} else if (is_linux) {
sources += crypto_sources_linux_aarch64
configs += [ ":pthread_config" ]
} else {
assert(false, "unsupported OS: {{current_os}}")
}
} else if (current_cpu == "x64") {
if (is_mac) {
sources += crypto_sources_mac_x86_64
configs += [ ":pthread_config" ]
} else if (is_fuchsia) {
# Fuchsia assembly is the same as Linux on x86-64, for now; i.e. ELF.
sources += crypto_sources_linux_x86_64
} else if (is_linux) {
sources += crypto_sources_linux_x86_64
configs += [ ":pthread_config" ]
} else {
assert(false, "unsupported OS: {{current_os}}")
}
} else {
assert(false, "unsupported CPU: {{current_cpu}}")
}
if (is_fuchsia) {
include_base = "//third_party/boringssl/src/include"
deps = [ "//zircon/public/lib/zxcpp" ]
}
}
target(library_type, "ssl") {
if (is_fuchsia) {
category = "partner"
}
sources = ssl_sources
public = ssl_headers
public_configs = [ ":boringssl_config" ]
configs += [ ":internal_config" ]
deps = [
":crypto",
]
if (is_fuchsia) {
runtime_deps = [ ":crypto_sdk" ]
include_base = "//third_party/boringssl/src/include"
deps += [ "//zircon/public/lib/zxcpp" ]
}
}
##########################
# bssl command line tool #
##########################
if (is_fuchsia) {
package("boringssl_tool") {
deprecated_system_image = true
deps = [
":bssl",
]
binaries = [
{
name = "bssl"
},
]
}
} else {
group("boringssl_tool") {
deps = [
":bssl_tool",
]
}
}
# See //third_party/boringssl/tool/CMakeLists.txt
executable("bssl") {
visibility = [ ":*" ]
sources = [
"src/tool/args.cc",
"src/tool/ciphers.cc",
"src/tool/client.cc",
"src/tool/const.cc",
"src/tool/digest.cc",
"src/tool/file.cc",
"src/tool/generate_ed25519.cc",
"src/tool/genrsa.cc",
"src/tool/pkcs12.cc",
"src/tool/rand.cc",
"src/tool/server.cc",
"src/tool/sign.cc",
"src/tool/speed.cc",
"src/tool/tool.cc",
"src/tool/transport_common.cc",
]
configs += [ "//third_party/boringssl:internal_config" ]
deps = [
":crypto",
":ssl",
]
}
##############
# Unit tests #
##############
if (is_fuchsia) {
package("boringssl_tests") {
testonly = true
deps = [
":crypto_test",
":ssl_test",
]
tests = [
{
name = "crypto_test"
# This test takes a long time to run, and it is included in every subset
# of the Fuchsia build.
# TODO(bgoldman): Find a way to skip this test when runtests is set to
# skip "large" tests.
disabled = true
},
{
name = "ssl_test"
},
]
}
} else {
group("tests") {
testonly = true
deps = [
":crypto_test",
":ssl_test",
]
}
}
executable("crypto_test") {
testonly = true
visibility = [ ":*" ]
sources = crypto_test_sources + test_support_sources
configs += [ ":test_config" ]
deps = [
":crypto",
"//third_party/googletest:gtest",
]
}
executable("ssl_test") {
testonly = true
visibility = [ ":*" ]
sources = ssl_test_sources + test_support_sources
configs += [ ":test_config" ]
deps = [
":crypto",
":ssl",
"//third_party/googletest:gtest",
]
}
################################################################################
# Configs
config("boringssl_config") {
include_dirs = [ "src/include" ]
if (is_fuchsia) {
# rand_fuchsia uses a system call
libs = [ "zircon" ]
}
}
config("internal_config") {
visibility = [ ":*" ]
defines = [
"BORINGSSL_ALLOW_CXX_RUNTIME",
"BORINGSSL_IMPLEMENTATION",
"BORINGSSL_NO_STATIC_INITIALIZER",
"BORINGSSL_SHARED_LIBRARY",
"OPENSSL_SMALL",
]
cflags = [ "-Wno-unused-function" ]
configs = [
":boringssl_config",
"//build/config:shared_library_config",
]
}
config("pthread_config") {
# pthread_rwlock_t on host requires a feature flag.
defines = [ "_XOPEN_SOURCE=700" ]
}
config("no_asm_config") {
defines = [ "OPENSSL_NO_ASM" ]
}
config("test_config") {
visibility = [ ":*" ]
include_dirs = [
"src/crypto/test",
"src/ssl/test",
]
configs = [ ":internal_config" ]
}