# Copyright 2017 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/package.gni")
import("//third_party/cobalt_config/metrics_registry.gni")
import("//third_party/protobuf/proto_library.gni")

metrics_registry("generate_legacy_testapp_metrics") {
  project_id = 2
  output_name = "legacy_cobalt_metrics"
}

metrics_registry("generate_testapp_metrics") {
  project_name = "test_app2"
  output_name = "cobalt_metrics"

  namespace = "cobalt.testapp.metrics"
  generate_cc = true
}

executable("cobalt_testapp") {
  output_name = "cobalt_testapp"
  sources = [
    "cobalt_testapp.cc",
    "cobalt_testapp.h",
    "cobalt_testapp_logger.cc",
    "cobalt_testapp_logger.h",
    "cobalt_testapp_main.cc",
    "tests.cc",
    "tests.h",
  ]

  deps = [
    ":generate_testapp_metrics_cc",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/svc/cpp",
    "//third_party/cobalt/config:id",
    "//zircon/public/fidl/fuchsia-cobalt",
    "//zircon/public/lib/async-loop-cpp",
  ]
}
