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