blob: bd2cd01a775f9abf15d4c597f71e68e2b19826c0 [file] [log] [blame]
# Copyright 2020 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.
# C and Assembly parts of ring 0.16.9
#
# More advanced usages of might require more sophisticated
# build rules
ring_crate = "../../vendor/ring"
config("ring-config") {
cflags = [ "-fPIC" ]
}
static_library("ring-core") {
complete_static_lib = true
configs += [ ":ring-config" ]
deps = [
# c libs
":ring-crypto",
":ring-curve25519",
":ring-ecp-nistz",
":ring-ecp-nistz256",
":ring-gcm",
":ring-generic",
":ring-gfp-p256",
":ring-gfp-p384",
":ring-limbs",
":ring-mem",
":ring-montgomery",
":ring-montgomery-inv",
# asm
":ring-aes",
":ring-chacha",
":ring-ghash",
":ring-mont-elf",
":ring-poly1305",
":ring-sha256",
":ring-sha512",
":ring-vpaes",
]
if (current_cpu == "x64") {
deps += [
# asm
":ring-aesni",
":ring-aesni-gcm",
":ring-cpu-intel",
":ring-mont5-elf",
":ring-p256",
]
}
}
static_library("ring-aes") {
configs += [ ":ring-config" ]
include_dirs = [ "$ring_crate/include" ]
visibility = [ ":*" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/aes-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/aes-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/aesv8-armx-linux64.S" ]
}
}
static_library("ring-aesni") {
configs += [ ":ring-config" ]
visibility = [ ":*" ]
if (is_mac) {
sources = [ "$ring_crate/pregenerated/aesni-x86_64-macosx.S" ]
} else {
sources = [ "$ring_crate/pregenerated/aesni-x86_64-elf.S" ]
}
}
static_library("ring-vpaes") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/vpaes-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/vpaes-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/vpaes-armv8-linux64.S" ]
}
}
static_library("ring-mont-elf") {
configs += [ ":ring-config" ]
include_dirs = [ "$ring_crate/include" ]
visibility = [ ":*" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/x86_64-mont-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/x86_64-mont-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/armv8-mont-linux64.S" ]
}
}
static_library("ring-mont5-elf") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
if (is_mac) {
sources = [ "$ring_crate/pregenerated/x86_64-mont5-macosx.S" ]
} else {
sources = [ "$ring_crate/pregenerated/x86_64-mont5-elf.S" ]
}
}
static_library("ring-chacha") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/chacha-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/chacha-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/chacha-armv8-linux64.S" ]
}
}
static_library("ring-p256") {
visibility = [ ":*" ]
if (is_mac) {
sources = [ "$ring_crate/pregenerated/p256-x86_64-asm-macosx.S" ]
} else {
sources = [ "$ring_crate/pregenerated/p256-x86_64-asm-elf.S" ]
}
configs += [ ":ring-config" ]
}
static_library("ring-aesni-gcm") {
visibility = [ ":*" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/aesni-gcm-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/aesni-gcm-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/aesv8-armx-linux64.S" ]
}
}
static_library("ring-ghash") {
configs += [ ":ring-config" ]
include_dirs = [ "$ring_crate/include" ]
visibility = [ ":*" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/ghash-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/ghash-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [
"$ring_crate/pregenerated/ghash-neon-armv8-linux64.S",
"$ring_crate/pregenerated/ghashv8-armx-linux64.S",
]
}
}
static_library("ring-poly1305") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/poly1305-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/poly1305-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/poly1305-armv8-linux64.S" ]
}
}
static_library("ring-sha512") {
configs += [ ":ring-config" ]
include_dirs = [ "$ring_crate/include" ]
visibility = [ ":*" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/sha512-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/sha512-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/sha512-armv8-linux64.S" ]
}
}
static_library("ring-sha256") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
if (current_cpu == "x64" && !is_mac) {
sources = [ "$ring_crate/pregenerated/sha256-x86_64-elf.S" ]
} else if (current_cpu == "x64" && is_mac) {
sources = [ "$ring_crate/pregenerated/sha256-x86_64-macosx.S" ]
} else if (current_cpu == "arm64") {
sources = [ "$ring_crate/pregenerated/sha256-armv8-linux64.S" ]
}
}
static_library("ring-generic") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/bn/generic.c" ]
}
static_library("ring-montgomery") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/bn/montgomery.c" ]
}
static_library("ring-montgomery-inv") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/bn/montgomery_inv.c" ]
}
static_library("ring-crypto") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/crypto.c" ]
}
static_library("ring-ecp-nistz") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/ec/ecp_nistz.c" ]
}
static_library("ring-ecp-nistz256") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/ec/ecp_nistz256.c" ]
if (current_cpu == "arm64") {
sources += [ "$ring_crate/pregenerated/ecp_nistz256-armv8-linux64.S" ]
}
}
static_library("ring-gfp-p256") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/ec/gfp_p256.c" ]
}
static_library("ring-gfp-p384") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/ec/gfp_p384.c" ]
}
static_library("ring-limbs") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/limbs/limbs.c" ]
}
static_library("ring-mem") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/mem.c" ]
}
static_library("ring-gcm") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/fipsmodule/modes/gcm.c" ]
}
static_library("ring-curve25519") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/third_party/fiat/curve25519.c" ]
}
static_library("ring-cpu-intel") {
visibility = [ ":*" ]
include_dirs = [ "$ring_crate/include" ]
configs += [ ":ring-config" ]
sources = [ "$ring_crate/crypto/cpu-intel.c" ]
}