1# Copyright (C) 2019 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15import("../../../gn/fuzzer.gni") 16import("../../../gn/perfetto.gni") 17import("../../../gn/test.gni") 18 19assert(enable_perfetto_traced_perf) 20 21executable("traced_perf") { 22 deps = [ 23 ":traced_perf_main", 24 "../../../gn:default_deps", 25 ] 26 sources = [ "main.cc" ] 27} 28 29source_set("traced_perf_main") { 30 deps = [ 31 ":proc_descriptors", 32 ":producer", 33 "../../../gn:default_deps", 34 "../../../src/base", 35 "../../../src/tracing/ipc/producer", 36 ] 37 sources = [ 38 "traced_perf.cc", 39 "traced_perf.h", 40 ] 41} 42 43source_set("producer") { 44 public_deps = [ 45 ":common_types", 46 ":regs_parsing", 47 ":unwinding", 48 "../../../include/perfetto/tracing/core", 49 "../../../src/tracing/core:service", # for metatrace 50 ] 51 deps = [ 52 ":proc_descriptors", 53 "../../../gn:default_deps", 54 "../../../protos/perfetto/common:cpp", 55 "../../../protos/perfetto/common:zero", 56 "../../../protos/perfetto/config:cpp", 57 "../../../protos/perfetto/config/profiling:cpp", 58 "../../../protos/perfetto/trace:zero", 59 "../../../protos/perfetto/trace/profiling:zero", 60 "../../../src/base", 61 "../../../src/base:unix_socket", 62 "../../../src/traced/probes/ftrace:ftrace_procfs", 63 "../../../src/tracing/ipc/producer", 64 "../common:callstack_trie", 65 "../common:interner", 66 "../common:interning_output", 67 "../common:proc_cmdline", 68 "../common:producer_support", 69 "../common:profiler_guardrails", 70 ] 71 sources = [ 72 "event_config.cc", 73 "event_config.h", 74 "event_reader.cc", 75 "event_reader.h", 76 "perf_producer.cc", 77 "perf_producer.h", 78 ] 79} 80 81source_set("common_types") { 82 public_deps = [ "../../../gn:libunwindstack" ] 83 deps = [ 84 "../../../gn:default_deps", 85 "../common:unwind_support", 86 ] 87 sources = [ "common_types.h" ] 88} 89 90source_set("unwinding") { 91 public_deps = [ 92 "../../../gn:libunwindstack", 93 "../../../src/tracing/core:service", # for metatrace 94 ] 95 deps = [ 96 ":common_types", 97 "../../../gn:default_deps", 98 "../../../include/perfetto/ext/tracing/core", 99 "../../../src/base", 100 "../../../src/kallsyms", 101 "../common:unwind_support", 102 ] 103 sources = [ 104 "unwind_queue.h", 105 "unwinding.cc", 106 "unwinding.h", 107 ] 108} 109 110source_set("regs_parsing") { 111 public_deps = [ "../../../gn:libunwindstack" ] 112 deps = [ 113 "../../../gn:bionic_kernel_uapi_headers", 114 "../../../gn:default_deps", 115 "../../../src/base", 116 ] 117 sources = [ 118 "regs_parsing.cc", 119 "regs_parsing.h", 120 ] 121} 122 123source_set("proc_descriptors") { 124 deps = [ 125 "../../../gn:default_deps", 126 "../../../src/base", 127 ] 128 sources = [ 129 "proc_descriptors.cc", 130 "proc_descriptors.h", 131 ] 132} 133 134source_set("producer_unittests") { 135 testonly = true 136 deps = [ 137 ":producer", 138 ":unwinding", 139 "../../../gn:default_deps", 140 "../../../gn:gtest_and_gmock", 141 "../../../protos/perfetto/common:cpp", 142 "../../../protos/perfetto/config:cpp", 143 "../../../protos/perfetto/config/profiling:cpp", 144 "../../../protos/perfetto/trace:zero", 145 "../../../src/protozero", 146 "../../base", 147 ] 148 sources = [ 149 "event_config_unittest.cc", 150 "unwind_queue_unittest.cc", 151 ] 152} 153