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

# TODO(fxbug.dev/13096): Add ddk support.

# This special config allows "common" to locate the library's headers.
# Not relying on the "headers" target generated by the library below
# allows this file to be reused in the Fuchsia GN build.
config("library_headers_config") {
  visibility = [ ":*" ]

  include_dirs = [
    "include",
    "../trace/include",
    "../trace-engine/include",
  ]
}

# The default version for the normal case.
zx_library("trace-vthread") {
  sdk = "static"
  sdk_headers = [
    "trace-vthread/internal/event_vthread.h",
    "trace-vthread/event_vthread.h",
  ]
  sources = [ "event_vthread.cc" ]
  public_deps = [
    # <trace-vthread/internal/event_vthread.h> has #include <lib/trace/event_args.h>.
    "//zircon/system/ulib/trace",

    # <trace-vthread/internal/event_vthread.h> has #include <trace-engine/instrumentation.h>.
    "//zircon/system/ulib/trace-engine",
  ]
  deps = [ "//zircon/system/ulib/trace" ]
  public = [ "include/trace-vthread/event_vthread.h" ]
  public_configs = [ ":library_headers_config" ]
}

# 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.
zx_library("trace-vthread-with-static-engine") {
  sdk = "static"
  sdk_headers = [
    "trace-vthread/internal/event_vthread.h",
    "trace-vthread/event_vthread.h",
  ]
  sources = [ "event_vthread.cc" ]
  public_deps = [
    # <trace-vthread/internal/event_vthread.h> has #include <lib/trace/event_args.h>.
    "//zircon/system/ulib/trace:trace-with-static-engine",

    # <trace-vthread/internal/event_vthread.h> has #include <trace-engine/instrumentation.h>.
    "//zircon/system/ulib/trace-engine:trace-engine-static",
  ]
  deps = [ "//zircon/system/ulib/trace:trace-with-static-engine" ]
  public = [ "include/trace-vthread/event_vthread.h" ]
  public_configs = [ ":library_headers_config" ]
}

group("tests") {
  testonly = true
  deps = [ "test:tests" ]
}
