# Copyright 2016 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")

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

  sources = [
    "app.cc",
    "app.h",
    "config.cc",
    "config.h",
    "main.cc",
    "trace_manager.cc",
    "trace_manager.h",
    "trace_provider_bundle.cc",
    "trace_provider_bundle.h",
    "trace_session.cc",
    "trace_session.h",
    "tracee.cc",
    "tracee.h",
  ]

  deps = [
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fxl",
    "//garnet/public/fidl/fuchsia.tracing",
    "//third_party/rapidjson",
    "//zircon/public/fidl/fuchsia-tracelink",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/trace-reader",
  ]

  public_deps = [
    "//zircon/public/lib/fit",
  ]
}

package("trace_manager") {
  deps = [
    ":bin",
    "//zircon/public/fidl/fuchsia-tracelink",
  ]

  binary = "trace_manager"

  meta = [
    {
      path = rebase_path("meta/trace_manager.cmx")
      dest = "trace_manager.cmx"
    },
  ]

  resources = [ {
        path = rebase_path("tracing.config")
        dest = "tracing.config"
      } ]
}
