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

source_set("lib") {
  sources = [
    "app.cc",
    "app.h",
    "config.cc",
    "config.h",
    "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 = [
    "//src/lib/fsl",
    "//third_party/rapidjson",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.tracing.controller",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-tracing-provider",
    "//zircon/system/ulib/trace-reader",
  ]
}

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

  sources = [ "main.cc" ]

  deps = [
    ":lib",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
  ]
}

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"
    },
  ]
}
