# 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/components.gni")

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

  sources = [ "main.cc" ]

  deps = [ ":trace_app" ]
}

source_set("trace_app") {
  sources = [
    "app.cc",
    "app.h",
    "cmd_utils.cc",
    "cmd_utils.h",
    "command.cc",
    "command.h",
    "commands/list_categories.cc",
    "commands/list_categories.h",
    "commands/record.cc",
    "commands/record.h",
    "commands/time.cc",
    "commands/time.h",
    "tracer.cc",
    "tracer.h",
    "utils.cc",
    "utils.h",
  ]

  public_deps = [
    "//garnet/lib/trace_converters:chromium",
    "//sdk/fidl/fuchsia.tracing.controller",
    "//sdk/lib/fdio",
    "//sdk/lib/fit",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//third_party/zlib:zfstream",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace-reader",
  ]

  deps = [ ":options" ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

source_set("options") {
  sources = [
    "options.cc",
    "options.h",
  ]
}

fuchsia_shell_package("trace") {
  manifest = "meta/trace.cmx"
  deps = [
    ":bin",

    # If your build includes the target trace tool, your $host_tools_dir
    # contains the utilities to work with traces copied from the target.
    "//garnet/bin/traceutil",
  ]
}
