# 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") {
  output_name = "server_suite_under_test_cpp"
  sources = [ "main.cc" ]
  deps = [
    "//sdk/lib/sys/component/llcpp",
    "//src/tests/fidl/server_suite/fidl:fidl.serversuite_cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fuchsia_component("cpp_server") {
  component_name = "server"
  manifest = "meta/server.cml"
  deps = [ ":bin" ]
}

fuchsia_component("harness_cpp") {
  testonly = true
  component_name = "harness"
  manifest = "meta/harness_cpp.cml"
  deps = [ "//src/tests/fidl/server_suite/harness:bin" ]
}

fuchsia_test_package("fidl-server-suite-cpp-test") {
  test_components = [ ":harness_cpp" ]
  deps = [ ":cpp_server" ]
}

group("cpp") {
  testonly = true
  deps = [ ":fidl-server-suite-cpp-test" ]
}
