# Copyright 2023 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.

# At the time of writing, we assume this GN will only be used from Fuchsia
# where the vboot_reference repo lives at //third_party/vboot_reference
# and build root is the Fuchsia repo.
import("//build/cpp/sdk_source_set.gni")
config("includes") {
  include_dirs = [
    ".",
    "include",
    "cgptlib/include",
  ]
}

sdk_source_set("headers") {
  sdk_name = "vboot_firmware_lib_headers"
  category = "experimental"
  sources = [
    "include/bmpblk_font.h",
    "include/ec_sync.h",
    "include/load_kernel_fw.h",
    "include/rollback_index.h",
    "include/sysincludes.h",
    "include/utility.h",
    "include/vboot_audio.h",
    "include/vboot_audio_private.h",
    "include/vboot_common.h",
    "include/vboot_display.h",
    "include/vboot_kernel.h",
  ]

  public_configs = [ ":includes" ]
}

sdk_source_set("gpt_misc") {
  sdk_name = "vboot_firmware_lib_gpt_misc"
  category = "experimental"
  include_base = "cgptlib/include"
  sources = [
    "cgptlib/cgptlib.c",
    "cgptlib/cgptlib_internal.c",
    "cgptlib/crc32.c",
    "cgptlib/include/cgptlib.h",
    "cgptlib/include/cgptlib_internal.h",
    "cgptlib/include/crc32.h",
    "gpt_misc.c",
  ]
  public_deps = [
    ":headers",
    "..:headers",
    "../2lib:headers",
  ]

  cflags_c = [
    # TODO(fxbug.dev/42084851): Remove -Wno-unknown-warning-option after the next Clang roll.
    "-Wno-unknown-warning-option",
    "-Wno-bitfield-conversion",
    "-Wno-implicit-int-conversion",
    "-Wno-sign-compare",
    "-Wno-implicit-fallthrough",
  ]
}
