1*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project 2*6dbdd20aSAndroid Build Coastguard Worker# 3*6dbdd20aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*6dbdd20aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*6dbdd20aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*6dbdd20aSAndroid Build Coastguard Worker# 7*6dbdd20aSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*6dbdd20aSAndroid Build Coastguard Worker# 9*6dbdd20aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*6dbdd20aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*6dbdd20aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6dbdd20aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*6dbdd20aSAndroid Build Coastguard Worker# limitations under the License. 14*6dbdd20aSAndroid Build Coastguard Worker 15*6dbdd20aSAndroid Build Coastguard Workerimport("gn/perfetto.gni") 16*6dbdd20aSAndroid Build Coastguard Workerimport("gn/test.gni") 17*6dbdd20aSAndroid Build Coastguard Worker 18*6dbdd20aSAndroid Build Coastguard Worker# +----------------------------------------------------------------------------+ 19*6dbdd20aSAndroid Build Coastguard Worker# | "all" targets definition: defines targets reachable by the various configs | 20*6dbdd20aSAndroid Build Coastguard Worker# +----------------------------------------------------------------------------+ 21*6dbdd20aSAndroid Build Coastguard Worker# There is a subtletly here related with chromium and other GN embedders. 22*6dbdd20aSAndroid Build Coastguard Worker# When adding a dependency some_dir/:target_name, some_dir/BUILD.gn is 23*6dbdd20aSAndroid Build Coastguard Worker# "discovered". As a side effect any *other* target defined in some_dir/BUILD.gn 24*6dbdd20aSAndroid Build Coastguard Worker# (and its transitive dependencies) becomes implicitly part of the "default" 25*6dbdd20aSAndroid Build Coastguard Worker# target, the one invoked running ninja -C out/xxx without further args. 26*6dbdd20aSAndroid Build Coastguard Worker# Because of this, care must be taken to wrap dependencies to targets in other 27*6dbdd20aSAndroid Build Coastguard Worker# build files with if (enable_xxx) flags. Accidentally including a harmless 28*6dbdd20aSAndroid Build Coastguard Worker# target that happens to be defined in the same BUILD.gn that contains targets 29*6dbdd20aSAndroid Build Coastguard Worker# incompatible with the chromium build will cause build/roll failures. 30*6dbdd20aSAndroid Build Coastguard Worker 31*6dbdd20aSAndroid Build Coastguard Workerall_targets = [ "protos/perfetto/trace:perfetto_trace_protos" ] 32*6dbdd20aSAndroid Build Coastguard Worker 33*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_platform_services) { 34*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ 35*6dbdd20aSAndroid Build Coastguard Worker "src/perfetto_cmd:perfetto", 36*6dbdd20aSAndroid Build Coastguard Worker "src/perfetto_cmd:trigger_perfetto", 37*6dbdd20aSAndroid Build Coastguard Worker "src/traced/service:traced", 38*6dbdd20aSAndroid Build Coastguard Worker ] 39*6dbdd20aSAndroid Build Coastguard Worker if (enable_perfetto_traced_probes) { 40*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/traced/probes:traced_probes" ] 41*6dbdd20aSAndroid Build Coastguard Worker } 42*6dbdd20aSAndroid Build Coastguard Worker if (enable_perfetto_traced_relay) { 43*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/traced_relay:traced_relay" ] 44*6dbdd20aSAndroid Build Coastguard Worker } 45*6dbdd20aSAndroid Build Coastguard Worker} 46*6dbdd20aSAndroid Build Coastguard Worker 47*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_trace_processor && enable_perfetto_trace_processor_sqlite) { 48*6dbdd20aSAndroid Build Coastguard Worker if (enable_perfetto_grpc) { 49*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/bigtrace/orchestrator:orchestrator_main" ] 50*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/bigtrace/worker:worker_main" ] 51*6dbdd20aSAndroid Build Coastguard Worker } 52*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/trace_processor:trace_processor_shell" ] 53*6dbdd20aSAndroid Build Coastguard Worker} 54*6dbdd20aSAndroid Build Coastguard Worker 55*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_trace_processor) { 56*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/trace_redaction:trace_redactor" ] 57*6dbdd20aSAndroid Build Coastguard Worker} 58*6dbdd20aSAndroid Build Coastguard Worker 59*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_traceconv) { 60*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ 61*6dbdd20aSAndroid Build Coastguard Worker "src/traceconv", 62*6dbdd20aSAndroid Build Coastguard Worker "src/trace_config_utils", 63*6dbdd20aSAndroid Build Coastguard Worker ] 64*6dbdd20aSAndroid Build Coastguard Worker if (is_cross_compiling) { 65*6dbdd20aSAndroid Build Coastguard Worker # In many cross-compilation scenarios (typically Android) developers expect 66*6dbdd20aSAndroid Build Coastguard Worker # the host version of traceconv to be available somewhere in out/, so 67*6dbdd20aSAndroid Build Coastguard Worker # they can convert Android traces on their dev machine. Also 68*6dbdd20aSAndroid Build Coastguard Worker # tools/gen_android_bp explicitly depends on the host version for the 69*6dbdd20aSAndroid Build Coastguard Worker # cc_binary_host("traceconv") target in Android.bp. 70*6dbdd20aSAndroid Build Coastguard Worker # Note that when cross-compiling the host executable will be available in 71*6dbdd20aSAndroid Build Coastguard Worker # out/xxx/gcc_like_host/traceconv NOT just out/xxx/traceconv. 72*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ 73*6dbdd20aSAndroid Build Coastguard Worker "src/traceconv($host_toolchain)", 74*6dbdd20aSAndroid Build Coastguard Worker "src/trace_config_utils($host_toolchain)", 75*6dbdd20aSAndroid Build Coastguard Worker ] 76*6dbdd20aSAndroid Build Coastguard Worker } 77*6dbdd20aSAndroid Build Coastguard Worker} 78*6dbdd20aSAndroid Build Coastguard Worker 79*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_heapprofd) { 80*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/profiling/memory:heapprofd" ] 81*6dbdd20aSAndroid Build Coastguard Worker 82*6dbdd20aSAndroid Build Coastguard Worker if (is_linux && !is_android) { 83*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/profiling/memory:heapprofd_glibc_preload" ] 84*6dbdd20aSAndroid Build Coastguard Worker } 85*6dbdd20aSAndroid Build Coastguard Worker if (perfetto_build_with_android) { 86*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ 87*6dbdd20aSAndroid Build Coastguard Worker "src/profiling/memory:heapprofd_client", 88*6dbdd20aSAndroid Build Coastguard Worker "src/profiling/memory:heapprofd_client_api", 89*6dbdd20aSAndroid Build Coastguard Worker ] 90*6dbdd20aSAndroid Build Coastguard Worker } 91*6dbdd20aSAndroid Build Coastguard Worker} 92*6dbdd20aSAndroid Build Coastguard Worker 93*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_traced_perf) { 94*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/profiling/perf:traced_perf" ] 95*6dbdd20aSAndroid Build Coastguard Worker} 96*6dbdd20aSAndroid Build Coastguard Worker 97*6dbdd20aSAndroid Build Coastguard Workerif (perfetto_build_with_android) { 98*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/android_internal:libperfetto_android_internal" ] 99*6dbdd20aSAndroid Build Coastguard Worker} 100*6dbdd20aSAndroid Build Coastguard Worker 101*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_tools) { 102*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/tools" ] 103*6dbdd20aSAndroid Build Coastguard Worker 104*6dbdd20aSAndroid Build Coastguard Worker # Windows does not have an IPC implementation. 105*6dbdd20aSAndroid Build Coastguard Worker if (!is_win) { 106*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/websocket_bridge" ] 107*6dbdd20aSAndroid Build Coastguard Worker } 108*6dbdd20aSAndroid Build Coastguard Worker} 109*6dbdd20aSAndroid Build Coastguard Worker 110*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_unittests) { 111*6dbdd20aSAndroid Build Coastguard Worker import("gn/perfetto_unittests.gni") 112*6dbdd20aSAndroid Build Coastguard Worker test("perfetto_unittests") { 113*6dbdd20aSAndroid Build Coastguard Worker if (is_fuchsia) { 114*6dbdd20aSAndroid Build Coastguard Worker additional_manifest_fragments = 115*6dbdd20aSAndroid Build Coastguard Worker [ "//build/config/fuchsia/test/network.shard.test-cml" ] # nogncheck 116*6dbdd20aSAndroid Build Coastguard Worker } 117*6dbdd20aSAndroid Build Coastguard Worker deps = perfetto_unittests_targets 118*6dbdd20aSAndroid Build Coastguard Worker } 119*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ ":perfetto_unittests" ] 120*6dbdd20aSAndroid Build Coastguard Worker} 121*6dbdd20aSAndroid Build Coastguard Worker 122*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_integration_tests) { 123*6dbdd20aSAndroid Build Coastguard Worker import("gn/perfetto_integrationtests.gni") 124*6dbdd20aSAndroid Build Coastguard Worker test("perfetto_integrationtests") { 125*6dbdd20aSAndroid Build Coastguard Worker deps = [ 126*6dbdd20aSAndroid Build Coastguard Worker "gn:default_deps", 127*6dbdd20aSAndroid Build Coastguard Worker "test:integrationtest_main", 128*6dbdd20aSAndroid Build Coastguard Worker ] 129*6dbdd20aSAndroid Build Coastguard Worker deps += perfetto_integrationtests_targets 130*6dbdd20aSAndroid Build Coastguard Worker } 131*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ 132*6dbdd20aSAndroid Build Coastguard Worker ":perfetto_integrationtests", 133*6dbdd20aSAndroid Build Coastguard Worker "examples/sdk:sdk_example", 134*6dbdd20aSAndroid Build Coastguard Worker "test:client_api_example", 135*6dbdd20aSAndroid Build Coastguard Worker "test/stress_test", 136*6dbdd20aSAndroid Build Coastguard Worker ] 137*6dbdd20aSAndroid Build Coastguard Worker if (!is_win && !is_mac) { 138*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ 139*6dbdd20aSAndroid Build Coastguard Worker "examples/shared_lib:example_shlib_data_source", 140*6dbdd20aSAndroid Build Coastguard Worker "examples/shared_lib:example_shlib_track_event", 141*6dbdd20aSAndroid Build Coastguard Worker ] 142*6dbdd20aSAndroid Build Coastguard Worker } 143*6dbdd20aSAndroid Build Coastguard Worker} 144*6dbdd20aSAndroid Build Coastguard Worker 145*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_trace_processor_json) { 146*6dbdd20aSAndroid Build Coastguard Worker test("trace_processor_minimal_smoke_tests") { 147*6dbdd20aSAndroid Build Coastguard Worker testonly = true 148*6dbdd20aSAndroid Build Coastguard Worker deps = [ 149*6dbdd20aSAndroid Build Coastguard Worker "gn:default_deps", 150*6dbdd20aSAndroid Build Coastguard Worker "src/trace_processor:storage_minimal_smoke_tests", 151*6dbdd20aSAndroid Build Coastguard Worker ] 152*6dbdd20aSAndroid Build Coastguard Worker } 153*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ ":trace_processor_minimal_smoke_tests" ] 154*6dbdd20aSAndroid Build Coastguard Worker} 155*6dbdd20aSAndroid Build Coastguard Worker 156*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_benchmarks) { 157*6dbdd20aSAndroid Build Coastguard Worker import("gn/perfetto_benchmarks.gni") 158*6dbdd20aSAndroid Build Coastguard Worker executable("perfetto_benchmarks") { 159*6dbdd20aSAndroid Build Coastguard Worker testonly = true 160*6dbdd20aSAndroid Build Coastguard Worker deps = perfetto_benchmarks_targets 161*6dbdd20aSAndroid Build Coastguard Worker } 162*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ ":perfetto_benchmarks" ] 163*6dbdd20aSAndroid Build Coastguard Worker} 164*6dbdd20aSAndroid Build Coastguard Worker 165*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_fuzzers) { 166*6dbdd20aSAndroid Build Coastguard Worker import("gn/perfetto_fuzzers.gni") 167*6dbdd20aSAndroid Build Coastguard Worker group("fuzzers") { 168*6dbdd20aSAndroid Build Coastguard Worker testonly = true 169*6dbdd20aSAndroid Build Coastguard Worker deps = perfetto_fuzzers_targets 170*6dbdd20aSAndroid Build Coastguard Worker } 171*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ ":fuzzers" ] 172*6dbdd20aSAndroid Build Coastguard Worker} 173*6dbdd20aSAndroid Build Coastguard Worker 174*6dbdd20aSAndroid Build Coastguard Worker# Less interesting stuff that makes sense only in the standalone build, mainly 175*6dbdd20aSAndroid Build Coastguard Worker# compile-time checks for the CI. 176*6dbdd20aSAndroid Build Coastguard Workerif (perfetto_build_standalone) { 177*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ 178*6dbdd20aSAndroid Build Coastguard Worker "test/configs", 179*6dbdd20aSAndroid Build Coastguard Worker 180*6dbdd20aSAndroid Build Coastguard Worker # Used to evaluate the Python folder for Bazel script generation. 181*6dbdd20aSAndroid Build Coastguard Worker "python:trace_processor_py", 182*6dbdd20aSAndroid Build Coastguard Worker 183*6dbdd20aSAndroid Build Coastguard Worker # For checking all generated xxx.gen.{cc,h} files without waiting for 184*6dbdd20aSAndroid Build Coastguard Worker # embedders to try to use them and fail. 185*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/config:cpp", 186*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/common:cpp", 187*6dbdd20aSAndroid Build Coastguard Worker 188*6dbdd20aSAndroid Build Coastguard Worker # Used in the when updating the ftrace protos 189*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace/ftrace:descriptor", 190*6dbdd20aSAndroid Build Coastguard Worker 191*6dbdd20aSAndroid Build Coastguard Worker # Checks that the "fake" backend implementations build. 192*6dbdd20aSAndroid Build Coastguard Worker "src/tracing:client_api_no_backends_compile_test", 193*6dbdd20aSAndroid Build Coastguard Worker ] 194*6dbdd20aSAndroid Build Coastguard Worker if (is_linux || is_android || is_mac) { 195*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "src/tracebox" ] 196*6dbdd20aSAndroid Build Coastguard Worker } 197*6dbdd20aSAndroid Build Coastguard Worker} 198*6dbdd20aSAndroid Build Coastguard Worker 199*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_merged_protos_check) { 200*6dbdd20aSAndroid Build Coastguard Worker # For syntax-checking the protos. 201*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "protos/perfetto/trace:merged_trace_lite" ] 202*6dbdd20aSAndroid Build Coastguard Worker} 203*6dbdd20aSAndroid Build Coastguard Worker 204*6dbdd20aSAndroid Build Coastguard Worker# The CTS code is built (but not ran) also in standalone builds. This is to 205*6dbdd20aSAndroid Build Coastguard Worker# catch refactoring breakages earlier without having to wait for treehugger. 206*6dbdd20aSAndroid Build Coastguard Workerif (is_android && (perfetto_build_standalone || perfetto_build_with_android)) { 207*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "test/cts:perfetto_cts_deps" ] 208*6dbdd20aSAndroid Build Coastguard Worker all_targets += [ "test/vts:perfetto_vts_deps" ] 209*6dbdd20aSAndroid Build Coastguard Worker} 210*6dbdd20aSAndroid Build Coastguard Worker 211*6dbdd20aSAndroid Build Coastguard Workergroup("all") { 212*6dbdd20aSAndroid Build Coastguard Worker testonly = true # allow to build also test targets 213*6dbdd20aSAndroid Build Coastguard Worker deps = all_targets 214*6dbdd20aSAndroid Build Coastguard Worker} 215*6dbdd20aSAndroid Build Coastguard Worker 216*6dbdd20aSAndroid Build Coastguard Worker# This target is used when running ninja without any argument (by default would 217*6dbdd20aSAndroid Build Coastguard Worker# build all reachable targets). This is mainly used to prevent the UI being 218*6dbdd20aSAndroid Build Coastguard Worker# built when running ninja -C out/xxx. 219*6dbdd20aSAndroid Build Coastguard Worker# This has effect only in standalone builds, no effect on chromium builds. 220*6dbdd20aSAndroid Build Coastguard Worker# Chromium's "all" target depends on our "all" target above. However chromium's 221*6dbdd20aSAndroid Build Coastguard Worker# "default" target depends on any target that we cause to be discovered by 222*6dbdd20aSAndroid Build Coastguard Worker# depending on other GN files. 223*6dbdd20aSAndroid Build Coastguard Workergroup("default") { 224*6dbdd20aSAndroid Build Coastguard Worker testonly = true 225*6dbdd20aSAndroid Build Coastguard Worker deps = [ ":all" ] 226*6dbdd20aSAndroid Build Coastguard Worker} 227*6dbdd20aSAndroid Build Coastguard Worker 228*6dbdd20aSAndroid Build Coastguard Worker# +----------------------------------------------------------------------------+ 229*6dbdd20aSAndroid Build Coastguard Worker# | Other definitions: root targets that don't belong to any other subdirectory| 230*6dbdd20aSAndroid Build Coastguard Worker# +----------------------------------------------------------------------------+ 231*6dbdd20aSAndroid Build Coastguard Worker 232*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_ui) { 233*6dbdd20aSAndroid Build Coastguard Worker group("ui") { 234*6dbdd20aSAndroid Build Coastguard Worker deps = [ "ui" ] 235*6dbdd20aSAndroid Build Coastguard Worker } 236*6dbdd20aSAndroid Build Coastguard Worker} 237*6dbdd20aSAndroid Build Coastguard Worker 238*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_site) { 239*6dbdd20aSAndroid Build Coastguard Worker group("site") { 240*6dbdd20aSAndroid Build Coastguard Worker deps = [ "infra/perfetto.dev:site" ] 241*6dbdd20aSAndroid Build Coastguard Worker } 242*6dbdd20aSAndroid Build Coastguard Worker} 243*6dbdd20aSAndroid Build Coastguard Worker 244*6dbdd20aSAndroid Build Coastguard Worker# In Android builds, we build the code of traced and traced_probes in one shared 245*6dbdd20aSAndroid Build Coastguard Worker# library that exposes one xxx_main() for each. The executables themselves are 246*6dbdd20aSAndroid Build Coastguard Worker# tiny shells that just invoke their own entry point into the library. 247*6dbdd20aSAndroid Build Coastguard Worker# This is done merely for saving binary size, because the three binaries happen 248*6dbdd20aSAndroid Build Coastguard Worker# to share a lot of code. 249*6dbdd20aSAndroid Build Coastguard Worker# When setting monolithic_binaries=true (only supported in standalone builds) 250*6dbdd20aSAndroid Build Coastguard Worker# it builds more conventional executables, where each binary has the full 251*6dbdd20aSAndroid Build Coastguard Worker# implementation and no shared library dependency. This is to make dev cycles 252*6dbdd20aSAndroid Build Coastguard Worker# on Android faster, avoiding all the LD_LIBRARY_PATH boilerplate. 253*6dbdd20aSAndroid Build Coastguard Worker# libperfetto.so is also used for stuff that is exposed to the rest of the 254*6dbdd20aSAndroid Build Coastguard Worker# Android tree. 255*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_platform_services) { 256*6dbdd20aSAndroid Build Coastguard Worker if (monolithic_binaries) { 257*6dbdd20aSAndroid Build Coastguard Worker libperfetto_target_type = "static_library" 258*6dbdd20aSAndroid Build Coastguard Worker } else { 259*6dbdd20aSAndroid Build Coastguard Worker libperfetto_target_type = "shared_library" 260*6dbdd20aSAndroid Build Coastguard Worker } 261*6dbdd20aSAndroid Build Coastguard Worker 262*6dbdd20aSAndroid Build Coastguard Worker target(libperfetto_target_type, "libperfetto") { 263*6dbdd20aSAndroid Build Coastguard Worker if (libperfetto_target_type == "static_library") { 264*6dbdd20aSAndroid Build Coastguard Worker complete_static_lib = true 265*6dbdd20aSAndroid Build Coastguard Worker } 266*6dbdd20aSAndroid Build Coastguard Worker deps = [ 267*6dbdd20aSAndroid Build Coastguard Worker "gn:default_deps", 268*6dbdd20aSAndroid Build Coastguard Worker "src/traced/service", 269*6dbdd20aSAndroid Build Coastguard Worker ] 270*6dbdd20aSAndroid Build Coastguard Worker if (enable_perfetto_traced_probes) { 271*6dbdd20aSAndroid Build Coastguard Worker deps += [ "src/traced/probes" ] 272*6dbdd20aSAndroid Build Coastguard Worker } 273*6dbdd20aSAndroid Build Coastguard Worker } 274*6dbdd20aSAndroid Build Coastguard Worker} 275*6dbdd20aSAndroid Build Coastguard Worker 276*6dbdd20aSAndroid Build Coastguard Workerif (!build_with_chromium) { 277*6dbdd20aSAndroid Build Coastguard Worker # Client library target exposed to the Android tree. 278*6dbdd20aSAndroid Build Coastguard Worker # Still in experimental stage and not API stable yet. 279*6dbdd20aSAndroid Build Coastguard Worker # See "libperfetto_client_example" (in Android.bp.extras) for an example 280*6dbdd20aSAndroid Build Coastguard Worker # on how to use the Perfetto Client API from the android tree. 281*6dbdd20aSAndroid Build Coastguard Worker static_library("libperfetto_client_experimental") { 282*6dbdd20aSAndroid Build Coastguard Worker complete_static_lib = true 283*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ 284*6dbdd20aSAndroid Build Coastguard Worker "gn:default_deps", 285*6dbdd20aSAndroid Build Coastguard Worker "src/tracing:client_api", 286*6dbdd20aSAndroid Build Coastguard Worker "src/tracing:platform_impl", 287*6dbdd20aSAndroid Build Coastguard Worker ] 288*6dbdd20aSAndroid Build Coastguard Worker sources = [ "include/perfetto/tracing.h" ] 289*6dbdd20aSAndroid Build Coastguard Worker assert_no_deps = [ "gn:protobuf_lite" ] 290*6dbdd20aSAndroid Build Coastguard Worker } 291*6dbdd20aSAndroid Build Coastguard Worker} 292*6dbdd20aSAndroid Build Coastguard Worker 293*6dbdd20aSAndroid Build Coastguard Worker# TODO(primiano): there seem to be two "libperfetto" and one 294*6dbdd20aSAndroid Build Coastguard Worker# "libperfetto_client_experimental" targets defined within this BUILD.gn file. 295*6dbdd20aSAndroid Build Coastguard Worker# Rationalize them with eseckler@. For now seems this one is only used from 296*6dbdd20aSAndroid Build Coastguard Worker# chromium and the other one only from the Android tree. 297*6dbdd20aSAndroid Build Coastguard Workerif (build_with_chromium) { 298*6dbdd20aSAndroid Build Coastguard Worker component("libperfetto") { 299*6dbdd20aSAndroid Build Coastguard Worker public_configs = [ "gn:public_config" ] 300*6dbdd20aSAndroid Build Coastguard Worker deps = [ 301*6dbdd20aSAndroid Build Coastguard Worker "src/trace_processor/importers/memory_tracker:graph_processor", 302*6dbdd20aSAndroid Build Coastguard Worker "src/tracing:client_api", 303*6dbdd20aSAndroid Build Coastguard Worker "src/tracing:platform_impl", 304*6dbdd20aSAndroid Build Coastguard Worker "src/tracing/core", 305*6dbdd20aSAndroid Build Coastguard Worker ] 306*6dbdd20aSAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] # nogncheck 307*6dbdd20aSAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] # nogncheck 308*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ 309*6dbdd20aSAndroid Build Coastguard Worker "include/perfetto/ext/trace_processor/importers/memory_tracker", 310*6dbdd20aSAndroid Build Coastguard Worker "include/perfetto/ext/tracing/core", 311*6dbdd20aSAndroid Build Coastguard Worker "include/perfetto/tracing", 312*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/common:zero", 313*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace:zero", 314*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace/chrome:zero", 315*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace/etw:zero", 316*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace/interned_data:zero", 317*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace/profiling:zero", 318*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace/ps:zero", 319*6dbdd20aSAndroid Build Coastguard Worker "protos/perfetto/trace/track_event:zero", 320*6dbdd20aSAndroid Build Coastguard Worker ] 321*6dbdd20aSAndroid Build Coastguard Worker if (enable_perfetto_ipc) { 322*6dbdd20aSAndroid Build Coastguard Worker deps += [ 323*6dbdd20aSAndroid Build Coastguard Worker "src/tracing/ipc/producer", 324*6dbdd20aSAndroid Build Coastguard Worker "src/tracing/ipc/service", 325*6dbdd20aSAndroid Build Coastguard Worker ] 326*6dbdd20aSAndroid Build Coastguard Worker public_deps += [ "include/perfetto/ext/tracing/ipc:ipc" ] 327*6dbdd20aSAndroid Build Coastguard Worker } 328*6dbdd20aSAndroid Build Coastguard Worker if (!is_nacl) { 329*6dbdd20aSAndroid Build Coastguard Worker deps += [ 330*6dbdd20aSAndroid Build Coastguard Worker "src/trace_processor:export_json", 331*6dbdd20aSAndroid Build Coastguard Worker "src/trace_processor:storage_minimal", 332*6dbdd20aSAndroid Build Coastguard Worker ] 333*6dbdd20aSAndroid Build Coastguard Worker public_deps += [ 334*6dbdd20aSAndroid Build Coastguard Worker "include/perfetto/ext/trace_processor:export_json", 335*6dbdd20aSAndroid Build Coastguard Worker "include/perfetto/trace_processor:storage", 336*6dbdd20aSAndroid Build Coastguard Worker ] 337*6dbdd20aSAndroid Build Coastguard Worker } 338*6dbdd20aSAndroid Build Coastguard Worker } 339*6dbdd20aSAndroid Build Coastguard Worker 340*6dbdd20aSAndroid Build Coastguard Worker # TODO(altimin): this is a temp workaround around very strange link failures 341*6dbdd20aSAndroid Build Coastguard Worker # on win-dbg-ng buildbot. 342*6dbdd20aSAndroid Build Coastguard Worker if (!is_win) { 343*6dbdd20aSAndroid Build Coastguard Worker libtrace_processor_target_type = "source_set" 344*6dbdd20aSAndroid Build Coastguard Worker } else { 345*6dbdd20aSAndroid Build Coastguard Worker libtrace_processor_target_type = "component" 346*6dbdd20aSAndroid Build Coastguard Worker } 347*6dbdd20aSAndroid Build Coastguard Worker 348*6dbdd20aSAndroid Build Coastguard Worker # In Chromium, we want to ensure that we don't link dynamically against sqlite 349*6dbdd20aSAndroid Build Coastguard Worker # (as Chromium also uses a more restricted version of sqlite which is actually 350*6dbdd20aSAndroid Build Coastguard Worker # shipped to the users). 351*6dbdd20aSAndroid Build Coastguard Worker # source_set helps us to achieve that. 352*6dbdd20aSAndroid Build Coastguard Worker target(libtrace_processor_target_type, "libtrace_processor") { 353*6dbdd20aSAndroid Build Coastguard Worker public_configs = [ "gn:public_config" ] 354*6dbdd20aSAndroid Build Coastguard Worker deps = [ "src/trace_processor:lib" ] 355*6dbdd20aSAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] # nogncheck 356*6dbdd20aSAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] # nogncheck 357*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ "include/perfetto/trace_processor" ] 358*6dbdd20aSAndroid Build Coastguard Worker } 359*6dbdd20aSAndroid Build Coastguard Worker component("perfetto_test_support") { 360*6dbdd20aSAndroid Build Coastguard Worker testonly = true 361*6dbdd20aSAndroid Build Coastguard Worker public_configs = [ "gn:public_config" ] 362*6dbdd20aSAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] # nogncheck 363*6dbdd20aSAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] # nogncheck 364*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ "include/perfetto/test:test_support" ] 365*6dbdd20aSAndroid Build Coastguard Worker deps = [ "src/tracing/test:test_support" ] 366*6dbdd20aSAndroid Build Coastguard Worker } 367*6dbdd20aSAndroid Build Coastguard Worker} 368