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/base:version", 36 "../../../src/tracing/ipc/producer", 37 ] 38 sources = [ 39 "traced_perf.cc", 40 "traced_perf.h", 41 ] 42} 43 44source_set("producer") { 45 public_deps = [ 46 ":common_types", 47 ":regs_parsing", 48 ":unwinding", 49 "../../../include/perfetto/tracing/core", 50 "../../../src/tracing/service", # for metatrace 51 ] 52 deps = [ 53 ":proc_descriptors", 54 "../../../gn:default_deps", 55 "../../../protos/perfetto/common:cpp", 56 "../../../protos/perfetto/common:zero", 57 "../../../protos/perfetto/config:cpp", 58 "../../../protos/perfetto/config/profiling:cpp", 59 "../../../protos/perfetto/trace:zero", 60 "../../../protos/perfetto/trace/profiling:zero", 61 "../../../src/base", 62 "../../../src/base:unix_socket", 63 "../../../src/traced/probes/ftrace:ftrace_procfs", 64 "../../../src/tracing/ipc/producer", 65 "../common:callstack_trie", 66 "../common:interner", 67 "../common:interning_output", 68 "../common:proc_cmdline", 69 "../common:producer_support", 70 "../common:profiler_guardrails", 71 ] 72 sources = [ 73 "event_config.cc", 74 "event_config.h", 75 "event_reader.cc", 76 "event_reader.h", 77 "perf_producer.cc", 78 "perf_producer.h", 79 ] 80} 81 82source_set("common_types") { 83 public_deps = [ "../../../gn:libunwindstack" ] 84 deps = [ 85 "../../../gn:default_deps", 86 "../common:unwind_support", 87 ] 88 sources = [ "common_types.h" ] 89} 90 91source_set("unwinding") { 92 public_deps = [ 93 "../../../gn:libunwindstack", 94 "../../../src/tracing/service", # for metatrace 95 ] 96 deps = [ 97 ":common_types", 98 "../../../gn:default_deps", 99 "../../../include/perfetto/ext/tracing/core", 100 "../../../src/base", 101 "../../../src/kallsyms", 102 "../common:unwind_support", 103 ] 104 sources = [ 105 "frame_pointer_unwinder.cc", 106 "frame_pointer_unwinder.h", 107 "unwind_queue.h", 108 "unwinding.cc", 109 "unwinding.h", 110 ] 111} 112 113source_set("regs_parsing") { 114 public_deps = [ "../../../gn:libunwindstack" ] 115 deps = [ 116 "../../../gn:bionic_kernel_uapi_headers", 117 "../../../gn:default_deps", 118 "../../../src/base", 119 ] 120 sources = [ 121 "regs_parsing.cc", 122 "regs_parsing.h", 123 ] 124} 125 126source_set("proc_descriptors") { 127 deps = [ 128 "../../../gn:default_deps", 129 "../../../src/base", 130 ] 131 sources = [ 132 "proc_descriptors.cc", 133 "proc_descriptors.h", 134 ] 135} 136 137source_set("producer_unittests") { 138 testonly = true 139 deps = [ 140 ":producer", 141 ":unwinding", 142 "../../../gn:default_deps", 143 "../../../gn:gtest_and_gmock", 144 "../../../protos/perfetto/common:cpp", 145 "../../../protos/perfetto/config:cpp", 146 "../../../protos/perfetto/config/profiling:cpp", 147 "../../../protos/perfetto/trace:zero", 148 "../../../src/protozero", 149 "../../base", 150 ] 151 sources = [ 152 "event_config_unittest.cc", 153 "frame_pointer_unwinder_unittest.cc", 154 "perf_producer_unittest.cc", 155 "unwind_queue_unittest.cc", 156 ] 157} 158