blob: 28146b241464bd3d9d9aa492f3de4ad79e3d301f [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/host.gni")
# NOTE(raggi): if you come to add significantly more binaries from
# vboot_reference, it may be time to take the sources under "library_sources"
# and turn them into actual library rules. That wasn't necessary or woth it at
# the time of writing.
vboot_dir = "//third_party/vboot_reference"
library_sources = [
"$vboot_dir/firmware/2lib/2api.c",
"$vboot_dir/firmware/2lib/2common.c",
"$vboot_dir/firmware/2lib/2crc8.c",
"$vboot_dir/firmware/2lib/2hmac.c",
"$vboot_dir/firmware/2lib/2misc.c",
"$vboot_dir/firmware/2lib/2nvstorage.c",
"$vboot_dir/firmware/2lib/2rsa.c",
"$vboot_dir/firmware/2lib/2secdata.c",
"$vboot_dir/firmware/2lib/2secdatak.c",
"$vboot_dir/firmware/2lib/2sha1.c",
"$vboot_dir/firmware/2lib/2sha256.c",
"$vboot_dir/firmware/2lib/2sha512.c",
"$vboot_dir/firmware/2lib/2sha_utility.c",
"$vboot_dir/firmware/2lib/2stub.c",
"$vboot_dir/firmware/2lib/2tpm_bootmode.c",
"$vboot_dir/firmware/bdb/bdb.c",
"$vboot_dir/firmware/bdb/ecdsa.c",
"$vboot_dir/firmware/bdb/host.c",
"$vboot_dir/firmware/bdb/misc.c",
"$vboot_dir/firmware/bdb/nvm.c",
"$vboot_dir/firmware/bdb/rsa.c",
"$vboot_dir/firmware/bdb/secrets.c",
"$vboot_dir/firmware/bdb/sha.c",
"$vboot_dir/firmware/bdb/stub.c",
"$vboot_dir/firmware/lib/cgptlib/cgptlib.c",
"$vboot_dir/firmware/lib/cgptlib/cgptlib_internal.c",
"$vboot_dir/firmware/lib/cgptlib/crc32.c",
"$vboot_dir/firmware/lib/ec_sync.c",
"$vboot_dir/firmware/lib/ec_sync_all.c",
"$vboot_dir/firmware/lib/gpt_misc.c",
"$vboot_dir/firmware/lib/region-fw.c",
"$vboot_dir/firmware/lib/region-init.c",
"$vboot_dir/firmware/lib/region-kernel.c",
"$vboot_dir/firmware/lib/rollback_index.c",
"$vboot_dir/firmware/lib/tpm_lite/tlcl.c",
"$vboot_dir/firmware/lib/utility_string.c",
"$vboot_dir/firmware/lib/vboot_api_kernel.c",
"$vboot_dir/firmware/lib/vboot_audio.c",
"$vboot_dir/firmware/lib/vboot_common.c",
"$vboot_dir/firmware/lib/vboot_common_init.c",
"$vboot_dir/firmware/lib/vboot_display.c",
"$vboot_dir/firmware/lib/vboot_kernel.c",
"$vboot_dir/firmware/lib/vboot_nvstorage.c",
"$vboot_dir/firmware/lib/vboot_ui.c",
"$vboot_dir/firmware/lib/vboot_ui_menu.c",
"$vboot_dir/firmware/lib20/api.c",
"$vboot_dir/firmware/lib20/api_kernel.c",
"$vboot_dir/firmware/lib20/common.c",
"$vboot_dir/firmware/lib20/kernel.c",
"$vboot_dir/firmware/lib20/misc.c",
"$vboot_dir/firmware/lib20/packed_key.c",
"$vboot_dir/firmware/lib21/api.c",
"$vboot_dir/firmware/lib21/common.c",
"$vboot_dir/firmware/lib21/misc.c",
"$vboot_dir/firmware/lib21/packed_key.c",
"$vboot_dir/firmware/stub/tpm_lite_stub.c",
"$vboot_dir/firmware/stub/vboot_api_stub.c",
"$vboot_dir/firmware/stub/vboot_api_stub_disk.c",
"$vboot_dir/firmware/stub/vboot_api_stub_init.c",
"$vboot_dir/firmware/stub/vboot_api_stub_region.c",
"$vboot_dir/firmware/stub/vboot_api_stub_stream.c",
"$vboot_dir/host/lib/extract_vmlinuz.c",
"$vboot_dir/host/lib/file_keys.c",
"$vboot_dir/host/lib/fmap.c",
"$vboot_dir/host/lib/host_common.c",
"$vboot_dir/host/lib/host_key.c",
"$vboot_dir/host/lib/host_key2.c",
"$vboot_dir/host/lib/host_keyblock.c",
"$vboot_dir/host/lib/host_misc.c",
"$vboot_dir/host/lib/host_signature.c",
"$vboot_dir/host/lib/host_signature2.c",
"$vboot_dir/host/lib/signature_digest.c",
"$vboot_dir/host/lib/util_misc.c",
"$vboot_dir/host/lib21/host_fw_preamble.c",
"$vboot_dir/host/lib21/host_key.c",
"$vboot_dir/host/lib21/host_keyblock.c",
"$vboot_dir/host/lib21/host_misc.c",
"$vboot_dir/host/lib21/host_signature.c",
]
if (is_linux) {
library_sources += [ "$vboot_dir/host/lib/crossystem.c" ]
if (target_cpu == "x64") {
library_sources += [ "$vboot_dir/host/arch/x86_64/lib/crossystem_arch.c" ]
} else if (target_cpu == "arm64") {
library_sources += [ "$vboot_dir/host/arch/arm/lib/crossystem_arch.c" ]
} else {
assert(false, "Unsupported CPU")
}
}
executable("cgpt") {
sources = library_sources
# mininmal uuid generator
sources += [ "uuid/uuid.cc" ]
# binary sources
sources += [
"$vboot_dir/cgpt/cgpt.c",
"$vboot_dir/cgpt/cgpt_add.c",
"$vboot_dir/cgpt/cgpt_boot.c",
"$vboot_dir/cgpt/cgpt_common.c",
"$vboot_dir/cgpt/cgpt_create.c",
"$vboot_dir/cgpt/cgpt_legacy.c",
"$vboot_dir/cgpt/cgpt_prioritize.c",
"$vboot_dir/cgpt/cgpt_repair.c",
"$vboot_dir/cgpt/cgpt_show.c",
"$vboot_dir/cgpt/cmd_add.c",
"$vboot_dir/cgpt/cmd_boot.c",
"$vboot_dir/cgpt/cmd_create.c",
"$vboot_dir/cgpt/cmd_legacy.c",
"$vboot_dir/cgpt/cmd_prioritize.c",
"$vboot_dir/cgpt/cmd_repair.c",
"$vboot_dir/cgpt/cmd_show.c",
]
if (!is_mac) {
sources += [
"$vboot_dir/cgpt/cgpt_find.c",
"$vboot_dir/cgpt/cgpt_nor.c",
"$vboot_dir/cgpt/cmd_find.c",
]
}
deps = [ "//third_party/boringssl:crypto" ]
configs += [ ":internal_config" ]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
# The upstream makefile actually generates this source, but for simplicities
# sake, we just have a pre-generated version.
copy("futility_cmds.c") {
sources = [ "futility_cmds.c" ]
outputs = [ "$target_gen_dir/futility_cmds.c" ]
}
executable("futility") {
sources = library_sources
# binary sources
sources += [
"$vboot_dir/futility/bdb_helper.c",
"$vboot_dir/futility/cmd_bdb.c",
"$vboot_dir/futility/cmd_create.c",
"$vboot_dir/futility/cmd_dump_fmap.c",
"$vboot_dir/futility/cmd_gbb_utility.c",
"$vboot_dir/futility/cmd_load_fmap.c",
"$vboot_dir/futility/cmd_pcr.c",
"$vboot_dir/futility/cmd_show.c",
"$vboot_dir/futility/cmd_sign.c",
"$vboot_dir/futility/cmd_validate_rec_mrc.c",
"$vboot_dir/futility/cmd_vbutil_firmware.c",
"$vboot_dir/futility/cmd_vbutil_kernel.c",
"$vboot_dir/futility/cmd_vbutil_key.c",
"$vboot_dir/futility/cmd_vbutil_keyblock.c",
"$vboot_dir/futility/file_type.c",
"$vboot_dir/futility/file_type_bios.c",
"$vboot_dir/futility/file_type_rwsig.c",
"$vboot_dir/futility/file_type_usbpd1.c",
"$vboot_dir/futility/futility.c",
"$vboot_dir/futility/misc.c",
"$vboot_dir/futility/ryu_root_header.c",
"$vboot_dir/futility/vb1_helper.c",
"$vboot_dir/futility/vb2_helper.c",
]
deps = [ ":futility_cmds.c" ]
sources += get_target_outputs(":futility_cmds.c")
if (!is_mac) {
sources += [
"$vboot_dir/futility/cmd_dump_kernel_config.c",
"$vboot_dir/futility/dump_kernel_config_lib.c",
]
}
deps += [ "//third_party/boringssl:crypto" ]
configs += [ ":internal_config" ]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
config("internal_config") {
visibility = [ "./*" ]
include_dirs = [
"$vboot_dir/firmware/2lib/include",
"$vboot_dir/firmware/bdb",
"$vboot_dir/firmware/include",
"$vboot_dir/firmware/lib/cgptlib/include",
"$vboot_dir/firmware/lib/cryptolib/include",
"$vboot_dir/firmware/lib/include",
"$vboot_dir/firmware/lib/tpm_lite/include",
"$vboot_dir/firmware/lib20/include",
"$vboot_dir/firmware/lib21/include",
"$vboot_dir/host/include",
"$vboot_dir/host/lib/include",
"$vboot_dir/host/lib21/include",
# For the uuid/uuid.h stub.
".",
]
cflags = [
"-Wno-address-of-packed-member",
"-Wno-enum-conversion",
"-Wno-format",
"-Wno-ignored-qualifiers",
"-Wno-missing-field-initializers",
"-Wno-sign-compare",
"-Wno-unused-function",
"-Wno-implicit-fallthrough",
"-Wno-incompatible-pointer-types-discards-qualifiers",
"-Wno-extra-semi",
"-Wno-strict-prototypes",
]
if (is_mac) {
defines = [
"HAVE_MACOS=1",
"NDEBUG",
]
}
if (is_linux) {
defines = [
"_GNU_SOURCE",
"NDEBUG",
]
libs = [ "pthread" ]
}
}
install_host_tools("cgpt_host") {
deps = [ ":cgpt" ]
outputs = [ "cgpt" ]
}
install_host_tools("futility_host") {
deps = [ ":futility" ]
outputs = [ "futility" ]
}
group("vboot_reference") {
deps = [
":cgpt_host",
":futility_host",
]
}