# Copyright (C) 2018 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("../../gn/fuzzer.gni") import("../../gn/perfetto.gni") import("../../gn/wasm.gni") wasm_lib("trace_processor_wasm") { name = "trace_processor" sources = [ "wasm_bridge.cc", ] # All the deps below are implicitly xxx($wasm_toolchain) because of the # outer "is_wasm" block. deps = [ ":lib", "../../buildtools:sqlite", "../../gn:default_deps", "../../include/perfetto/base", "../../protos/perfetto/trace_processor:lite", ] } # The library which eases processing of Perfetto traces by exposing reading # friendly APIs. static_library("trace_processor") { deps = [ ":lib", ] } source_set("lib") { sources = [ "android_logs_table.cc", "android_logs_table.h", "args_table.cc", "args_table.h", "args_tracker.cc", "args_tracker.h", "chunked_trace_reader.h", "clock_tracker.cc", "clock_tracker.h", "counter_definitions_table.cc", "counter_definitions_table.h", "counter_values_table.cc", "counter_values_table.h", "event_tracker.cc", "event_tracker.h", "filtered_row_index.cc", "filtered_row_index.h", "ftrace_descriptors.cc", "ftrace_descriptors.h", "ftrace_utils.cc", "ftrace_utils.h", "fuchsia_provider_view.cc", "fuchsia_provider_view.h", "fuchsia_trace_parser.cc", "fuchsia_trace_parser.h", "fuchsia_trace_tokenizer.cc", "fuchsia_trace_tokenizer.h", "fuchsia_trace_utils.cc", "fuchsia_trace_utils.h", "heap_profile_tracker.cc", "heap_profile_tracker.h", "instants_table.cc", "instants_table.h", "null_term_string_view.h", "process_table.cc", "process_table.h", "process_tracker.cc", "process_tracker.h", "proto_incremental_state.h", "proto_trace_parser.cc", "proto_trace_parser.h", "proto_trace_tokenizer.cc", "proto_trace_tokenizer.h", "query_constraints.cc", "query_constraints.h", "raw_table.cc", "raw_table.h", "row_iterators.cc", "row_iterators.h", "sched_slice_table.cc", "sched_slice_table.h", "scoped_db.h", "slice_table.cc", "slice_table.h", "slice_tracker.cc", "slice_tracker.h", "span_join_operator_table.cc", "span_join_operator_table.h", "sql_stats_table.cc", "sql_stats_table.h", "sqlite3_str_split.cc", "sqlite3_str_split.h", "sqlite_utils.h", "stats.h", "stats_table.cc", "stats_table.h", "storage_columns.cc", "storage_columns.h", "storage_schema.cc", "storage_schema.h", "storage_table.cc", "storage_table.h", "string_pool.cc", "string_pool.h", "string_table.cc", "string_table.h", "syscall_tracker.cc", "syscall_tracker.h", "syscalls_aarch32.h", "syscalls_aarch64.h", "syscalls_armeabi.h", "syscalls_x86_64.h", "table.cc", "table.h", "thread_table.cc", "thread_table.h", "trace_blob_view.h", "trace_parser.h", "trace_processor.cc", "trace_processor_context.cc", "trace_processor_context.h", "trace_processor_impl.cc", "trace_processor_impl.h", "trace_sorter.cc", "trace_sorter.h", "trace_storage.cc", "trace_storage.h", "virtual_destructors.cc", "window_operator_table.cc", "window_operator_table.h", ] deps = [ "../../buildtools:sqlite", "../../gn:default_deps", "../../include/perfetto/traced:sys_stats_counters", "../../protos/perfetto/common:zero", "../../protos/perfetto/metrics:zero", "../../protos/perfetto/metrics/android:zero", "../../protos/perfetto/trace:zero", "../../protos/perfetto/trace/android:zero", "../../protos/perfetto/trace/ftrace:zero", "../../protos/perfetto/trace/interned_data:zero", "../../protos/perfetto/trace/power:zero", "../../protos/perfetto/trace/profiling:zero", "../../protos/perfetto/trace/ps:zero", "../../protos/perfetto/trace/sys_stats:zero", "../../protos/perfetto/trace/track_event:zero", "../base", "../protozero", "metrics:lib", ] public_deps = [ "../../include/perfetto/trace_processor", ] if (perfetto_build_standalone) { sources += [ "json_trace_parser.cc", "json_trace_parser.h", "json_trace_tokenizer.cc", "json_trace_tokenizer.h", "json_trace_utils.cc", "json_trace_utils.h", ] deps += [ "../../gn:jsoncpp_deps" ] } } if (current_toolchain == host_toolchain) { executable("trace_processor_shell_host") { deps = [ ":lib", "../../gn:default_deps", "../base", ] if (perfetto_build_standalone) { deps += [ "../../buildtools:linenoise", "../../gn/standalone:gen_git_revision", ] } sources = [ "trace_processor_shell.cc", ] } } copy("trace_processor_shell") { host_out_dir_ = get_label_info(":trace_processor_shell_host($host_toolchain)", "root_out_dir") deps = [ ":trace_processor_shell_host($host_toolchain)", ] sources = [ "${host_out_dir_}/trace_processor_shell_host", ] outputs = [ "${root_out_dir}/trace_processor_shell", ] } source_set("unittests") { testonly = true sources = [ "clock_tracker_unittest.cc", "event_tracker_unittest.cc", "filtered_row_index_unittest.cc", "ftrace_utils_unittest.cc", "heap_profile_tracker_unittest.cc", "null_term_string_view_unittest.cc", "process_table_unittest.cc", "process_tracker_unittest.cc", "proto_trace_parser_unittest.cc", "query_constraints_unittest.cc", "sched_slice_table_unittest.cc", "slice_tracker_unittest.cc", "span_join_operator_table_unittest.cc", "sqlite3_str_split_unittest.cc", "string_pool_unittest.cc", "syscall_tracker_unittest.cc", "thread_table_unittest.cc", "trace_processor_impl_unittest.cc", "trace_sorter_unittest.cc", ] deps = [ ":lib", "../../buildtools:sqlite", "../../gn:default_deps", "../../gn:gtest_deps", "../../protos/perfetto/common:zero", "../../protos/perfetto/trace:zero", "../../protos/perfetto/trace/ftrace:zero", "../../protos/perfetto/trace/interned_data:zero", "../../protos/perfetto/trace/ps:zero", "../../protos/perfetto/trace/sys_stats:zero", "../../protos/perfetto/trace/track_event:zero", "../base", "../protozero", ] if (perfetto_build_standalone) { sources += [ "json_trace_tokenizer_unittest.cc", "json_trace_utils_unittest.cc", ] deps += [ "../../gn:jsoncpp_deps" ] } } source_set("integrationtests") { testonly = true sources = [ "trace_database_integrationtest.cc", ] deps = [ ":lib", "../../buildtools:sqlite", "../../gn:default_deps", "../../gn:gtest_deps", "../../protos/perfetto/trace:lite", "../../protos/perfetto/trace_processor:lite", "../base", "../base:test_support", ] if (perfetto_build_standalone) { deps += [ "../../gn:jsoncpp_deps" ] } } perfetto_fuzzer_test("trace_processor_fuzzer") { testonly = true sources = [ "trace_parsing_fuzzer.cc", ] deps = [ ":lib", "../../../../gn:default_deps", "../../buildtools:sqlite", "../../gn:default_deps", "../../gn:gtest_deps", "../../protos/perfetto/trace:lite", "../../protos/perfetto/trace_processor:lite", "../base", "../base:test_support", ] }