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

import("//build/test.gni")
import("//build/testing/bootfs_test.gni")

source_set("src") {
  sources = [
    "acpidump.cc",
    "acpidump.h",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.hardware.acpi:fuchsia.hardware.acpi_llcpp",
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/cmdline",
    "//zircon/system/ulib/fdio-caller",
  ]
  visibility = [ ":*" ]
}

executable("acpidump") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "acpidump"
  output_dir = "$root_out_dir/zircon-migrated"
  sources = [ "main.cc" ]
  deps = [ ":src" ]
}

test("test") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "acpidump-test"
  sources = [ "acpidump_test.cc" ]
  include_dirs = [ "." ]
  deps = [
    ":src",
    "//zircon/public/lib/zxtest",
  ]
}

bootfs_test("acpidump-test-bootfs-test") {
  name = "acpidump-test"
  deps = [ ":test" ]
}
