# Copyright 2022 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") {
  testonly = true
  output_name = "structured_config_cpp_elf_receiver"
  sources = [ "src/main.cc" ]
  deps = [
    ":config_lib",
    "//sdk/lib/sys/cpp:cpp",
    "//sdk/lib/sys/inspect/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/sys/component_manager/tests/structured_config/fidl:test.structuredconfig.receiver_hlcpp",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fuchsia_component_manifest("manifest") {
  testonly = true
  component_name = "cpp_elf_receiver"
  manifest = "meta/receiver.cml"
  restricted_features = [ "structured_config" ]
}

fuchsia_structured_config_cpp_elf_lib("config_lib") {
  testonly = true
  namespace = "receiver_config"
  cm_label = ":manifest"
}

fuchsia_component("component") {
  testonly = true
  cm_label = ":manifest"
  deps = [ ":bin" ]
}

fuchsia_structured_config_values("values") {
  testonly = true
  cm_label = ":manifest"
  values_source = "../config/values.json5"
}

group("cpp_elf") {
  testonly = true
  deps = [
    ":component",
    ":values",
  ]
}
