# Copyright 2019 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/zircon/zx_library.gni")

template("trace_library") {
  zx_library(target_name) {
    forward_variables_from(invoker, "*")

    sdk_headers = [
      "lib/trace/internal/event_args.h",
      "lib/trace/internal/event_common.h",
      "lib/trace/internal/event_internal.h",
      "lib/trace/internal/pairs_internal.h",
      "lib/trace/internal/string_traits.h",
      "lib/trace/event.h",
      "lib/trace/event_args.h",
      "lib/trace/observer.h",
    ]

    # Header dependencies, not including the trace engine.
    # <trace/internal/event_internal.h> has #include <trace-engine/instrumentation.h>.
    public_deps += [
      # <trace/observer.h> has #include <trace-engine/instrumentation.h> (already
      # covered, <lib/async/cpp/wait.h>, <fit/function.h>, and <lib/zx/event.h>.
      ":trace-headersonly",
      "//sdk/lib/fit",
      "//zircon/system/ulib/async:async-cpp",
      "//zircon/system/ulib/zx",
    ]

    sources = [
      "event.cc",
      "observer.cc",
    ]

    # Source dependencies, not including the trace engine.
    deps += [
      "//sdk/lib/fit",
      "//zircon/system/ulib/async",
      "//zircon/system/ulib/async:async-cpp",
      "//zircon/system/ulib/zx",
    ]
  }
}

set_defaults("trace_library") {
  configs = default_common_binary_configs
}

config("trace_include") {
  include_dirs = [ "include" ]
}

sdk_source_set("trace-headersonly") {
  category = "partner"
  sdk_name = "trace-headersonly"
  stable = true

  public = [
    "include/lib/trace/event.h",
    "include/lib/trace/event_args.h",
    "include/lib/trace/internal/event_args.h",
    "include/lib/trace/internal/event_common.h",
    "include/lib/trace/internal/event_internal.h",
    "include/lib/trace/internal/pairs_internal.h",
    "include/lib/trace/internal/string_traits.h",
    "include/lib/trace/observer.h",
  ]

  sdk_headers_for_internal_use = [
    "include/lib/trace/internal/event_internal.h",
    "include/lib/trace/internal/pairs_internal.h",
    "include/lib/trace/internal/event_args.h",
    "include/lib/trace/internal/event_common.h",
    "include/lib/trace/internal/string_traits.h",
  ]

  public_deps = [
    "//sdk/lib/fit",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/trace-engine:trace-engine-headersonly",
    "//zircon/system/ulib/zx",
  ]
  public_configs = [ ":trace_include" ]
}

# The default version for the normal case, and for the SDK.
# For the SDK this needs to be published as "source": We're implemented in
# C++ and C++ SDK libraries can't be published as "static".
# TODO(https://fxbug.dev/42097099): libtrace-engine.so is getting linked into places it shouldn't.
trace_library("trace") {
  sdk_publishable = "partner"
  sdk = "source"
  stable = true
  public_deps = [ "//zircon/system/ulib/trace-engine" ]
  deps = [ "//zircon/system/ulib/trace-engine" ]
  configs += [
    # TODO(https://fxbug.dev/42136089): delete the below and fix compiler warnings
    "//build/config:Wno-conversion",
  ]
}

# A special version for programs and shared libraries that can't use
# libtrace-engine.so.
# N.B. Please verify that you really need this before using it.
# Generally you DON'T want to use this.
trace_library("trace-with-static-engine") {
  sdk = "static"
  public_deps = [ "//zircon/system/ulib/trace-engine:trace-engine-static" ]
  deps = [ "//zircon/system/ulib/trace-engine:trace-engine-static" ]

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