blob: 10061446d910aeea9ae81fc581898272390e9992 [file] [log] [blame]
import("//starboard/sabi/sabi.gni")
import("//third_party/boringssl/buildfiles.gni")
declare_args() {
asm_target_arch = target_cpu
}
if (is_starboard) {
declare_args() {
openssl_config_path = "$boringssl_root/config/starboard"
}
}
config("external_config") {
include_dirs = [ "$boringssl_root/include" ]
if (is_starboard) {
include_dirs += [ openssl_config_path ]
}
}
config("internal_config") {
configs = [ ":external_config" ]
defines = [
"PURIFY",
"TERMIO",
"_REENTRANT",
]
if (!is_starboard || !is_win) {
cflags = [
"-fPIC",
"-fvisibility=hidden",
]
cflags_c = [
"-std=gnu99",
"-Wno-bad-function-cast",
]
}
ldflags = [ "-fPIC" ]
include_dirs = [ "." ]
if (is_starboard) {
defines += [
"NO_SYS_PARAM_H",
"NO_SYS_UN_H",
"NO_SYSLOG",
"OPENSSL_NO_CAMELLIA",
"OPENSSL_NO_CAPIENG",
"OPENSSL_NO_CAST",
"OPENSSL_NO_CMS",
"OPENSSL_NO_DYNAMIC_ENGINE",
"OPENSSL_NO_EC_NISTP_64_GCC_128",
"OPENSSL_NO_GMP",
"OPENSSL_NO_IDEA",
"OPENSSL_NO_JPAKE",
"OPENSSL_NO_KRB5",
"OPENSSL_NO_MDC2",
"OPENSSL_NO_OCSP",
"OPENSSL_NO_RC5",
"OPENSSL_NO_RFC3779",
"OPENSSL_NO_SCTP",
"OPENSSL_NO_SEED",
"OPENSSL_NO_STORE",
"OPENSSL_NO_SOCK", # Added by Cobalt to remove unused socket code.
"OPENSSL_NO_WHIRLPOOL",
"OPENSSL_NO_POSIX_IO",
]
}
}
partial_crypto_excludes = [
"$boringssl_root/crypto/bio/connect.c",
"$boringssl_root/crypto/bio/fd.c",
"$boringssl_root/crypto/bio/socket.c",
"$boringssl_root/crypto/bio/socket_helper.c",
]
static_library("crypto") {
sources = boringssl_crypto_files + boringssl_ssl_files
sources -= partial_crypto_excludes
configs += [ ":internal_config" ]
all_dependent_configs = [ ":external_config" ]
if (is_starboard) {
sources -= [
"$boringssl_root/crypto/rand_extra/deterministic.c",
"$boringssl_root/crypto/rand_extra/fuchsia.c",
"$boringssl_root/crypto/rand_extra/windows.c",
]
sources += [
"$boringssl_root/crypto/cpu-starboard.c",
"$boringssl_root/crypto/rand_extra/starboard.c",
]
public_deps = [
"//starboard:starboard_headers_only",
"//starboard/client_porting/eztime",
]
configs -= [ "//starboard/build/config:size" ]
configs += [ "//starboard/build/config:speed" ]
if (sb_is_evergreen) {
calling_convention = sabi_variables.calling_convention
if ((calling_convention != "aarch64" && calling_convention != "eabi" &&
calling_convention != "sysv" && calling_convention != "windows") ||
(asm_target_arch != "x86" && asm_target_arch != "x64" &&
asm_target_arch != "arm" && asm_target_arch != "arm64")) {
defines = [ "OPENSSL_NO_ASM" ]
} else {
if (calling_convention == "aarch64" || calling_convention == "eabi" ||
calling_convention == "sysv") {
if (asm_target_arch == "x86") {
sources += boringssl_linux_x86_files
} else if (asm_target_arch == "x64") {
sources += boringssl_linux_x86_64_files
} else if (asm_target_arch == "arm") {
sources += boringssl_linux_arm_files
} else if (asm_target_arch == "arm64") {
sources += boringssl_linux_aarch64_files
} else if (calling_convention == "windows") {
if (asm_target_arch == "x86") {
sources += boringssl_win_x86_files
} else if (asm_target_arch == "x64") {
sources += boringssl_win_x86_64_files
}
}
}
}
} else {
if ((!is_linux && !is_android && !is_apple) ||
(asm_target_arch != "x86" && asm_target_arch != "x64" &&
asm_target_arch != "arm" && asm_target_arch != "arm64")) {
defines = [ "OPENSSL_NO_ASM" ]
} else if (is_linux || is_android) {
if (asm_target_arch == "x86") {
sources += boringssl_linux_x86_files
} else if (asm_target_arch == "x64") {
sources += boringssl_linux_x86_64_files
} else if (asm_target_arch == "arm") {
sources += boringssl_linux_arm_files
} else if (asm_target_arch == "arm64") {
sources += boringssl_linux_aarch64_files
}
} else if (is_mac) {
if (asm_target_arch == "arm64") {
sources += boringssl_ios_aarch64_files
} else if (asm_target_arch == "x64") {
defines = [ "OPENSSL_NO_ASM" ]
}
}
}
}
}
static_library("crypto_full") {
sources = partial_crypto_excludes
public_deps = [ ":crypto" ]
configs += [ ":internal_config" ]
if (is_starboard) {
configs -= [ "//starboard/build/config:size" ]
configs += [ "//starboard/build/config:speed" ]
}
}
target(final_executable_type, "crypto_tool") {
sources = [
"src/tool/args.cc",
"src/tool/ciphers.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/sign.cc",
"src/tool/speed.cc",
"src/tool/tool.cc",
]
include_dirs = [ "src/include" ]
defines = [ "OPENSSL_NO_SOCK" ]
deps = [
":crypto",
"//starboard",
]
}