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