# Copyright 2019 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/components.gni")

executable("bin") {
  output_name = "inspect_validator_cpp_puppet"

  sources = [ "validator_puppet.cc" ]

  deps = [
    "//sdk/lib/fidl",
    "//sdk/lib/fit-promise",
    "//sdk/lib/inspect/component/cpp",
    "//sdk/lib/stdcompat",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/vfs/cpp",
    "//src/diagnostics/validator/inspect/fidl:validate_hlcpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

  # TODO(https://fxbug.dev/42136089): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

fuchsia_component("inspect-validator-cpp-puppet") {
  # `component_name` must be "puppet" so `children: url: "#meta/puppet.cm"` in
  # //src/diagnostics/validator/inspect/meta/validator.shard.cml can find it.
  component_name = "puppet"
  testonly = true
  manifest = "meta/inspect-validator-cpp-puppet.cml"
  deps = [ ":bin" ]
}

fuchsia_package("cpp") {
  testonly = true
  package_name = "cpp_puppet"
  deps = [ ":inspect-validator-cpp-puppet" ]
}
