# 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("//src/sys/build/components.gni")

source_set("launcher_sources") {
  sources = [
    "launcher.cc",
    "launcher.h",
  ]
  deps = [
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

executable("bin") {
  testonly = true
  output_name = "fidl_echo_launcher"
  sources = [ "launcher_main.cc" ]
  deps = [ ":launcher_sources" ]
}

fuchsia_component("launcher") {
  testonly = true
  manifest = "meta/launcher.cmx"
  deps = [ ":bin" ]
}

fuchsia_package("echo-launcher") {
  testonly = true
  deps = [ ":launcher" ]
}

executable("examples_integration_test") {
  testonly = true
  sources = [ "main.cc" ]
  deps = [
    ":launcher_sources",
    "//sdk/lib/sys/cpp",
    "//third_party/googletest:gtest_main",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

# TODO: the dependencies aren't quite right here. this test requires each
# echo client/server to be available, which is currently done by adding them
# deps to the test group, not the test itself.
fuchsia_unittest_package("examples-integration-test") {
  manifest = "meta/tests.cmx"
  deps = [ ":examples_integration_test" ]
}

group("test") {
  testonly = true
  deps = [
    ":examples-integration-test",

    # Ensure FIDL snippets used in documentation builds
    "//examples/fidl/dart:all",
    "//examples/fidl/fuchsia.examples.docs",
    "//examples/fidl/fuchsia.examples.docs:builtin",
    "//examples/fidl/go:all",
    "//examples/fidl/hlcpp:all",
    "//examples/fidl/llcpp:all",
    "//examples/fidl/rust:all",
  ]
}

group("all") {
  testonly = true
  deps = [ ":echo-launcher" ]
}
