xref: /aosp_15_r20/external/perfetto/BUILD.gn (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
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