blob: f07f3fbaf630d29f7e54cb4f2dfe6efbfc998a15 [file] [log] [blame]
Primiano Tucci3faad742018-05-16 19:30:48 +01001# Copyright (C) 2018 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
Siddhartha S305a5012019-03-29 09:33:00 -070015import("../../gn/fuzzer.gni")
Primiano Tucci3faad742018-05-16 19:30:48 +010016import("../../gn/perfetto.gni")
Lalit Maganti2939c082021-03-11 17:25:44 +000017import("../../gn/perfetto_cc_proto_descriptor.gni")
Primiano Tuccid0001c32019-09-08 22:45:58 -070018import("../../gn/perfetto_host_executable.gni")
Primiano Tucci02c11762019-08-30 00:57:59 +020019import("../../gn/test.gni")
Primiano Tucci3faad742018-05-16 19:30:48 +010020import("../../gn/wasm.gni")
21
Primiano Tucci02c11762019-08-30 00:57:59 +020022# Prevent that this file is accidentally included in embedder builds.
23assert(enable_perfetto_trace_processor)
24
Hector Dearman2d795662018-08-29 16:16:55 +010025# The library which eases processing of Perfetto traces by exposing reading
26# friendly APIs.
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +000027if (enable_perfetto_trace_processor_sqlite) {
28 static_library("trace_processor") {
29 complete_static_lib = true
Ryan7ad6b7d2021-04-22 17:03:54 +010030 public_deps = [ ":lib" ]
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +000031 }
Hector Dearman2d795662018-08-29 16:16:55 +010032}
33
Primiano Tuccia36cccc2019-10-27 13:15:04 +010034if (enable_perfetto_ui) {
35 wasm_lib("trace_processor_wasm") {
36 name = "trace_processor"
37 deps = [
38 ":lib",
39 "../../gn:default_deps",
40 "../base",
41 "rpc:wasm_bridge",
42 ]
43 }
44}
45
Lalit Maganti427b8332020-05-27 16:09:45 +010046source_set("metatrace") {
47 sources = [
48 "tp_metatrace.cc",
49 "tp_metatrace.h",
50 ]
51 deps = [
52 "../../gn:default_deps",
53 "../../include/perfetto/ext/base",
54 ]
55}
56
Lalit Maganti655adae2020-04-14 21:01:25 +010057source_set("ftrace_descriptors") {
58 sources = [
59 "importers/ftrace/ftrace_descriptors.cc",
60 "importers/ftrace/ftrace_descriptors.h",
61 ]
62 deps = [
63 "../../gn:default_deps",
64 "../../include/perfetto/ext/base:base",
65 "../protozero",
66 ]
67}
68
Mikhail Khokhlov692087e2019-12-11 10:53:45 +000069source_set("storage_minimal") {
Lalit Maganticaed37e2018-06-01 03:03:08 +010070 sources = [
Hector Dearmand8c3d5c2019-08-06 13:28:23 +010071 "forwarding_trace_parser.cc",
72 "forwarding_trace_parser.h",
Lalit Maganti60af4ef2020-04-15 14:27:09 +010073 "importers/default_modules.cc",
74 "importers/default_modules.h",
Mikhail Khokhlovdd1db002019-12-09 16:34:07 +000075 "importers/ftrace/ftrace_module.cc",
Eric Seckleracfe35b2019-10-18 15:50:17 +010076 "importers/ftrace/ftrace_module.h",
Eric Seckler67e15a92020-01-03 13:20:46 +000077 "importers/fuchsia/fuchsia_record.h",
Lalit Maganti6d1f7b52020-02-27 13:16:44 +000078 "importers/fuchsia/fuchsia_trace_utils.h",
Lalit Maganti9d538bd2020-03-12 23:48:16 +000079 "importers/gzip/gzip_utils.cc",
80 "importers/gzip/gzip_utils.h",
Lalit Maganti0bfeb972020-03-14 03:57:30 +000081 "importers/json/json_utils.cc",
82 "importers/json/json_utils.h",
Primiano Tucci50446cb2020-02-14 10:40:23 +000083 "importers/ninja/ninja_log_parser.cc",
84 "importers/ninja/ninja_log_parser.h",
Lalit Magantif7a1a732020-10-12 15:42:34 +010085 "importers/proto/async_track_set_tracker.cc",
86 "importers/proto/async_track_set_tracker.h",
Oystein Eftevaag8e39ed82021-03-30 13:52:58 -070087 "importers/proto/chrome_string_lookup.cc",
88 "importers/proto/chrome_string_lookup.h",
ssid7f0c8592021-03-01 13:35:25 -080089 "importers/proto/chrome_system_probes_module.cc",
90 "importers/proto/chrome_system_probes_module.h",
91 "importers/proto/chrome_system_probes_parser.cc",
92 "importers/proto/chrome_system_probes_parser.h",
Lalit Maganti05819e22020-04-14 21:01:38 +010093 "importers/proto/heap_profile_tracker.cc",
94 "importers/proto/heap_profile_tracker.h",
Sylwester Blaszczyk76aa7002020-11-27 15:48:21 +010095 "importers/proto/memory_tracker_snapshot_module.cc",
96 "importers/proto/memory_tracker_snapshot_module.h",
97 "importers/proto/memory_tracker_snapshot_parser.cc",
98 "importers/proto/memory_tracker_snapshot_parser.h",
Lalit Maganti8532fc92021-03-30 15:48:15 +010099 "importers/proto/metadata_module.cc",
100 "importers/proto/metadata_module.h",
Lalit Maganti05819e22020-04-14 21:01:38 +0100101 "importers/proto/metadata_tracker.cc",
102 "importers/proto/metadata_tracker.h",
Eric Seckler7e9dc312020-01-02 15:17:28 +0000103 "importers/proto/packet_sequence_state.cc",
Eric Seckler771960c2019-10-22 15:37:12 +0100104 "importers/proto/packet_sequence_state.h",
Ryan Savitskic6c7e842021-03-10 14:26:59 +0000105 "importers/proto/perf_sample_tracker.cc",
106 "importers/proto/perf_sample_tracker.h",
Eric Secklerf2de4db2020-02-14 14:17:20 +0000107 "importers/proto/profile_module.cc",
108 "importers/proto/profile_module.h",
109 "importers/proto/profile_packet_utils.cc",
110 "importers/proto/profile_packet_utils.h",
Florian Mayer20d069c2020-08-13 12:24:32 +0100111 "importers/proto/profiler_util.cc",
112 "importers/proto/profiler_util.h",
Mikhail Khokhlov785af542019-12-06 13:45:10 +0000113 "importers/proto/proto_importer_module.cc",
Eric Secklerde589952019-10-17 12:46:07 +0100114 "importers/proto/proto_importer_module.h",
Eric Seckler771960c2019-10-22 15:37:12 +0100115 "importers/proto/proto_incremental_state.h",
Eric Seckler137a4672019-10-24 08:51:14 +0100116 "importers/proto/proto_trace_parser.cc",
117 "importers/proto/proto_trace_parser.h",
Lalit Magantieb63b082020-09-10 14:12:20 +0100118 "importers/proto/proto_trace_reader.cc",
119 "importers/proto/proto_trace_reader.h",
Eric Seckler137a4672019-10-24 08:51:14 +0100120 "importers/proto/proto_trace_tokenizer.cc",
121 "importers/proto/proto_trace_tokenizer.h",
Lalit Maganti05819e22020-04-14 21:01:38 +0100122 "importers/proto/stack_profile_tracker.cc",
123 "importers/proto/stack_profile_tracker.h",
Mikhail Khokhlov4b5de1a2019-12-06 16:33:56 +0000124 "importers/proto/track_event_module.cc",
Eric Secklerde589952019-10-17 12:46:07 +0100125 "importers/proto/track_event_module.h",
Eric Seckler771960c2019-10-22 15:37:12 +0100126 "importers/proto/track_event_parser.cc",
127 "importers/proto/track_event_parser.h",
128 "importers/proto/track_event_tokenizer.cc",
129 "importers/proto/track_event_tokenizer.h",
Lalit Maganti62b741f2020-12-10 18:24:00 +0000130 "importers/proto/track_event_tracker.cc",
131 "importers/proto/track_event_tracker.h",
Lalit Maganticda68652020-04-14 21:01:01 +0100132 "importers/syscalls/syscall_tracker.h",
Lalit Maganti31afb822020-03-05 17:36:57 +0000133 "importers/systrace/systrace_line.h",
Eric Seckler1a2ea132019-10-16 11:35:31 +0100134 "timestamped_trace_piece.h",
Isabelle Taylora0a22972018-08-03 12:06:12 +0100135 "trace_processor_context.cc",
Eric Secklera7870e62019-11-01 10:11:58 +0000136 "trace_processor_storage.cc",
137 "trace_processor_storage_impl.cc",
138 "trace_processor_storage_impl.h",
Primiano Tuccid933d912018-09-04 09:15:07 +0100139 "trace_sorter.cc",
140 "trace_sorter.h",
Lalit Magantidf3e9262018-06-04 17:45:00 +0100141 "virtual_destructors.cc",
Lalit Maganticaed37e2018-06-01 03:03:08 +0100142 ]
143 deps = [
144 "../../gn:default_deps",
Primiano Tuccife502c42019-12-11 01:00:27 +0000145 "../base",
146 "../protozero",
Lalit Maganti9ecfab32019-12-17 17:45:38 +0000147 "containers",
Andrew Shulaevba0a5d12021-01-07 08:44:50 +0000148 "importers:gen_cc_chrome_track_event_descriptor",
Andrew Shulaeve72d1a32021-01-13 12:59:55 +0000149 "importers:gen_cc_track_event_descriptor",
Lalit Maganti1534bb72021-04-23 14:11:26 +0100150 "importers/common",
Sylwester Blaszczyk76aa7002020-11-27 15:48:21 +0100151 "importers/memory_tracker:graph_processor",
Lalit Maganti7010b332020-02-07 10:51:15 +0000152 "storage",
Primiano Tuccife502c42019-12-11 01:00:27 +0000153 "tables",
Lalit Maganti83b53fa2020-01-13 12:55:36 +0000154 "types",
Lalit Magantie7107402020-04-15 13:41:12 +0100155 "util",
156 "util:descriptors",
Alexander Timin97d87852021-05-17 18:01:33 +0000157 "util:interned_message_view",
Alexander Timin5a99b5c2021-05-11 22:48:07 +0000158 "util:proto_to_args_parser",
Primiano Tuccife502c42019-12-11 01:00:27 +0000159 ]
160 public_deps = [
161 "../../include/perfetto/trace_processor:storage",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000162 "../../protos/perfetto/common:zero",
Lalit Maganti295a8612019-05-21 13:57:42 +0100163 "../../protos/perfetto/config:zero",
Primiano Tuccic1678872019-03-20 11:30:54 +0000164 "../../protos/perfetto/trace:zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000165 "../../protos/perfetto/trace/android:zero",
Mikhail Khokhlovdb84f102019-05-24 15:25:47 +0100166 "../../protos/perfetto/trace/chrome:zero",
Primiano Tuccic1678872019-03-20 11:30:54 +0000167 "../../protos/perfetto/trace/ftrace:zero",
Eric Seckler684a4f72019-04-26 14:34:07 +0100168 "../../protos/perfetto/trace/interned_data:zero",
Primiano Tuccib02d8dc2019-06-04 11:46:43 +0100169 "../../protos/perfetto/trace/perfetto:zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000170 "../../protos/perfetto/trace/power:zero",
171 "../../protos/perfetto/trace/profiling:zero",
172 "../../protos/perfetto/trace/ps:zero",
173 "../../protos/perfetto/trace/sys_stats:zero",
Rafal Slawik6d621492020-04-17 12:53:01 +0100174 "../../protos/perfetto/trace/system_info:zero",
Eric Seckler684a4f72019-04-26 14:34:07 +0100175 "../../protos/perfetto/trace/track_event:zero",
Alexander Timin97d87852021-05-17 18:01:33 +0000176 "util:trace_blob_view",
Ioannis Ilkoseff38f52018-10-29 10:37:55 +0000177 ]
Lalit Maganti617deae2020-04-14 21:00:49 +0100178
179 # json_utils optionally depends on jsoncpp.
Eric Seckler03832282020-02-10 19:23:38 +0000180 if (enable_perfetto_trace_processor_json) {
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100181 deps += [ "../../gn:jsoncpp" ]
Primiano Tucci0d72a312018-08-07 14:42:45 +0100182 }
Lalit Maganti617deae2020-04-14 21:00:49 +0100183
184 # gzip_utils optionally depends on zlib.
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000185 if (enable_perfetto_zlib) {
186 deps += [ "../../gn:zlib" ]
Eric Seckleree1cdea2019-10-22 12:13:06 +0100187 }
Lalit Maganticaed37e2018-06-01 03:03:08 +0100188}
189
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000190source_set("storage_full") {
191 sources = [
Lalit Maganti60af4ef2020-04-15 14:27:09 +0100192 "importers/additional_modules.cc",
193 "importers/additional_modules.h",
Mikhail Khokhlov81491b92019-12-19 13:58:22 +0000194 "importers/ftrace/binder_tracker.cc",
195 "importers/ftrace/binder_tracker.h",
Mikhail Khokhlov81491b92019-12-19 13:58:22 +0000196 "importers/ftrace/ftrace_module_impl.cc",
197 "importers/ftrace/ftrace_module_impl.h",
198 "importers/ftrace/ftrace_parser.cc",
199 "importers/ftrace/ftrace_parser.h",
200 "importers/ftrace/ftrace_tokenizer.cc",
201 "importers/ftrace/ftrace_tokenizer.h",
Lalit Maganti697894f2019-12-23 14:32:13 +0000202 "importers/ftrace/rss_stat_tracker.cc",
203 "importers/ftrace/rss_stat_tracker.h",
Mikhail Khokhlov81491b92019-12-19 13:58:22 +0000204 "importers/ftrace/sched_event_tracker.cc",
205 "importers/ftrace/sched_event_tracker.h",
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000206 "importers/fuchsia/fuchsia_record.cc",
207 "importers/fuchsia/fuchsia_trace_parser.cc",
208 "importers/fuchsia/fuchsia_trace_parser.h",
209 "importers/fuchsia/fuchsia_trace_tokenizer.cc",
210 "importers/fuchsia/fuchsia_trace_tokenizer.h",
211 "importers/fuchsia/fuchsia_trace_utils.cc",
Lalit Maganti9d538bd2020-03-12 23:48:16 +0000212 "importers/gzip/gzip_trace_parser.cc",
213 "importers/gzip/gzip_trace_parser.h",
Lalit Maganti0bfeb972020-03-14 03:57:30 +0000214 "importers/json/json_trace_parser.cc",
215 "importers/json/json_trace_parser.h",
216 "importers/json/json_trace_tokenizer.cc",
217 "importers/json/json_trace_tokenizer.h",
218 "importers/json/json_tracker.cc",
219 "importers/json/json_tracker.h",
Mikhail Khokhlov9996d5d2019-12-17 14:43:17 +0000220 "importers/proto/android_probes_module.cc",
221 "importers/proto/android_probes_module.h",
222 "importers/proto/android_probes_parser.cc",
223 "importers/proto/android_probes_parser.h",
Florian Mayer19ce3952020-04-08 15:27:32 +0200224 "importers/proto/android_probes_tracker.cc",
225 "importers/proto/android_probes_tracker.h",
Lalit Maganti3fa30862021-02-03 18:04:30 +0000226 "importers/proto/frame_timeline_event_parser.cc",
227 "importers/proto/frame_timeline_event_parser.h",
Adithya Srinivasan9b2b1d92020-05-26 19:00:33 -0700228 "importers/proto/gpu_event_parser.cc",
229 "importers/proto/gpu_event_parser.h",
Primiano Tucci4e01f632020-06-11 17:03:05 +0100230 "importers/proto/graphics_event_module.cc",
231 "importers/proto/graphics_event_module.h",
Adithya Srinivasan9b2b1d92020-05-26 19:00:33 -0700232 "importers/proto/graphics_frame_event_parser.cc",
233 "importers/proto/graphics_frame_event_parser.h",
Mikhail Khokhlov6146a582019-12-17 17:33:47 +0000234 "importers/proto/heap_graph_module.cc",
235 "importers/proto/heap_graph_module.h",
236 "importers/proto/heap_graph_tracker.cc",
237 "importers/proto/heap_graph_tracker.h",
Mikhail Khokhlov04f6eb72019-12-17 14:33:11 +0000238 "importers/proto/system_probes_module.cc",
239 "importers/proto/system_probes_module.h",
240 "importers/proto/system_probes_parser.cc",
241 "importers/proto/system_probes_parser.h",
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000242 "importers/proto/vulkan_memory_tracker.cc",
243 "importers/proto/vulkan_memory_tracker.h",
Lalit Maganticda68652020-04-14 21:01:01 +0100244 "importers/syscalls/syscall_tracker.cc",
245 "importers/syscalls/syscalls_aarch32.h",
246 "importers/syscalls/syscalls_aarch64.h",
247 "importers/syscalls/syscalls_armeabi.h",
248 "importers/syscalls/syscalls_x86.h",
249 "importers/syscalls/syscalls_x86_64.h",
Lalit Maganti2f0b41d2020-02-27 13:35:39 +0000250 "importers/systrace/systrace_line_parser.cc",
251 "importers/systrace/systrace_line_parser.h",
252 "importers/systrace/systrace_line_tokenizer.cc",
253 "importers/systrace/systrace_line_tokenizer.h",
Mikhail Khokhlov81491b92019-12-19 13:58:22 +0000254 "importers/systrace/systrace_parser.cc",
255 "importers/systrace/systrace_parser.h",
256 "importers/systrace/systrace_trace_parser.cc",
257 "importers/systrace/systrace_trace_parser.h",
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000258 ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000259 public_deps = [ ":storage_minimal" ]
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000260 deps = [
Lalit Maganti655adae2020-04-14 21:01:25 +0100261 ":ftrace_descriptors",
Raymond Chiu1f1ea142019-12-13 16:59:35 -0800262 "../../include/perfetto/ext/base:base",
Mikhail Khokhlov04f6eb72019-12-17 14:33:11 +0000263 "../../include/perfetto/ext/traced:sys_stats_counters",
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000264 "../../protos/perfetto/common:zero",
265 "../../protos/perfetto/trace:zero",
266 "../../protos/perfetto/trace/android:zero",
267 "../../protos/perfetto/trace/gpu:zero",
268 "../../protos/perfetto/trace/interned_data:zero",
269 "../protozero",
Lalit Maganti1534bb72021-04-23 14:11:26 +0100270 "importers/common",
Lalit Maganti7010b332020-02-07 10:51:15 +0000271 "storage",
Florian Mayer916c91a2020-07-31 16:38:12 +0100272 "tables",
Lalit Maganti83b53fa2020-01-13 12:55:36 +0000273 "types",
Lalit Maganti1caf3492020-09-10 21:00:08 +0100274 "util",
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000275 ]
276 if (enable_perfetto_trace_processor_json) {
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000277 deps += [ "../../gn:jsoncpp" ]
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000278 }
279}
280
Lalit Maganti0bfeb972020-03-14 03:57:30 +0000281source_set("export_json") {
282 sources = [
283 "export_json.cc",
284 "export_json.h",
285 ]
286 deps = [
287 ":storage_minimal",
288 "../../gn:default_deps",
289 "../base",
290 "storage",
Lalit Maganti0faddc42020-04-10 17:58:24 +0100291 "types",
Lalit Maganti0bfeb972020-03-14 03:57:30 +0000292 ]
293 public_deps = [ "../../include/perfetto/ext/trace_processor:export_json" ]
294 if (enable_perfetto_trace_processor_json) {
295 deps += [ "../../gn:jsoncpp" ]
Eric Secklera7870e62019-11-01 10:11:58 +0000296 }
297}
298
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000299if (enable_perfetto_trace_processor_sqlite) {
300 source_set("lib") {
301 sources = [
Stephen Nuskodd7f6dc2020-11-26 17:04:08 -0500302 "dynamic/ancestor_generator.cc",
303 "dynamic/ancestor_generator.h",
Andrii824107d2020-09-29 10:13:36 +0300304 "dynamic/connected_flow_generator.cc",
305 "dynamic/connected_flow_generator.h",
Stephen Nusko2b8d8092020-07-02 13:24:30 +0100306 "dynamic/descendant_slice_generator.cc",
307 "dynamic/descendant_slice_generator.h",
Lalit Maganti1f4712b2020-04-14 21:01:13 +0100308 "dynamic/describe_slice_generator.cc",
309 "dynamic/describe_slice_generator.h",
Ryanddeb3b12021-04-12 15:55:17 +0100310 "dynamic/experimental_annotated_stack_generator.cc",
311 "dynamic/experimental_annotated_stack_generator.h",
Lalit Maganti1f4712b2020-04-14 21:01:13 +0100312 "dynamic/experimental_counter_dur_generator.cc",
313 "dynamic/experimental_counter_dur_generator.h",
314 "dynamic/experimental_flamegraph_generator.cc",
315 "dynamic/experimental_flamegraph_generator.h",
Lalit Magantic59b1bc2020-07-28 16:36:58 +0100316 "dynamic/experimental_sched_upid_generator.cc",
317 "dynamic/experimental_sched_upid_generator.h",
Hector Dearman5b523762020-04-16 10:36:32 +0100318 "dynamic/experimental_slice_layout_generator.cc",
319 "dynamic/experimental_slice_layout_generator.h",
Lalit Maganti2fc5db22020-08-13 15:02:47 +0100320 "dynamic/thread_state_generator.cc",
321 "dynamic/thread_state_generator.h",
Primiano Tucci4e01f632020-06-11 17:03:05 +0100322 "iterator_impl.cc",
323 "iterator_impl.h",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000324 "read_trace.cc",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000325 "trace_processor.cc",
326 "trace_processor_impl.cc",
327 "trace_processor_impl.h",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000328 ]
Eric Secklera7870e62019-11-01 10:11:58 +0000329
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000330 deps = [
Lalit Maganti0bfeb972020-03-14 03:57:30 +0000331 ":export_json",
Lalit Maganti427b8332020-05-27 16:09:45 +0100332 ":metatrace",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000333 ":storage_full",
334 "../../gn:default_deps",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000335 "../../protos/perfetto/trace/ftrace:zero",
336 "../base",
Lalit Maganti1caf3492020-09-10 21:00:08 +0100337 "../protozero",
Lalit Maganti97d7d472020-04-07 18:49:17 +0100338 "analysis",
Lalit Maganti1534bb72021-04-23 14:11:26 +0100339 "db",
340 "importers/common",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000341 "metrics:lib",
342 "sqlite",
Lalit Maganti7010b332020-02-07 10:51:15 +0000343 "storage",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000344 "tables",
345 "types",
Lalit Maganti1272d4c2020-08-28 14:14:10 +0100346 "util",
Deepanjan Roy1e048012020-09-23 12:49:04 -0400347 "util:protozero_to_text",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000348 ]
Primiano Tucci4079d1d2020-06-30 11:03:38 +0100349 public_deps = [
350 "../../gn:sqlite", # iterator_impl.h includes sqlite3.h.
351 "../../include/perfetto/trace_processor",
352 ]
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000353 if (enable_perfetto_trace_processor_json) {
Lalit Maganti0bfeb972020-03-14 03:57:30 +0000354 deps += [ "../../gn:jsoncpp" ]
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000355 }
Eric Secklera7870e62019-11-01 10:11:58 +0000356 }
Eric Secklera7870e62019-11-01 10:11:58 +0000357
Lalit Magantie0986f32020-09-17 15:35:47 +0100358 executable("trace_processor_shell") {
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000359 deps = [
360 ":lib",
361 "../../gn:default_deps",
Lalit Magantia97798d2020-09-16 17:40:57 +0100362 "../../gn:protobuf_full",
Florian Mayerf4255a42020-12-14 19:12:34 +0000363 "../../src/profiling:deobfuscator",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000364 "../../src/profiling/symbolizer",
365 "../../src/profiling/symbolizer:symbolize_database",
366 "../base",
367 "metrics:lib",
Lalit Maganti2ae24642020-04-16 13:14:17 +0100368 "util",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000369 ]
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000370 if (enable_perfetto_trace_processor_linenoise) {
371 deps += [ "../../gn:linenoise" ]
372 }
373 if (enable_perfetto_trace_processor_httpd) {
374 deps += [ "rpc:httpd" ]
375 }
376 sources = [
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000377 "trace_processor_shell.cc",
Lalit Maganti3d9bbff2020-04-15 13:40:58 +0100378 "util/proto_to_json.cc",
379 "util/proto_to_json.h",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000380 ]
Lalit Maganti3fa30862021-02-03 18:04:30 +0000381 if (perfetto_build_standalone && !is_perfetto_build_generator) {
382 data_deps = [
383 # The diff testing framework depends on these descriptors.
384 "../../protos/perfetto/metrics:descriptor",
385 "../../protos/perfetto/trace:descriptor",
386 "../../protos/perfetto/trace:test_extensions_descriptor",
387 ]
388 }
Eric Secklerc622b8b2019-10-21 09:54:00 +0100389 }
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000390} # if (enable_perfetto_trace_processor_sqlite)
Primiano Tucci5968caf2018-08-06 10:31:46 +0100391
Primiano Tucci02c11762019-08-30 00:57:59 +0200392perfetto_unittest_source_set("unittests") {
Lalit Maganticaed37e2018-06-01 03:03:08 +0100393 testonly = true
Lalit Maganti93b76362018-06-01 03:03:58 +0100394 sources = [
Hector Dearmand8c3d5c2019-08-06 13:28:23 +0100395 "forwarding_trace_parser_unittest.cc",
Lalit Maganticcdcbae2020-04-15 14:31:40 +0100396 "importers/ftrace/sched_event_tracker_unittest.cc",
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000397 "importers/fuchsia/fuchsia_trace_utils_unittest.cc",
Sylwester Blaszczyk0430ce82020-08-07 16:00:51 +0200398 "importers/memory_tracker/graph_processor_unittest.cc",
399 "importers/memory_tracker/graph_unittest.cc",
400 "importers/memory_tracker/raw_process_memory_node_unittest.cc",
Lalit Maganti8021d0a2020-12-07 17:41:34 +0000401 "importers/proto/async_track_set_tracker_unittest.cc",
Florian Mayerc9bb0472020-01-17 11:29:59 +0000402 "importers/proto/heap_graph_tracker_unittest.cc",
Lalit Maganti05819e22020-04-14 21:01:38 +0100403 "importers/proto/heap_profile_tracker_unittest.cc",
Ryan Savitskic6c7e842021-03-10 14:26:59 +0000404 "importers/proto/perf_sample_tracker_unittest.cc",
Eric Seckler137a4672019-10-24 08:51:14 +0100405 "importers/proto/proto_trace_parser_unittest.cc",
Lalit Maganticda68652020-04-14 21:01:01 +0100406 "importers/syscalls/syscall_tracker_unittest.cc",
Eric Secklerd8b52082019-10-17 15:58:38 +0100407 "importers/systrace/systrace_parser_unittest.cc",
Primiano Tuccid933d912018-09-04 09:15:07 +0100408 "trace_sorter_unittest.cc",
Lalit Maganti93b76362018-06-01 03:03:58 +0100409 ]
Lalit Maganticaed37e2018-06-01 03:03:08 +0100410 deps = [
Lalit Maganti2939c082021-03-11 17:25:44 +0000411 ":gen_cc_test_messages_descriptor",
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000412 ":storage_full",
Lalit Maganticaed37e2018-06-01 03:03:08 +0100413 "../../gn:default_deps",
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100414 "../../gn:gtest_and_gmock",
Ryan Savitskic6c7e842021-03-10 14:26:59 +0000415 "../../protos/perfetto/common:cpp",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000416 "../../protos/perfetto/common:zero",
Ryan Savitskic6c7e842021-03-10 14:26:59 +0000417 "../../protos/perfetto/trace:cpp",
Primiano Tucci355b8c82019-08-29 08:37:51 +0200418 "../../protos/perfetto/trace:minimal_zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000419 "../../protos/perfetto/trace:zero",
Ryan Savitski0476ee92019-07-09 14:29:33 +0100420 "../../protos/perfetto/trace/android:zero",
Mikhail Khokhlovdb84f102019-05-24 15:25:47 +0100421 "../../protos/perfetto/trace/chrome:zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000422 "../../protos/perfetto/trace/ftrace:zero",
Raymond Chiu994a35d2019-06-12 16:37:26 -0700423 "../../protos/perfetto/trace/gpu:zero",
Eric Seckler56a007d2019-05-02 16:25:14 +0100424 "../../protos/perfetto/trace/interned_data:zero",
Ryan Savitskic6c7e842021-03-10 14:26:59 +0000425 "../../protos/perfetto/trace/profiling:cpp",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000426 "../../protos/perfetto/trace/ps:zero",
427 "../../protos/perfetto/trace/sys_stats:zero",
Eric Seckler56a007d2019-05-02 16:25:14 +0100428 "../../protos/perfetto/trace/track_event:zero",
Lalit Magantidf3e9262018-06-04 17:45:00 +0100429 "../base",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000430 "../protozero",
Stephen Nuskobc76a6c2019-12-03 11:55:27 +0000431 "../protozero:testing_messages_zero",
Lalit Maganti2aa88582019-12-17 17:06:49 +0000432 "containers:unittests",
Lalit Maganticf39caa2019-08-21 14:00:08 -0700433 "db:unittests",
Lalit Maganti1534bb72021-04-23 14:11:26 +0100434 "importers/common",
435 "importers/common:unittests",
Sylwester Blaszczyk0430ce82020-08-07 16:00:51 +0200436 "importers/memory_tracker:graph_processor",
Primiano Tucci4079d1d2020-06-30 11:03:38 +0100437 "rpc:unittests",
Lalit Maganti7010b332020-02-07 10:51:15 +0000438 "storage",
Lalit Maganti6dc35462019-08-29 13:24:07 +0100439 "tables:unittests",
Lalit Maganti0faddc42020-04-10 17:58:24 +0100440 "types",
Lalit Maganti616bc082020-04-09 19:03:12 +0100441 "types:unittests",
Alexander Timin5a99b5c2021-05-11 22:48:07 +0000442 "util:descriptors",
Lalit Magantie7107402020-04-15 13:41:12 +0100443 "util:unittests",
Lalit Maganticaed37e2018-06-01 03:03:08 +0100444 ]
Mikhail Khokhlov2bcfb352019-12-20 10:19:58 +0000445
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000446 if (enable_perfetto_trace_processor_sqlite) {
Hector Dearman5b523762020-04-16 10:36:32 +0100447 sources += [
448 "dynamic/experimental_counter_dur_generator_unittest.cc",
449 "dynamic/experimental_slice_layout_generator_unittest.cc",
Lalit Maganti2fc5db22020-08-13 15:02:47 +0100450 "dynamic/thread_state_generator_unittest.cc",
Hector Dearman5b523762020-04-16 10:36:32 +0100451 ]
Lalit Magantib30edd42020-02-10 13:31:09 -0500452 deps += [
453 ":lib",
Eric Secklerc7b6ede2020-02-11 07:49:28 +0000454 "../../gn:sqlite",
Lalit Magantib30edd42020-02-10 13:31:09 -0500455 "sqlite:unittests",
456 ]
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000457 }
458
Primiano Tucci02c11762019-08-30 00:57:59 +0200459 if (enable_perfetto_trace_processor_json) {
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000460 sources += [
461 "importers/json/json_trace_tokenizer_unittest.cc",
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000462 "importers/json/json_tracker_unittest.cc",
Lalit Maganti0bfeb972020-03-14 03:57:30 +0000463 "importers/json/json_utils_unittest.cc",
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000464 ]
465 deps += [ "../../gn:jsoncpp" ]
466
Primiano Tucci5e96c4e2019-09-02 23:24:26 +0100467 if (!is_win) {
468 # export_json_unittest.cc uses base::TempFile, which is not supported on
469 # windows.
470 sources += [ "export_json_unittest.cc" ]
Eric Secklera7870e62019-11-01 10:11:58 +0000471 deps += [
472 ":export_json",
473 "../../include/perfetto/ext/trace_processor:export_json",
474 ]
Primiano Tucci5e96c4e2019-09-02 23:24:26 +0100475 }
Hector Dearmane690b2d2018-11-14 10:57:02 +0000476 }
Lalit Maganticaed37e2018-06-01 03:03:08 +0100477}
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100478
Lalit Maganti2939c082021-03-11 17:25:44 +0000479perfetto_cc_proto_descriptor("gen_cc_test_messages_descriptor") {
480 descriptor_name = "test_messages.descriptor"
481 descriptor_target = "../protozero:test_messages_descriptor"
482}
483
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100484source_set("integrationtests") {
485 testonly = true
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000486 sources = []
487 deps = []
488 if (enable_perfetto_trace_processor_sqlite) {
Lalit Maganti9d538bd2020-03-12 23:48:16 +0000489 sources += [
490 "read_trace_integrationtest.cc",
491 "trace_database_integrationtest.cc",
492 ]
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000493 deps += [
494 ":lib",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000495 "../../gn:default_deps",
496 "../../gn:gtest_and_gmock",
Deepanjan Roy77747772020-09-01 15:10:33 -0400497 "../../protos/perfetto/common:zero",
Lalit Maganti9d538bd2020-03-12 23:48:16 +0000498 "../../protos/perfetto/trace:zero",
Deepanjan Roy77747772020-09-01 15:10:33 -0400499 "../../protos/perfetto/trace_processor:zero",
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000500 "../base",
501 "../base:test_support",
502 "sqlite",
503 ]
Lalit Maganti6d1f7b52020-02-27 13:16:44 +0000504 if (enable_perfetto_trace_processor_json) {
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000505 deps += [ "../../gn:jsoncpp" ]
506 }
Deepanjan Roy01994ca2019-04-02 11:05:34 -0700507 }
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100508}
Hector Dearman59bc02d2019-02-21 17:28:11 +0000509
Mikhail Khokhlov90f09f62019-12-17 12:53:51 +0000510if (enable_perfetto_trace_processor_json) {
511 source_set("storage_minimal_smoke_tests") {
512 testonly = true
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000513 sources = [ "storage_minimal_smoke_test.cc" ]
Mikhail Khokhlov90f09f62019-12-17 12:53:51 +0000514 deps = [
515 ":export_json",
516 ":storage_minimal",
517 "../../gn:default_deps",
518 "../../gn:gtest_and_gmock",
519 "../../gn:gtest_main",
520 "../../gn:jsoncpp",
521 "../base:test_support",
522 ]
523 }
524}
525
Hector Dearman59bc02d2019-02-21 17:28:11 +0000526perfetto_fuzzer_test("trace_processor_fuzzer") {
527 testonly = true
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000528 sources = [ "trace_parsing_fuzzer.cc" ]
Hector Dearman59bc02d2019-02-21 17:28:11 +0000529 deps = [
Mikhail Khokhlov692087e2019-12-11 10:53:45 +0000530 ":storage_full",
Hector Dearman59bc02d2019-02-21 17:28:11 +0000531 "../../gn:default_deps",
Hector Dearman59bc02d2019-02-21 17:28:11 +0000532 "../base",
Hector Dearman59bc02d2019-02-21 17:28:11 +0000533 ]
534}