xref: /aosp_15_r20/external/perfetto/src/profiling/memory/BUILD.gn (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2018 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/fuzzer.gni")
16*6dbdd20aSAndroid Build Coastguard Workerimport("../../../gn/perfetto.gni")
17*6dbdd20aSAndroid Build Coastguard Workerimport("../../../gn/test.gni")
18*6dbdd20aSAndroid Build Coastguard Worker
19*6dbdd20aSAndroid Build Coastguard Workerassert(enable_perfetto_heapprofd)
20*6dbdd20aSAndroid Build Coastguard Worker
21*6dbdd20aSAndroid Build Coastguard Worker# The Android heap profiling daemon.
22*6dbdd20aSAndroid Build Coastguard Workerexecutable("heapprofd") {
23*6dbdd20aSAndroid Build Coastguard Worker  deps = [
24*6dbdd20aSAndroid Build Coastguard Worker    ":heapprofd_main",
25*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
26*6dbdd20aSAndroid Build Coastguard Worker  ]
27*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "main.cc" ]
28*6dbdd20aSAndroid Build Coastguard Worker}
29*6dbdd20aSAndroid Build Coastguard Worker
30*6dbdd20aSAndroid Build Coastguard Workersource_set("heapprofd_main") {
31*6dbdd20aSAndroid Build Coastguard Worker  deps = [
32*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
33*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/trace:zero",
34*6dbdd20aSAndroid Build Coastguard Worker    "../../../src/base",
35*6dbdd20aSAndroid Build Coastguard Worker    "../../../src/base:unix_socket",
36*6dbdd20aSAndroid Build Coastguard Worker    "../../../src/profiling/memory:daemon",
37*6dbdd20aSAndroid Build Coastguard Worker    "../../../src/profiling/memory:wire_protocol",
38*6dbdd20aSAndroid Build Coastguard Worker    "../../../src/tracing/ipc/producer",
39*6dbdd20aSAndroid Build Coastguard Worker  ]
40*6dbdd20aSAndroid Build Coastguard Worker  sources = [
41*6dbdd20aSAndroid Build Coastguard Worker    "heapprofd.cc",
42*6dbdd20aSAndroid Build Coastguard Worker    "heapprofd.h",
43*6dbdd20aSAndroid Build Coastguard Worker  ]
44*6dbdd20aSAndroid Build Coastguard Worker}
45*6dbdd20aSAndroid Build Coastguard Worker
46*6dbdd20aSAndroid Build Coastguard Worker# This library gets loaded into (and executes in) arbitrary android processes.
47*6dbdd20aSAndroid Build Coastguard Worker# Logging must be non-allocating. This is achieved by defining
48*6dbdd20aSAndroid Build Coastguard Worker# PERFETTO_ANDROID_ASYNC_SAFE_LOG, which needs to be set for all perfetto code
49*6dbdd20aSAndroid Build Coastguard Worker# being compiled for this library. When generating Android.bp, the |cflags|
50*6dbdd20aSAndroid Build Coastguard Worker# entry on this target is sufficient (as all sources are flattened into a
51*6dbdd20aSAndroid Build Coastguard Worker# single bp target). However this is not correctly reflected in the gn
52*6dbdd20aSAndroid Build Coastguard Worker# structure (which is a tree of targets) as the dependencies would not pick
53*6dbdd20aSAndroid Build Coastguard Worker# up the flag (and thus use the wrong logging macro).
54*6dbdd20aSAndroid Build Coastguard Worker#
55*6dbdd20aSAndroid Build Coastguard Worker# This builds only in the Android tree, when using the generated Android.bp.
56*6dbdd20aSAndroid Build Coastguard Workerif (perfetto_build_with_android) {
57*6dbdd20aSAndroid Build Coastguard Worker  shared_library("heapprofd_client") {
58*6dbdd20aSAndroid Build Coastguard Worker    configs -= [ "//gn/standalone:android_liblog" ]  # nogncheck
59*6dbdd20aSAndroid Build Coastguard Worker    cflags = [ "-DPERFETTO_ANDROID_ASYNC_SAFE_LOG" ]
60*6dbdd20aSAndroid Build Coastguard Worker    deps = [
61*6dbdd20aSAndroid Build Coastguard Worker      ":heapprofd_client_api",
62*6dbdd20aSAndroid Build Coastguard Worker      ":malloc_interceptor_bionic_hooks",
63*6dbdd20aSAndroid Build Coastguard Worker    ]
64*6dbdd20aSAndroid Build Coastguard Worker  }
65*6dbdd20aSAndroid Build Coastguard Worker
66*6dbdd20aSAndroid Build Coastguard Worker  # This will export publicly visible symbols for the
67*6dbdd20aSAndroid Build Coastguard Worker  # malloc_interceptor_bionic_hooks.
68*6dbdd20aSAndroid Build Coastguard Worker  source_set("malloc_interceptor_bionic_hooks") {
69*6dbdd20aSAndroid Build Coastguard Worker    deps = [
70*6dbdd20aSAndroid Build Coastguard Worker      ":bionic_libc_platform_headers_on_android",
71*6dbdd20aSAndroid Build Coastguard Worker      ":wrap_allocators",
72*6dbdd20aSAndroid Build Coastguard Worker      "../../../gn:default_deps",
73*6dbdd20aSAndroid Build Coastguard Worker      "../../base",
74*6dbdd20aSAndroid Build Coastguard Worker    ]
75*6dbdd20aSAndroid Build Coastguard Worker    cflags = [
76*6dbdd20aSAndroid Build Coastguard Worker      "-isystem",
77*6dbdd20aSAndroid Build Coastguard Worker      rebase_path("../../../buildtools/bionic/libc", root_build_dir),
78*6dbdd20aSAndroid Build Coastguard Worker    ]
79*6dbdd20aSAndroid Build Coastguard Worker    sources = [ "malloc_interceptor_bionic_hooks.cc" ]
80*6dbdd20aSAndroid Build Coastguard Worker  }
81*6dbdd20aSAndroid Build Coastguard Worker}  # if (perfetto_build_with_android)
82*6dbdd20aSAndroid Build Coastguard Worker
83*6dbdd20aSAndroid Build Coastguard Workerexecutable("heapprofd_standalone_client_example") {
84*6dbdd20aSAndroid Build Coastguard Worker  deps = [
85*6dbdd20aSAndroid Build Coastguard Worker    ":heapprofd_standalone_client",
86*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
87*6dbdd20aSAndroid Build Coastguard Worker  ]
88*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "heapprofd_standalone_client_example.cc" ]
89*6dbdd20aSAndroid Build Coastguard Worker}
90*6dbdd20aSAndroid Build Coastguard Worker
91*6dbdd20aSAndroid Build Coastguard Workersource_set("client_api_standalone") {
92*6dbdd20aSAndroid Build Coastguard Worker  deps = [
93*6dbdd20aSAndroid Build Coastguard Worker    ":client",
94*6dbdd20aSAndroid Build Coastguard Worker    ":client_api",
95*6dbdd20aSAndroid Build Coastguard Worker    ":daemon",
96*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
97*6dbdd20aSAndroid Build Coastguard Worker    "../../../include/perfetto/tracing",
98*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
99*6dbdd20aSAndroid Build Coastguard Worker    "../common:proc_utils",
100*6dbdd20aSAndroid Build Coastguard Worker  ]
101*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "client_api_factory_standalone.cc" ]
102*6dbdd20aSAndroid Build Coastguard Worker}
103*6dbdd20aSAndroid Build Coastguard Worker
104*6dbdd20aSAndroid Build Coastguard Worker# This can be used to instrument custom allocators to report their allocations
105*6dbdd20aSAndroid Build Coastguard Worker# to Perfetto. This bundles a copy of heapprofd in the library, in contrast to
106*6dbdd20aSAndroid Build Coastguard Worker# heapprofd_client_api (see below), which expects one to be present in the
107*6dbdd20aSAndroid Build Coastguard Worker# Android platform.
108*6dbdd20aSAndroid Build Coastguard Workershared_library("heapprofd_standalone_client") {
109*6dbdd20aSAndroid Build Coastguard Worker  deps = [
110*6dbdd20aSAndroid Build Coastguard Worker    ":client_api_standalone",
111*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
112*6dbdd20aSAndroid Build Coastguard Worker  ]
113*6dbdd20aSAndroid Build Coastguard Worker  ldflags = [
114*6dbdd20aSAndroid Build Coastguard Worker    "-Wl,--version-script",
115*6dbdd20aSAndroid Build Coastguard Worker    rebase_path("heapprofd_client_api.map.txt", root_build_dir),
116*6dbdd20aSAndroid Build Coastguard Worker  ]
117*6dbdd20aSAndroid Build Coastguard Worker}
118*6dbdd20aSAndroid Build Coastguard Worker
119*6dbdd20aSAndroid Build Coastguard Workershared_library("heapprofd_api_noop") {
120*6dbdd20aSAndroid Build Coastguard Worker  deps = [ "../../../gn:default_deps" ]
121*6dbdd20aSAndroid Build Coastguard Worker  ldflags = [
122*6dbdd20aSAndroid Build Coastguard Worker    "-Wl,--version-script",
123*6dbdd20aSAndroid Build Coastguard Worker    rebase_path("heapprofd_client_api.map.txt", root_build_dir),
124*6dbdd20aSAndroid Build Coastguard Worker  ]
125*6dbdd20aSAndroid Build Coastguard Worker
126*6dbdd20aSAndroid Build Coastguard Worker  # This target does absolutely nothing, so we do not want to depend on
127*6dbdd20aSAndroid Build Coastguard Worker  # liblog.
128*6dbdd20aSAndroid Build Coastguard Worker  configs -= [ "//gn/standalone:android_liblog" ]  # nogncheck
129*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "client_api_noop.cc" ]
130*6dbdd20aSAndroid Build Coastguard Worker}
131*6dbdd20aSAndroid Build Coastguard Worker
132*6dbdd20aSAndroid Build Coastguard Workershared_library("heapprofd_client_api") {
133*6dbdd20aSAndroid Build Coastguard Worker  configs -= [ "//gn/standalone:android_liblog" ]  # nogncheck
134*6dbdd20aSAndroid Build Coastguard Worker  if (perfetto_build_with_android) {
135*6dbdd20aSAndroid Build Coastguard Worker    cflags = [ "-DPERFETTO_ANDROID_ASYNC_SAFE_LOG" ]
136*6dbdd20aSAndroid Build Coastguard Worker  } else {
137*6dbdd20aSAndroid Build Coastguard Worker    # We don't have async safe logging for non-Android, so disable all
138*6dbdd20aSAndroid Build Coastguard Worker    # logging in the client.
139*6dbdd20aSAndroid Build Coastguard Worker    # TODO(fmayer): Add async-safe logging for non-Android.
140*6dbdd20aSAndroid Build Coastguard Worker    cflags = [ "-DPERFETTO_DISABLE_LOG" ]
141*6dbdd20aSAndroid Build Coastguard Worker  }
142*6dbdd20aSAndroid Build Coastguard Worker  deps = [ ":client_api" ]
143*6dbdd20aSAndroid Build Coastguard Worker  if (perfetto_build_with_android) {
144*6dbdd20aSAndroid Build Coastguard Worker    sources = [ "client_api_factory_android.cc" ]
145*6dbdd20aSAndroid Build Coastguard Worker  }
146*6dbdd20aSAndroid Build Coastguard Worker}
147*6dbdd20aSAndroid Build Coastguard Worker
148*6dbdd20aSAndroid Build Coastguard Worker# On GLibc Linux, this can be used to override the allocators using
149*6dbdd20aSAndroid Build Coastguard Worker# LD_PRELOAD. On non-GLibc, this will probably fail to link.
150*6dbdd20aSAndroid Build Coastguard Workershared_library("heapprofd_glibc_preload") {
151*6dbdd20aSAndroid Build Coastguard Worker  deps = [
152*6dbdd20aSAndroid Build Coastguard Worker    ":client_api_standalone",
153*6dbdd20aSAndroid Build Coastguard Worker    ":wrap_allocators",
154*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
155*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
156*6dbdd20aSAndroid Build Coastguard Worker  ]
157*6dbdd20aSAndroid Build Coastguard Worker  ldflags = [
158*6dbdd20aSAndroid Build Coastguard Worker    "-Wl,--version-script",
159*6dbdd20aSAndroid Build Coastguard Worker    rebase_path("heapprofd_preload.map.txt", root_build_dir),
160*6dbdd20aSAndroid Build Coastguard Worker  ]
161*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "malloc_interceptor_glibc_preload.cc" ]
162*6dbdd20aSAndroid Build Coastguard Worker}
163*6dbdd20aSAndroid Build Coastguard Worker
164*6dbdd20aSAndroid Build Coastguard Worker# On Android builds, this is converted to
165*6dbdd20aSAndroid Build Coastguard Worker# header_libs: ["bionic_libc_platform_headers"].
166*6dbdd20aSAndroid Build Coastguard Workersource_set("bionic_libc_platform_headers_on_android") {
167*6dbdd20aSAndroid Build Coastguard Worker}
168*6dbdd20aSAndroid Build Coastguard Worker
169*6dbdd20aSAndroid Build Coastguard Workersource_set("client_api") {
170*6dbdd20aSAndroid Build Coastguard Worker  if (perfetto_build_with_android) {
171*6dbdd20aSAndroid Build Coastguard Worker    cflags = [ "-DPERFETTO_ANDROID_ASYNC_SAFE_LOG" ]
172*6dbdd20aSAndroid Build Coastguard Worker  } else {
173*6dbdd20aSAndroid Build Coastguard Worker    # We don't have async safe logging for non-Android, so disable all
174*6dbdd20aSAndroid Build Coastguard Worker    # logging in the client.
175*6dbdd20aSAndroid Build Coastguard Worker    # TODO(fmayer): Add async-safe logging for non-Android.
176*6dbdd20aSAndroid Build Coastguard Worker    cflags = [ "-DPERFETTO_DISABLE_LOG" ]
177*6dbdd20aSAndroid Build Coastguard Worker  }
178*6dbdd20aSAndroid Build Coastguard Worker  deps = [
179*6dbdd20aSAndroid Build Coastguard Worker    ":client",
180*6dbdd20aSAndroid Build Coastguard Worker    ":scoped_spinlock",
181*6dbdd20aSAndroid Build Coastguard Worker    ":wire_protocol",
182*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
183*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
184*6dbdd20aSAndroid Build Coastguard Worker  ]
185*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "client_api.cc" ]
186*6dbdd20aSAndroid Build Coastguard Worker}
187*6dbdd20aSAndroid Build Coastguard Worker
188*6dbdd20aSAndroid Build Coastguard Workersource_set("wrap_allocators") {
189*6dbdd20aSAndroid Build Coastguard Worker  deps = [
190*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
191*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
192*6dbdd20aSAndroid Build Coastguard Worker  ]
193*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "wrap_allocators.cc" ]
194*6dbdd20aSAndroid Build Coastguard Worker}
195*6dbdd20aSAndroid Build Coastguard Worker
196*6dbdd20aSAndroid Build Coastguard Workersource_set("wire_protocol") {
197*6dbdd20aSAndroid Build Coastguard Worker  public_deps = [ "../../../gn:libunwindstack" ]
198*6dbdd20aSAndroid Build Coastguard Worker  deps = [
199*6dbdd20aSAndroid Build Coastguard Worker    ":bionic_libc_platform_headers_on_android",
200*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
201*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
202*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
203*6dbdd20aSAndroid Build Coastguard Worker    "../../base:unix_socket",
204*6dbdd20aSAndroid Build Coastguard Worker  ]
205*6dbdd20aSAndroid Build Coastguard Worker  sources = [
206*6dbdd20aSAndroid Build Coastguard Worker    "wire_protocol.cc",
207*6dbdd20aSAndroid Build Coastguard Worker    "wire_protocol.h",
208*6dbdd20aSAndroid Build Coastguard Worker  ]
209*6dbdd20aSAndroid Build Coastguard Worker}
210*6dbdd20aSAndroid Build Coastguard Worker
211*6dbdd20aSAndroid Build Coastguard Workersource_set("scoped_spinlock") {
212*6dbdd20aSAndroid Build Coastguard Worker  deps = [
213*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
214*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
215*6dbdd20aSAndroid Build Coastguard Worker  ]
216*6dbdd20aSAndroid Build Coastguard Worker  sources = [
217*6dbdd20aSAndroid Build Coastguard Worker    "scoped_spinlock.cc",
218*6dbdd20aSAndroid Build Coastguard Worker    "scoped_spinlock.h",
219*6dbdd20aSAndroid Build Coastguard Worker  ]
220*6dbdd20aSAndroid Build Coastguard Worker}
221*6dbdd20aSAndroid Build Coastguard Worker
222*6dbdd20aSAndroid Build Coastguard Workersource_set("ring_buffer") {
223*6dbdd20aSAndroid Build Coastguard Worker  deps = [
224*6dbdd20aSAndroid Build Coastguard Worker    ":scoped_spinlock",
225*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
226*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
227*6dbdd20aSAndroid Build Coastguard Worker  ]
228*6dbdd20aSAndroid Build Coastguard Worker  sources = [
229*6dbdd20aSAndroid Build Coastguard Worker    "shared_ring_buffer.cc",
230*6dbdd20aSAndroid Build Coastguard Worker    "shared_ring_buffer.h",
231*6dbdd20aSAndroid Build Coastguard Worker  ]
232*6dbdd20aSAndroid Build Coastguard Worker}
233*6dbdd20aSAndroid Build Coastguard Worker
234*6dbdd20aSAndroid Build Coastguard Workersource_set("ring_buffer_unittests") {
235*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
236*6dbdd20aSAndroid Build Coastguard Worker  deps = [
237*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
238*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
239*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:gtest_and_gmock",
240*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
241*6dbdd20aSAndroid Build Coastguard Worker  ]
242*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "shared_ring_buffer_unittest.cc" ]
243*6dbdd20aSAndroid Build Coastguard Worker}
244*6dbdd20aSAndroid Build Coastguard Worker
245*6dbdd20aSAndroid Build Coastguard Workersource_set("daemon") {
246*6dbdd20aSAndroid Build Coastguard Worker  deps = [
247*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
248*6dbdd20aSAndroid Build Coastguard Worker    ":scoped_spinlock",
249*6dbdd20aSAndroid Build Coastguard Worker    ":wire_protocol",
250*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
251*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/config/profiling:cpp",
252*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
253*6dbdd20aSAndroid Build Coastguard Worker    "../../base:unix_socket",
254*6dbdd20aSAndroid Build Coastguard Worker    "../../tracing/core",
255*6dbdd20aSAndroid Build Coastguard Worker    "../../tracing/ipc/producer",
256*6dbdd20aSAndroid Build Coastguard Worker    "../common:callstack_trie",
257*6dbdd20aSAndroid Build Coastguard Worker    "../common:interner",
258*6dbdd20aSAndroid Build Coastguard Worker    "../common:interning_output",
259*6dbdd20aSAndroid Build Coastguard Worker    "../common:proc_cmdline",
260*6dbdd20aSAndroid Build Coastguard Worker    "../common:proc_utils",
261*6dbdd20aSAndroid Build Coastguard Worker    "../common:producer_support",
262*6dbdd20aSAndroid Build Coastguard Worker    "../common:profiler_guardrails",
263*6dbdd20aSAndroid Build Coastguard Worker    "../common:unwind_support",
264*6dbdd20aSAndroid Build Coastguard Worker  ]
265*6dbdd20aSAndroid Build Coastguard Worker  public_deps = [
266*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:libunwindstack",
267*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/config/profiling:cpp",
268*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/trace:zero",
269*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/trace/interned_data:zero",
270*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/trace/profiling:zero",
271*6dbdd20aSAndroid Build Coastguard Worker  ]
272*6dbdd20aSAndroid Build Coastguard Worker  sources = [
273*6dbdd20aSAndroid Build Coastguard Worker    "bookkeeping.cc",
274*6dbdd20aSAndroid Build Coastguard Worker    "bookkeeping.h",
275*6dbdd20aSAndroid Build Coastguard Worker    "bookkeeping_dump.cc",
276*6dbdd20aSAndroid Build Coastguard Worker    "bookkeeping_dump.h",
277*6dbdd20aSAndroid Build Coastguard Worker    "heapprofd_producer.cc",
278*6dbdd20aSAndroid Build Coastguard Worker    "heapprofd_producer.h",
279*6dbdd20aSAndroid Build Coastguard Worker    "java_hprof_producer.cc",
280*6dbdd20aSAndroid Build Coastguard Worker    "java_hprof_producer.h",
281*6dbdd20aSAndroid Build Coastguard Worker    "log_histogram.cc",
282*6dbdd20aSAndroid Build Coastguard Worker    "log_histogram.h",
283*6dbdd20aSAndroid Build Coastguard Worker    "system_property.cc",
284*6dbdd20aSAndroid Build Coastguard Worker    "system_property.h",
285*6dbdd20aSAndroid Build Coastguard Worker    "unwinding.cc",
286*6dbdd20aSAndroid Build Coastguard Worker    "unwinding.h",
287*6dbdd20aSAndroid Build Coastguard Worker    "unwound_messages.h",
288*6dbdd20aSAndroid Build Coastguard Worker  ]
289*6dbdd20aSAndroid Build Coastguard Worker}
290*6dbdd20aSAndroid Build Coastguard Worker
291*6dbdd20aSAndroid Build Coastguard Workersource_set("client") {
292*6dbdd20aSAndroid Build Coastguard Worker  deps = [
293*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
294*6dbdd20aSAndroid Build Coastguard Worker    ":scoped_spinlock",
295*6dbdd20aSAndroid Build Coastguard Worker    ":wire_protocol",
296*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
297*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
298*6dbdd20aSAndroid Build Coastguard Worker    "../../base:unix_socket",
299*6dbdd20aSAndroid Build Coastguard Worker  ]
300*6dbdd20aSAndroid Build Coastguard Worker  public_deps = [ "../../../gn:libunwindstack" ]
301*6dbdd20aSAndroid Build Coastguard Worker  sources = [
302*6dbdd20aSAndroid Build Coastguard Worker    "client.cc",
303*6dbdd20aSAndroid Build Coastguard Worker    "client.h",
304*6dbdd20aSAndroid Build Coastguard Worker    "sampler.cc",
305*6dbdd20aSAndroid Build Coastguard Worker    "sampler.h",
306*6dbdd20aSAndroid Build Coastguard Worker  ]
307*6dbdd20aSAndroid Build Coastguard Worker}
308*6dbdd20aSAndroid Build Coastguard Worker
309*6dbdd20aSAndroid Build Coastguard Workerperfetto_unittest_source_set("unittests") {
310*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
311*6dbdd20aSAndroid Build Coastguard Worker  deps = [
312*6dbdd20aSAndroid Build Coastguard Worker    ":client",
313*6dbdd20aSAndroid Build Coastguard Worker    ":daemon",
314*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
315*6dbdd20aSAndroid Build Coastguard Worker    ":wire_protocol",
316*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
317*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:gtest_and_gmock",
318*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:libunwindstack",
319*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
320*6dbdd20aSAndroid Build Coastguard Worker    "../../base:test_support",
321*6dbdd20aSAndroid Build Coastguard Worker    "../../tracing/core",
322*6dbdd20aSAndroid Build Coastguard Worker    "../../tracing/test:test_support",
323*6dbdd20aSAndroid Build Coastguard Worker    "../common:proc_utils",
324*6dbdd20aSAndroid Build Coastguard Worker    "../common:unwind_support",
325*6dbdd20aSAndroid Build Coastguard Worker  ]
326*6dbdd20aSAndroid Build Coastguard Worker  sources = [
327*6dbdd20aSAndroid Build Coastguard Worker    "bookkeeping_unittest.cc",
328*6dbdd20aSAndroid Build Coastguard Worker    "client_unittest.cc",
329*6dbdd20aSAndroid Build Coastguard Worker    "heapprofd_producer_unittest.cc",
330*6dbdd20aSAndroid Build Coastguard Worker    "parse_smaps_unittest.cc",
331*6dbdd20aSAndroid Build Coastguard Worker    "sampler_unittest.cc",
332*6dbdd20aSAndroid Build Coastguard Worker    "system_property_unittest.cc",
333*6dbdd20aSAndroid Build Coastguard Worker    "unwinding_unittest.cc",
334*6dbdd20aSAndroid Build Coastguard Worker    "wire_protocol_unittest.cc",
335*6dbdd20aSAndroid Build Coastguard Worker  ]
336*6dbdd20aSAndroid Build Coastguard Worker
337*6dbdd20aSAndroid Build Coastguard Worker  # Do not build with Android to avoid applying PERFETTO_ANDROID_ASYNC_SAFE_LOG
338*6dbdd20aSAndroid Build Coastguard Worker  # to the whole perfetto_unittests target.
339*6dbdd20aSAndroid Build Coastguard Worker  if (!perfetto_build_with_android) {
340*6dbdd20aSAndroid Build Coastguard Worker    sources += [ "client_api_unittest.cc" ]
341*6dbdd20aSAndroid Build Coastguard Worker    deps += [ ":client_api" ]
342*6dbdd20aSAndroid Build Coastguard Worker  }
343*6dbdd20aSAndroid Build Coastguard Worker}
344*6dbdd20aSAndroid Build Coastguard Worker
345*6dbdd20aSAndroid Build Coastguard Workersource_set("end_to_end_tests") {
346*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
347*6dbdd20aSAndroid Build Coastguard Worker  deps = [
348*6dbdd20aSAndroid Build Coastguard Worker    ":client",
349*6dbdd20aSAndroid Build Coastguard Worker    ":daemon",
350*6dbdd20aSAndroid Build Coastguard Worker    ":wire_protocol",
351*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
352*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:gtest_and_gmock",
353*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:libunwindstack",
354*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/config/profiling:cpp",
355*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/trace/interned_data:cpp",
356*6dbdd20aSAndroid Build Coastguard Worker    "../../../protos/perfetto/trace/profiling:cpp",
357*6dbdd20aSAndroid Build Coastguard Worker    "../../../test:integrationtest_initializer",
358*6dbdd20aSAndroid Build Coastguard Worker    "../../../test:test_helper",
359*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
360*6dbdd20aSAndroid Build Coastguard Worker    "../../base:test_support",
361*6dbdd20aSAndroid Build Coastguard Worker    "../../trace_processor:lib",
362*6dbdd20aSAndroid Build Coastguard Worker    "../../tracing/test:test_support",
363*6dbdd20aSAndroid Build Coastguard Worker  ]
364*6dbdd20aSAndroid Build Coastguard Worker  sources = [
365*6dbdd20aSAndroid Build Coastguard Worker    "heapprofd_end_to_end_test.cc",
366*6dbdd20aSAndroid Build Coastguard Worker    "heapprofd_producer_integrationtest.cc",
367*6dbdd20aSAndroid Build Coastguard Worker  ]
368*6dbdd20aSAndroid Build Coastguard Worker  if (perfetto_build_with_android) {
369*6dbdd20aSAndroid Build Coastguard Worker    deps += [ ":heapprofd_client_api" ]
370*6dbdd20aSAndroid Build Coastguard Worker  } else {
371*6dbdd20aSAndroid Build Coastguard Worker    deps += [ ":heapprofd_standalone_client" ]
372*6dbdd20aSAndroid Build Coastguard Worker  }
373*6dbdd20aSAndroid Build Coastguard Worker}
374*6dbdd20aSAndroid Build Coastguard Worker
375*6dbdd20aSAndroid Build Coastguard Workerperfetto_fuzzer_test("unwinding_fuzzer") {
376*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
377*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "unwinding_fuzzer.cc" ]
378*6dbdd20aSAndroid Build Coastguard Worker  deps = [
379*6dbdd20aSAndroid Build Coastguard Worker    ":daemon",
380*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
381*6dbdd20aSAndroid Build Coastguard Worker    ":wire_protocol",
382*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
383*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
384*6dbdd20aSAndroid Build Coastguard Worker    "../../tracing/core",
385*6dbdd20aSAndroid Build Coastguard Worker    "../common:unwind_support",
386*6dbdd20aSAndroid Build Coastguard Worker  ]
387*6dbdd20aSAndroid Build Coastguard Worker}
388*6dbdd20aSAndroid Build Coastguard Worker
389*6dbdd20aSAndroid Build Coastguard Workerperfetto_fuzzer_test("shared_ring_buffer_fuzzer") {
390*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
391*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "shared_ring_buffer_fuzzer.cc" ]
392*6dbdd20aSAndroid Build Coastguard Worker  deps = [
393*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
394*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
395*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
396*6dbdd20aSAndroid Build Coastguard Worker  ]
397*6dbdd20aSAndroid Build Coastguard Worker}
398*6dbdd20aSAndroid Build Coastguard Worker
399*6dbdd20aSAndroid Build Coastguard Workerperfetto_fuzzer_test("shared_ring_buffer_write_fuzzer") {
400*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
401*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "shared_ring_buffer_write_fuzzer.cc" ]
402*6dbdd20aSAndroid Build Coastguard Worker  deps = [
403*6dbdd20aSAndroid Build Coastguard Worker    ":ring_buffer",
404*6dbdd20aSAndroid Build Coastguard Worker    "../../../gn:default_deps",
405*6dbdd20aSAndroid Build Coastguard Worker    "../../base",
406*6dbdd20aSAndroid Build Coastguard Worker  ]
407*6dbdd20aSAndroid Build Coastguard Worker}
408*6dbdd20aSAndroid Build Coastguard Worker
409*6dbdd20aSAndroid Build Coastguard Workerif (enable_perfetto_benchmarks) {
410*6dbdd20aSAndroid Build Coastguard Worker  source_set("benchmarks") {
411*6dbdd20aSAndroid Build Coastguard Worker    testonly = true
412*6dbdd20aSAndroid Build Coastguard Worker    deps = [
413*6dbdd20aSAndroid Build Coastguard Worker      ":client",
414*6dbdd20aSAndroid Build Coastguard Worker      ":client_api",
415*6dbdd20aSAndroid Build Coastguard Worker      "../../../gn:benchmark",
416*6dbdd20aSAndroid Build Coastguard Worker      "../../../gn:default_deps",
417*6dbdd20aSAndroid Build Coastguard Worker      "../../base",
418*6dbdd20aSAndroid Build Coastguard Worker      "../../base:test_support",
419*6dbdd20aSAndroid Build Coastguard Worker    ]
420*6dbdd20aSAndroid Build Coastguard Worker    sources = [ "client_api_benchmark.cc" ]
421*6dbdd20aSAndroid Build Coastguard Worker  }
422*6dbdd20aSAndroid Build Coastguard Worker}
423