blob: 47b1e57b61ccd034b22761eb16c998803cf19142 [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")
17import("../../gn/wasm.gni")
18
Mikhail Khokhlova45a95e2019-05-29 13:52:32 +010019if (perfetto_build_standalone) {
20 wasm_lib("trace_processor_wasm") {
21 name = "trace_processor"
22 sources = [
23 "wasm_bridge.cc",
24 ]
Primiano Tucci3faad742018-05-16 19:30:48 +010025
Mikhail Khokhlova45a95e2019-05-29 13:52:32 +010026 # All the deps below are implicitly xxx($wasm_toolchain) because of the
27 # outer "is_wasm" block.
28 deps = [
29 ":lib",
Mikhail Khokhlova45a95e2019-05-29 13:52:32 +010030 "../../gn:default_deps",
Primiano Tucci2c5488f2019-06-01 03:27:28 +010031 "../../include/perfetto/ext/base",
Mikhail Khokhlova45a95e2019-05-29 13:52:32 +010032 "../../protos/perfetto/trace_processor:lite",
33 ]
34 }
Primiano Tucci3faad742018-05-16 19:30:48 +010035}
Lalit Maganticaed37e2018-06-01 03:03:08 +010036
Hector Dearman2d795662018-08-29 16:16:55 +010037# The library which eases processing of Perfetto traces by exposing reading
38# friendly APIs.
39static_library("trace_processor") {
Primiano Tucci885fda02019-06-01 02:05:36 +010040 complete_static_lib = true
Hector Dearman2d795662018-08-29 16:16:55 +010041 deps = [
42 ":lib",
43 ]
44}
45
Lalit Maganticaed37e2018-06-01 03:03:08 +010046source_set("lib") {
47 sources = [
Primiano Tucci2c761ef2019-01-07 20:20:46 +000048 "android_logs_table.cc",
49 "android_logs_table.h",
Lalit Maganti6e9c55e2018-11-29 12:00:39 +000050 "args_table.cc",
51 "args_table.h",
Lalit Maganti4fa7c6c2019-02-06 15:06:36 +000052 "args_tracker.cc",
53 "args_tracker.h",
Primiano Tuccid933d912018-09-04 09:15:07 +010054 "chunked_trace_reader.h",
Primiano Tuccia270f012019-01-07 20:01:00 +000055 "clock_tracker.cc",
56 "clock_tracker.h",
Lalit Maganti8320e6d2019-03-14 18:49:33 +000057 "counter_definitions_table.cc",
58 "counter_definitions_table.h",
59 "counter_values_table.cc",
60 "counter_values_table.h",
Isabelle Taylora97c5f52018-10-23 17:36:12 +010061 "event_tracker.cc",
62 "event_tracker.h",
Lalit Maganti6c64a352018-12-04 12:02:24 +000063 "filtered_row_index.cc",
64 "filtered_row_index.h",
Hector Dearmand8c3d5c2019-08-06 13:28:23 +010065 "forwarding_trace_parser.cc",
66 "forwarding_trace_parser.h",
Isabelle Taylorcfc8eba2018-12-16 21:02:56 +000067 "ftrace_descriptors.cc",
68 "ftrace_descriptors.h",
Lalit Maganti8ed3bf62019-01-17 14:47:49 +000069 "ftrace_utils.cc",
70 "ftrace_utils.h",
Brian Hamrickd57e1332019-04-24 11:25:36 -070071 "fuchsia_provider_view.cc",
72 "fuchsia_provider_view.h",
73 "fuchsia_trace_parser.cc",
74 "fuchsia_trace_parser.h",
75 "fuchsia_trace_tokenizer.cc",
76 "fuchsia_trace_tokenizer.h",
77 "fuchsia_trace_utils.cc",
78 "fuchsia_trace_utils.h",
Mikael Pessa7160ccc2019-07-25 11:19:26 -070079 "graphics_frame_event_parser.cc",
80 "graphics_frame_event_parser.h",
Hector Dearman22f1de52019-06-04 18:11:45 +010081 "gzip_trace_parser.cc",
82 "gzip_trace_parser.h",
Lalit Maganti9b2d52b2019-05-07 14:32:15 +010083 "heap_profile_allocation_table.cc",
84 "heap_profile_allocation_table.h",
Florian Mayer438b5ab2019-05-02 11:18:06 +010085 "heap_profile_tracker.cc",
86 "heap_profile_tracker.h",
Isabelle Taylorc8c11202018-11-05 11:36:22 +000087 "instants_table.cc",
88 "instants_table.h",
Mikhail Khokhlove466c002019-05-23 13:33:33 +010089 "metadata.h",
90 "metadata_table.cc",
91 "metadata_table.h",
Lalit Magantibd9ba162019-03-29 20:34:47 +000092 "null_term_string_view.h",
Isabelle Taylore7003fb2018-07-17 11:39:01 +010093 "process_table.cc",
94 "process_table.h",
Isabelle Taylora0a22972018-08-03 12:06:12 +010095 "process_tracker.cc",
96 "process_tracker.h",
Lalit Magantic50e1422019-04-29 14:23:25 +010097 "proto_incremental_state.h",
Primiano Tucci0d72a312018-08-07 14:42:45 +010098 "proto_trace_parser.cc",
99 "proto_trace_parser.h",
Primiano Tuccid933d912018-09-04 09:15:07 +0100100 "proto_trace_tokenizer.cc",
101 "proto_trace_tokenizer.h",
Isabelle Taylord3f590e2019-01-08 17:21:23 +0000102 "raw_table.cc",
103 "raw_table.h",
Lalit Magantiacda68b2018-10-29 15:23:25 +0000104 "row_iterators.cc",
105 "row_iterators.h",
Lalit Maganti3c13eaf2018-06-11 18:48:19 +0100106 "sched_slice_table.cc",
107 "sched_slice_table.h",
Primiano Tucci0d72a312018-08-07 14:42:45 +0100108 "slice_table.cc",
109 "slice_table.h",
Hector Dearman947f12a2018-09-11 16:50:36 +0100110 "slice_tracker.cc",
111 "slice_tracker.h",
Lalit Maganti95693bb2018-11-05 16:20:24 +0000112 "span_join_operator_table.cc",
113 "span_join_operator_table.h",
Primiano Tucci5cb84f82018-10-31 21:46:36 -0700114 "sql_stats_table.cc",
115 "sql_stats_table.h",
Oystein Eftevaag5419c582019-08-21 13:58:49 -0700116 "stack_profile_callsite_table.cc",
117 "stack_profile_callsite_table.h",
118 "stack_profile_frame_table.cc",
119 "stack_profile_frame_table.h",
120 "stack_profile_mapping_table.cc",
121 "stack_profile_mapping_table.h",
122 "stack_profile_tracker.cc",
123 "stack_profile_tracker.h",
Lalit Maganti20d04952019-01-08 13:52:13 +0000124 "stats.h",
Lalit Maganti05e8c132018-11-09 18:16:12 +0000125 "stats_table.cc",
126 "stats_table.h",
Lalit Magantic8155342018-12-05 13:00:45 +0000127 "storage_columns.cc",
128 "storage_columns.h",
Lalit Magantiacda68b2018-10-29 15:23:25 +0000129 "storage_schema.cc",
130 "storage_schema.h",
Lalit Magantid4766812018-12-11 15:52:17 +0000131 "storage_table.cc",
132 "storage_table.h",
Lalit Maganti8eba3092019-03-27 13:25:29 +0000133 "string_pool.cc",
134 "string_pool.h",
Hector Dearmanf31a7032019-03-29 10:05:09 +0000135 "syscall_tracker.cc",
136 "syscall_tracker.h",
Lalit Maganti5e60c652019-04-15 19:55:07 +0100137 "syscalls_aarch32.h",
138 "syscalls_aarch64.h",
139 "syscalls_armeabi.h",
140 "syscalls_x86_64.h",
Lalit Magantid33dc272019-06-06 14:51:45 +0100141 "systrace_parser.cc",
142 "systrace_parser.h",
Lalit Magantid54d7522019-05-30 14:36:08 +0100143 "systrace_trace_parser.cc",
144 "systrace_trace_parser.h",
Isabelle Taylorda551622018-07-17 11:48:53 +0100145 "thread_table.cc",
146 "thread_table.h",
Primiano Tuccid933d912018-09-04 09:15:07 +0100147 "trace_blob_view.h",
Deepanjan Roy01994ca2019-04-02 11:05:34 -0700148 "trace_parser.h",
Isabelle Taylora0a22972018-08-03 12:06:12 +0100149 "trace_processor.cc",
Isabelle Taylora0a22972018-08-03 12:06:12 +0100150 "trace_processor_context.cc",
151 "trace_processor_context.h",
Ioannis Ilkoseff38f52018-10-29 10:37:55 +0000152 "trace_processor_impl.cc",
153 "trace_processor_impl.h",
Primiano Tuccid933d912018-09-04 09:15:07 +0100154 "trace_sorter.cc",
155 "trace_sorter.h",
Lalit Maganticaed37e2018-06-01 03:03:08 +0100156 "trace_storage.cc",
157 "trace_storage.h",
Lalit Maganticdd69c92019-08-23 17:30:53 -0700158 "track_table.cc",
159 "track_table.h",
Mikhail Khokhlov85a0dd02019-05-17 14:22:28 +0100160 "variadic.h",
Lalit Magantidf3e9262018-06-04 17:45:00 +0100161 "virtual_destructors.cc",
Eric Seckler5703ede2019-07-10 10:13:02 +0100162 "virtual_track_tracker.cc",
163 "virtual_track_tracker.h",
Lalit Magantif4588fc2018-09-24 14:14:49 +0100164 "window_operator_table.cc",
165 "window_operator_table.h",
Lalit Maganticaed37e2018-06-01 03:03:08 +0100166 ]
Primiano Tuccic1678872019-03-20 11:30:54 +0000167
Lalit Maganticaed37e2018-06-01 03:03:08 +0100168 deps = [
169 "../../gn:default_deps",
Lalit Maganti737b3762019-08-26 13:46:37 -0700170 "../../gn:sqlite",
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100171 "../../gn:zlib",
Primiano Tucci2c5488f2019-06-01 03:27:28 +0100172 "../../include/perfetto/ext/traced:sys_stats_counters",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000173 "../../protos/perfetto/common:zero",
Lalit Maganti295a8612019-05-21 13:57:42 +0100174 "../../protos/perfetto/config:zero",
Lalit Maganti26f69bd2019-04-29 18:23:47 +0100175 "../../protos/perfetto/metrics:zero",
176 "../../protos/perfetto/metrics/android:zero",
Primiano Tuccic1678872019-03-20 11:30:54 +0000177 "../../protos/perfetto/trace:zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000178 "../../protos/perfetto/trace/android:zero",
Mikhail Khokhlovdb84f102019-05-24 15:25:47 +0100179 "../../protos/perfetto/trace/chrome:zero",
Primiano Tuccic1678872019-03-20 11:30:54 +0000180 "../../protos/perfetto/trace/ftrace:zero",
Raymond Chiu994a35d2019-06-12 16:37:26 -0700181 "../../protos/perfetto/trace/gpu:zero",
Eric Seckler684a4f72019-04-26 14:34:07 +0100182 "../../protos/perfetto/trace/interned_data:zero",
Primiano Tuccib02d8dc2019-06-04 11:46:43 +0100183 "../../protos/perfetto/trace/perfetto:zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000184 "../../protos/perfetto/trace/power:zero",
185 "../../protos/perfetto/trace/profiling:zero",
186 "../../protos/perfetto/trace/ps:zero",
187 "../../protos/perfetto/trace/sys_stats:zero",
Eric Seckler684a4f72019-04-26 14:34:07 +0100188 "../../protos/perfetto/trace/track_event:zero",
Lalit Maganti93b76362018-06-01 03:03:58 +0100189 "../base",
Lalit Magantidf3e9262018-06-04 17:45:00 +0100190 "../protozero",
Lalit Maganticf39caa2019-08-21 14:00:08 -0700191 "db:lib",
Lalit Maganti622676a2019-04-30 14:15:37 +0100192 "metrics:lib",
Lalit Maganti737b3762019-08-26 13:46:37 -0700193 "sqlite",
Lalit Maganticaed37e2018-06-01 03:03:08 +0100194 ]
Ioannis Ilkoseff38f52018-10-29 10:37:55 +0000195 public_deps = [
196 "../../include/perfetto/trace_processor",
197 ]
Mikhail Khokhlov291595d2019-06-05 13:37:28 +0100198 if (perfetto_build_standalone || build_with_chromium) {
Primiano Tucci0d72a312018-08-07 14:42:45 +0100199 sources += [
Mikhail Khokhlova8d310d2019-05-07 17:34:21 +0100200 "export_json.cc",
201 "export_json.h",
Primiano Tucci0d72a312018-08-07 14:42:45 +0100202 "json_trace_parser.cc",
203 "json_trace_parser.h",
Deepanjan Roy01994ca2019-04-02 11:05:34 -0700204 "json_trace_tokenizer.cc",
205 "json_trace_tokenizer.h",
206 "json_trace_utils.cc",
207 "json_trace_utils.h",
Primiano Tucci0d72a312018-08-07 14:42:45 +0100208 ]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100209 deps += [ "../../gn:jsoncpp" ]
Primiano Tucci0d72a312018-08-07 14:42:45 +0100210 }
Lalit Maganticaed37e2018-06-01 03:03:08 +0100211}
212
Lalit Magantiedace412019-06-18 13:28:28 +0100213source_set("trace_processor_shell") {
214 testonly = true # We need this for proto full.
215 deps = [
216 ":lib",
217 "../../gn:default_deps",
218 "../../gn:protobuf_full",
219 "../base",
220 "metrics:lib",
221 ]
222 if (perfetto_build_standalone) {
223 deps += [
224 "../../gn:linenoise",
225 "../../gn/standalone:gen_git_revision",
Primiano Tuccib2ea4d42018-08-21 15:05:13 +0200226 ]
227 }
Primiano Tuccib2ea4d42018-08-21 15:05:13 +0200228
Lalit Magantiedace412019-06-18 13:28:28 +0100229 sources = [
Lalit Maganti25863f72019-08-28 22:14:25 +0100230 "proto_to_json.cc",
231 "proto_to_json.h",
Lalit Magantiedace412019-06-18 13:28:28 +0100232 "trace_processor_shell.cc",
233 ]
Primiano Tucci5968caf2018-08-06 10:31:46 +0100234}
235
Lalit Maganticaed37e2018-06-01 03:03:08 +0100236source_set("unittests") {
237 testonly = true
Lalit Maganti93b76362018-06-01 03:03:58 +0100238 sources = [
Mikhail Khokhlov85a0dd02019-05-17 14:22:28 +0100239 "args_table_unittest.cc",
Primiano Tuccia270f012019-01-07 20:01:00 +0000240 "clock_tracker_unittest.cc",
Isabelle Taylora97c5f52018-10-23 17:36:12 +0100241 "event_tracker_unittest.cc",
Lalit Maganti6c64a352018-12-04 12:02:24 +0000242 "filtered_row_index_unittest.cc",
Hector Dearmand8c3d5c2019-08-06 13:28:23 +0100243 "forwarding_trace_parser_unittest.cc",
Lalit Maganti8ed3bf62019-01-17 14:47:49 +0000244 "ftrace_utils_unittest.cc",
Brian Hamrick8ce2fa12019-06-14 11:03:35 -0700245 "fuchsia_trace_utils_unittest.cc",
Florian Mayer438b5ab2019-05-02 11:18:06 +0100246 "heap_profile_tracker_unittest.cc",
Mikhail Khokhlove466c002019-05-23 13:33:33 +0100247 "metadata_table_unittest.cc",
Lalit Maganti8eba3092019-03-27 13:25:29 +0000248 "null_term_string_view_unittest.cc",
Isabelle Taylore7003fb2018-07-17 11:39:01 +0100249 "process_table_unittest.cc",
Isabelle Taylora0a22972018-08-03 12:06:12 +0100250 "process_tracker_unittest.cc",
Primiano Tucci0d72a312018-08-07 14:42:45 +0100251 "proto_trace_parser_unittest.cc",
Lalit Maganti3c13eaf2018-06-11 18:48:19 +0100252 "sched_slice_table_unittest.cc",
Hector Dearman947f12a2018-09-11 16:50:36 +0100253 "slice_tracker_unittest.cc",
Lalit Maganti95693bb2018-11-05 16:20:24 +0000254 "span_join_operator_table_unittest.cc",
Lalit Maganti8eba3092019-03-27 13:25:29 +0000255 "string_pool_unittest.cc",
Hector Dearmanf31a7032019-03-29 10:05:09 +0000256 "syscall_tracker_unittest.cc",
Lalit Magantid33dc272019-06-06 14:51:45 +0100257 "systrace_parser_unittest.cc",
Isabelle Taylorda551622018-07-17 11:48:53 +0100258 "thread_table_unittest.cc",
Primiano Tuccid933d912018-09-04 09:15:07 +0100259 "trace_sorter_unittest.cc",
Lalit Maganti93b76362018-06-01 03:03:58 +0100260 ]
Lalit Maganticaed37e2018-06-01 03:03:08 +0100261 deps = [
262 ":lib",
263 "../../gn:default_deps",
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100264 "../../gn:gtest_and_gmock",
Lalit Maganti737b3762019-08-26 13:46:37 -0700265 "../../gn:sqlite",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000266 "../../protos/perfetto/common:zero",
267 "../../protos/perfetto/trace:zero",
Ryan Savitski0476ee92019-07-09 14:29:33 +0100268 "../../protos/perfetto/trace/android:zero",
Mikhail Khokhlovdb84f102019-05-24 15:25:47 +0100269 "../../protos/perfetto/trace/chrome:zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000270 "../../protos/perfetto/trace/ftrace:zero",
Raymond Chiu994a35d2019-06-12 16:37:26 -0700271 "../../protos/perfetto/trace/gpu:zero",
Eric Seckler56a007d2019-05-02 16:25:14 +0100272 "../../protos/perfetto/trace/interned_data:zero",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000273 "../../protos/perfetto/trace/ps:zero",
274 "../../protos/perfetto/trace/sys_stats:zero",
Eric Seckler56a007d2019-05-02 16:25:14 +0100275 "../../protos/perfetto/trace/track_event:zero",
Lalit Magantidf3e9262018-06-04 17:45:00 +0100276 "../base",
Primiano Tuccie5f11682019-03-22 07:21:49 +0000277 "../protozero",
Lalit Maganticf39caa2019-08-21 14:00:08 -0700278 "db:unittests",
Lalit Maganti737b3762019-08-26 13:46:37 -0700279 "sqlite",
280 "sqlite:unittests",
Lalit Maganticaed37e2018-06-01 03:03:08 +0100281 ]
Mikhail Khokhlov291595d2019-06-05 13:37:28 +0100282 if (perfetto_build_standalone || build_with_chromium) {
Hector Dearmanfcbc5e22019-04-08 13:12:28 +0100283 sources += [
Mikhail Khokhlova8d310d2019-05-07 17:34:21 +0100284 "export_json_unittest.cc",
Hector Dearmanfcbc5e22019-04-08 13:12:28 +0100285 "json_trace_tokenizer_unittest.cc",
286 "json_trace_utils_unittest.cc",
287 ]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100288 deps += [ "../../gn:jsoncpp" ]
Hector Dearmane690b2d2018-11-14 10:57:02 +0000289 }
Lalit Maganticaed37e2018-06-01 03:03:08 +0100290}
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100291
292source_set("integrationtests") {
293 testonly = true
294 sources = [
295 "trace_database_integrationtest.cc",
296 ]
297 deps = [
298 ":lib",
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100299 "../../gn:default_deps",
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100300 "../../gn:gtest_and_gmock",
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100301 "../../protos/perfetto/trace:lite",
Primiano Tucci7e330292018-08-24 19:10:52 +0200302 "../../protos/perfetto/trace_processor:lite",
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100303 "../base",
304 "../base:test_support",
Lalit Maganti737b3762019-08-26 13:46:37 -0700305 "sqlite",
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100306 ]
Mikhail Khokhlov291595d2019-06-05 13:37:28 +0100307 if (perfetto_build_standalone || build_with_chromium) {
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100308 deps += [ "../../gn:jsoncpp" ]
Deepanjan Roy01994ca2019-04-02 11:05:34 -0700309 }
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100310}
Hector Dearman59bc02d2019-02-21 17:28:11 +0000311
312perfetto_fuzzer_test("trace_processor_fuzzer") {
313 testonly = true
314 sources = [
315 "trace_parsing_fuzzer.cc",
316 ]
317 deps = [
318 ":lib",
Hector Dearman59bc02d2019-02-21 17:28:11 +0000319 "../../gn:default_deps",
Hector Dearman59bc02d2019-02-21 17:28:11 +0000320 "../base",
Hector Dearman59bc02d2019-02-21 17:28:11 +0000321 ]
322}