| # 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/unification/zx_library.gni") |
| |
| # Four copies of libtrace-provider are built: |
| # (1) trace-provider: Main version that is used by non-drivers. |
| # This copy uses libtrace-engine.so. |
| # (2) trace-provider-so: Same as trace-provider, but exported to SDK |
| # as a shared library. This copy uses libtrace-engine.so. |
| # (3) trace-provider-with-static-engine: For cases where a statically linked |
| # trace-engine is needed. This is for very special cases. Please DO NOT |
| # use this unless you KNOW you need to. Generally you do not. If in doubt, |
| # ask. |
| # (4) trace-provider-driver: This copy is for use by libdriver.so for the DDK. |
| |
| template("trace_provider_library") { |
| zx_library(target_name) { |
| sdk = "source" |
| sdk_headers = [ |
| "lib/trace-provider/fdio_connect.h", |
| "lib/trace-provider/handler.h", |
| "lib/trace-provider/provider.h", |
| "lib/trace-provider/fdio_connect.h", |
| "lib/trace-provider/handler.h", |
| "lib/trace-provider/provider.h", |
| ] |
| forward_variables_from(invoker, "*") |
| |
| if (defined(extra_configs)) { |
| configs += extra_configs |
| } |
| |
| # Not including fdio_connect.h. |
| if (!defined(sdk_headers)) { |
| sdk_headers = [] |
| } |
| sdk_headers += [ |
| "lib/trace-provider/handler.h", |
| "lib/trace-provider/provider.h", |
| ] |
| |
| # Header dependencies, not including the trace engine. |
| # <trace-provider/handler.h> has #include <trace-engine/handler.h>. |
| if (!defined(public_deps)) { |
| public_deps = [] |
| } |
| public_deps += [ |
| # <trace-provider/provider.h> has #include <lib/async/dispatcher.h>. |
| "//zircon/public/lib/async", |
| |
| # <trace-provider/provider.h> has #include <lib/zx/channel.h>. |
| "//zircon/public/lib/zx", |
| ] |
| |
| if (!defined(sources)) { |
| sources = [] |
| } |
| sources += [ |
| "export.h", |
| "fnv1hash.h", |
| "handler.cc", |
| "provider_impl.cc", |
| "provider_impl.h", |
| "session.cc", |
| "session.h", |
| "utils.cc", |
| "utils.h", |
| ] |
| |
| # Source dependencies, not including the trace engine. |
| if (!defined(deps)) { |
| deps = [] |
| } |
| deps += [ |
| "//sdk/fidl/fuchsia.tracing.provider:fuchsia.tracing.provider_c", |
| "//zircon/public/lib/async-cpp", |
| "//zircon/public/lib/fidl", |
| "//zircon/public/lib/zx", |
| "//zircon/system/ulib/fidl:fidl_base", |
| ] |
| } |
| } |
| |
| trace_provider_fdio_connect_sources = [ |
| "export.h", |
| "fdio_connect.cc", |
| ] |
| |
| trace_provider_fdio_sources = [ |
| "fdio_connect.cc", |
| "provider_with_fdio.cc", |
| ] |
| |
| trace_provider_fdio_connect_source_deps = [ |
| "//sdk/lib/fdio", |
| "//zircon/public/lib/zx", |
| ] |
| |
| trace_provider_fdio_connect_headers = [ "lib/trace-provider/fdio_connect.h" ] |
| |
| # The default version for the normal case. |
| trace_provider_library("trace-provider") { |
| sdk = "source" |
| sdk_headers = trace_provider_fdio_connect_headers |
| public_deps = [ "//zircon/system/ulib/trace-engine" ] |
| sources = trace_provider_fdio_sources |
| deps = trace_provider_fdio_connect_source_deps |
| deps += [ "//zircon/system/ulib/trace-engine" ] |
| } |
| |
| # Shared version for the SDK. |
| # The issue is that the SDK doesn't (yet) support generating C FIDL bindings at |
| # build time, which we need if we export as "source", and since we're |
| # implemented in C++ we can't export as "static". |
| # TODO(fxbug.dev/23081): The name here is temporary, pending being able to build |
| # the library as "libtrace-provider.so". |
| trace_provider_library("trace-provider-so") { |
| sdk_publishable = true |
| sdk = "shared" |
| shared = true |
| static = false |
| defines = [ "SHARED_LIBRARY" ] |
| sdk_headers = trace_provider_fdio_connect_headers |
| public_deps = [ "//zircon/system/ulib/trace-engine" ] |
| sources = trace_provider_fdio_sources |
| deps = trace_provider_fdio_connect_source_deps |
| deps += [ "//zircon/system/ulib/trace-engine" ] |
| runtime_deps = [ |
| "//sdk/lib/fdio:fdio_sdk", |
| "//zircon/system/ulib/async-default:async-default_sdk", |
| ] |
| } |
| |
| # Same as trace-provider. |
| # TODO(fxbug.dev/23060): Since this is now an alias of trace-provider, delete. |
| trace_provider_library("trace-provider-with-fdio") { |
| sdk = "source" |
| sdk_headers = trace_provider_fdio_connect_headers |
| public_deps = [ "//zircon/system/ulib/trace-engine" ] |
| sources = trace_provider_fdio_sources |
| deps = trace_provider_fdio_connect_source_deps |
| deps += [ "//zircon/system/ulib/trace-engine" ] |
| } |
| |
| # A special version for programs and shared libraries that can't use |
| # libtrace-engine.so, e.g., because it is unavailable. |
| # N.B. Please verify that you really need this before using it. |
| # Generally you DO NOT want to use this. |
| trace_provider_library("trace-provider-with-static-engine") { |
| sdk = "static" |
| sdk_headers = trace_provider_fdio_connect_headers |
| public_deps = [ "//zircon/system/ulib/trace-engine:trace-engine-static" ] |
| sources = [] |
| deps = [] |
| deps += [ "//zircon/system/ulib/trace-engine:trace-engine-static" ] |
| |
| # This is used by magma client drivers, so it can't depend on fdio (or other shared libraries |
| # besides libc). |
| assert_no_deps = [ |
| "//sdk/lib/fdio", |
| "//zircon/system/ulib/async-default", |
| ] |
| } |
| |
| # Version for the DDK. |
| trace_provider_library("trace-provider-driver") { |
| public_deps = [ "//zircon/system/ulib/trace-engine:trace-engine-driver" ] |
| deps = [ "//zircon/system/ulib/trace-engine:trace-engine-driver" ] |
| } |
| |
| # For apps that use the trace engine, but not via a trace provider. |
| # These are usually test and benchmarking apps. |
| # Normal apps are not expected to use this. |
| zx_library("trace-handler") { |
| sdk = "static" |
| sdk_headers = [ "lib/trace-provider/handler.h" ] |
| public_deps = [ |
| # It is up to the client to choose which engine (shared, static), |
| # just reference the headers here. |
| "//zircon/system/ulib/trace-engine:trace-engine-headers-for-handler", |
| ] |
| sources = [ "handler.cc" ] |
| } |
| |
| # A helper library for clients that want to use fdio to connect to |
| # trace manager, outside of the regular libraries. |
| # This is for special cases where the client is choosing its engine separately. |
| zx_library("trace-provider-fdio-connect") { |
| sdk = "static" |
| sdk_headers = trace_provider_fdio_connect_headers |
| sources = trace_provider_fdio_connect_sources |
| deps = trace_provider_fdio_connect_source_deps |
| } |
| |
| group("tests") { |
| testonly = true |
| deps = [ "test:tests" ] |
| } |