# 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/ec_sync.c",
  "$vboot_dir/firmware/lib/ec_sync_all.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",
    "//third_party/vboot_reference/firmware/lib:gpt_misc",
    "//third_party/vboot_reference/firmware/lib:headers",
  ]
  configs += [ ":internal_config" ]

  # TODO(https://fxbug.dev/42136089): 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",
    "//third_party/vboot_reference/firmware:headers",
    "//third_party/vboot_reference/firmware/2lib:headers",
    "//third_party/vboot_reference/firmware/lib:gpt_misc",
    "//third_party/vboot_reference/firmware/lib:headers",
  ]
  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(https://fxbug.dev/42136089): 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",
  ]
}
