# 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",
    "util.cc",
    "util.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.tracing.controller",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//third_party/rapidjson",
    "//zircon/public/fidl/fuchsia-tracing-provider",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider-with-fdio",
    "//zircon/public/lib/trace-reader",
  ]

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

package("trace_manager") {
  deps = [
    ":bin"
  ]

  binary = "trace_manager"

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

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