tools/gen_bazel: Standalone Bazel build
Updates the gen_bazel generator and generates
a BUILD file that allows to build traced, traced_probes
perfetto and trace_processor both on Linux and Mac.
This also allows easy integration with google internal builds.
The major differences of the new generator are:
1. Uses the new way of dealing with protobuf libraries
(proto_library -> cc_proto_library -> executable target
see go/new-proto-library)
2. Instead of repeating all the source files in each target
it creates Bazel filegroup(s) out of GN source_set(s).
While doing so it takes care of propagating up flags and
dependencies. This is because Bazel filegroup(s),
conversely to GN source_set(s), are pure bags of sources.
Still missing:
- cflags / ldflags propagation into Bazel.
- Android toolchain (perhaps will never happen)
This will require a matching change to Google internal
sources.
Test: bazel build //:all
Change-Id: Ic1c725bd83e2a5e92eebb5c5b34728cf6d5983e6
diff --git a/.gitignore b/.gitignore
index ba585d6..821445d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,7 @@
*.iml
*.pyc
*.swp
+/bazel-*
/out*
TAGS
/node_modules/
diff --git a/BUILD b/BUILD
index 5177498..3a4f469 100644
--- a/BUILD
+++ b/BUILD
@@ -1,3 +1,4 @@
+
# Copyright (C) 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,1230 +15,2212 @@
#
# This file is automatically generated by tools/gen_bazel. Do not edit.
-package(default_visibility = ["//visibility:public"])
+load("@perfetto_cfg//:perfetto_cfg.bzl", "PERFETTO_CONFIG")
+load(
+ "@perfetto//bazel:rules.bzl",
+ "perfetto_cc_binary",
+ "perfetto_cc_ipc_library",
+ "perfetto_cc_library",
+ "perfetto_cc_proto_library",
+ "perfetto_cc_protozero_library",
+ "perfetto_proto_library",
+ "perfetto_py_binary",
+)
+package(default_visibility = ["//visibility:private"])
licenses(["notice"]) # Apache 2.0
+exports_files(["NOTICE"])
-exports_files(["LICENSE"])
+# ##############################################################################
+# Internal targets
+# ##############################################################################
-# GN target: //src/trace_processor/metrics:gen_merged_sql_metrics
-genrule(
- name = "gen_merged_sql_metrics",
+# GN target: //src/ipc/protoc_plugin:ipc_plugin
+perfetto_cc_binary(
+ name = "ipc_plugin",
srcs = [
- "src/trace_processor/metrics/android/android_batt.sql",
- "src/trace_processor/metrics/android/android_cpu.sql",
- "src/trace_processor/metrics/android/android_cpu_agg.sql",
- "src/trace_processor/metrics/android/android_ion.sql",
- "src/trace_processor/metrics/android/android_lmk.sql",
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":src_base_base",
+ "src/ipc/protoc_plugin/ipc_plugin.cc",
+ ],
+ deps = [
+ ]
+ + PERFETTO_CONFIG.deps.protoc_lib,
+)
+
+# GN target: //src/ipc:perfetto_ipc
+perfetto_cc_library(
+ name = "perfetto_ipc",
+ srcs = [
+ ":src_base_base",
+ ":src_base_unix_socket",
+ ":src_ipc_ipc",
+ ],
+ hdrs = [
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":include_perfetto_ext_ipc_ipc",
+ ],
+ deps = [
+ ":protos_perfetto_ipc_wire_protocol",
+ ]
+ + PERFETTO_CONFIG.deps.protobuf_lite,
+)
+
+# GN target: //src/protozero/protoc_plugin:protozero_plugin
+perfetto_cc_binary(
+ name = "protozero_plugin",
+ srcs = [
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":src_base_base",
+ "src/protozero/protoc_plugin/protozero_plugin.cc",
+ ],
+ deps = [
+ ]
+ + PERFETTO_CONFIG.deps.protoc_lib,
+)
+
+# GN target: //src/protozero:libprotozero
+perfetto_cc_library(
+ name = "libprotozero",
+ srcs = [
+ ":src_protozero_protozero",
+ ],
+ hdrs = [
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":include_perfetto_protozero_protozero",
+ ],
+)
+
+# GN target: //:libperfetto
+perfetto_cc_library(
+ name = "libperfetto",
+ srcs = [
+ ":src_android_internal_headers",
+ ":src_android_internal_lazy_library_loader",
+ ":src_base_base",
+ ":src_base_unix_socket",
+ ":src_ipc_ipc",
+ ":src_protozero_protozero",
+ ":src_traced_probes_android_log_android_log",
+ ":src_traced_probes_data_source",
+ ":src_traced_probes_filesystem_filesystem",
+ ":src_traced_probes_ftrace_format_parser",
+ ":src_traced_probes_ftrace_ftrace",
+ ":src_traced_probes_metatrace_metatrace",
+ ":src_traced_probes_packages_list_packages_list",
+ ":src_traced_probes_power_power",
+ ":src_traced_probes_probes",
+ ":src_traced_probes_probes_src",
+ ":src_traced_probes_ps_ps",
+ ":src_traced_probes_sys_stats_sys_stats",
+ ":src_traced_service_service",
+ ":src_tracing_common",
+ ":src_tracing_consumer_api_deprecated",
+ ":src_tracing_ipc",
+ ":src_tracing_tracing",
+ ],
+ hdrs = [
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":include_perfetto_ext_ipc_ipc",
+ ":include_perfetto_ext_traced_sys_stats_counters",
+ ":include_perfetto_ext_traced_traced",
+ ":include_perfetto_ext_tracing_core_core",
+ ":include_perfetto_ext_tracing_ipc_ipc",
+ ":include_perfetto_protozero_protozero",
+ ":include_perfetto_public_public",
+ ":include_perfetto_tracing_core_core",
+ ":include_perfetto_tracing_tracing",
+ ],
+ deps = [
+ ":protos_perfetto_common_lite",
+ ":protos_perfetto_common_zero",
+ ":protos_perfetto_config_android_lite",
+ ":protos_perfetto_config_android_zero",
+ ":protos_perfetto_config_ftrace_lite",
+ ":protos_perfetto_config_ftrace_zero",
+ ":protos_perfetto_config_gpu_lite",
+ ":protos_perfetto_config_gpu_zero",
+ ":protos_perfetto_config_inode_file_lite",
+ ":protos_perfetto_config_inode_file_zero",
+ ":protos_perfetto_config_lite",
+ ":protos_perfetto_config_power_lite",
+ ":protos_perfetto_config_power_zero",
+ ":protos_perfetto_config_process_stats_lite",
+ ":protos_perfetto_config_process_stats_zero",
+ ":protos_perfetto_config_profiling_lite",
+ ":protos_perfetto_config_profiling_zero",
+ ":protos_perfetto_config_sys_stats_lite",
+ ":protos_perfetto_config_sys_stats_zero",
+ ":protos_perfetto_config_zero",
+ ":protos_perfetto_ipc_ipc",
+ ":protos_perfetto_ipc_wire_protocol",
+ ":protos_perfetto_trace_android_zero",
+ ":protos_perfetto_trace_appended_data_zero",
+ ":protos_perfetto_trace_chrome_zero",
+ ":protos_perfetto_trace_filesystem_zero",
+ ":protos_perfetto_trace_ftrace_zero",
+ ":protos_perfetto_trace_gpu_zero",
+ ":protos_perfetto_trace_interned_data_zero",
+ ":protos_perfetto_trace_minimal_lite",
+ ":protos_perfetto_trace_minimal_zero",
+ ":protos_perfetto_trace_non_minimal_zero",
+ ":protos_perfetto_trace_perfetto_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",
+ ":protos_perfetto_trace_trusted_lite",
+ ]
+ + PERFETTO_CONFIG.deps.protobuf_lite,
+)
+
+# GN target: //include/perfetto/base:base
+filegroup(
+ name = "include_perfetto_base_base",
+ srcs = [
+ "include/perfetto/base/build_config.h",
+ "include/perfetto/base/compiler.h",
+ "include/perfetto/base/copyable_ptr.h",
+ "include/perfetto/base/export.h",
+ "include/perfetto/base/logging.h",
+ "include/perfetto/base/task_runner.h",
+ "include/perfetto/base/time.h",
+ ],
+)
+
+# GN target: //include/perfetto/ext/base:base
+filegroup(
+ name = "include_perfetto_ext_base_base",
+ srcs = [
+ "include/perfetto/ext/base/circular_queue.h",
+ "include/perfetto/ext/base/container_annotations.h",
+ "include/perfetto/ext/base/event_fd.h",
+ "include/perfetto/ext/base/file_utils.h",
+ "include/perfetto/ext/base/hash.h",
+ "include/perfetto/ext/base/lookup_set.h",
+ "include/perfetto/ext/base/metatrace.h",
+ "include/perfetto/ext/base/metatrace_events.h",
+ "include/perfetto/ext/base/no_destructor.h",
+ "include/perfetto/ext/base/optional.h",
+ "include/perfetto/ext/base/paged_memory.h",
+ "include/perfetto/ext/base/pipe.h",
+ "include/perfetto/ext/base/proc_utils.h",
+ "include/perfetto/ext/base/scoped_file.h",
+ "include/perfetto/ext/base/small_set.h",
+ "include/perfetto/ext/base/string_splitter.h",
+ "include/perfetto/ext/base/string_utils.h",
+ "include/perfetto/ext/base/string_view.h",
+ "include/perfetto/ext/base/string_writer.h",
+ "include/perfetto/ext/base/temp_file.h",
+ "include/perfetto/ext/base/thread_annotations.h",
+ "include/perfetto/ext/base/thread_checker.h",
+ "include/perfetto/ext/base/thread_task_runner.h",
+ "include/perfetto/ext/base/thread_utils.h",
+ "include/perfetto/ext/base/unix_socket.h",
+ "include/perfetto/ext/base/unix_task_runner.h",
+ "include/perfetto/ext/base/utils.h",
+ "include/perfetto/ext/base/uuid.h",
+ "include/perfetto/ext/base/waitable_event.h",
+ "include/perfetto/ext/base/watchdog.h",
+ "include/perfetto/ext/base/watchdog_noop.h",
+ "include/perfetto/ext/base/watchdog_posix.h",
+ "include/perfetto/ext/base/weak_ptr.h",
+ ],
+)
+
+# GN target: //include/perfetto/ext/ipc:ipc
+filegroup(
+ name = "include_perfetto_ext_ipc_ipc",
+ srcs = [
+ "include/perfetto/ext/ipc/async_result.h",
+ "include/perfetto/ext/ipc/basic_types.h",
+ "include/perfetto/ext/ipc/client.h",
+ "include/perfetto/ext/ipc/client_info.h",
+ "include/perfetto/ext/ipc/codegen_helpers.h",
+ "include/perfetto/ext/ipc/deferred.h",
+ "include/perfetto/ext/ipc/host.h",
+ "include/perfetto/ext/ipc/service.h",
+ "include/perfetto/ext/ipc/service_descriptor.h",
+ "include/perfetto/ext/ipc/service_proxy.h",
+ ],
+)
+
+# GN target: //include/perfetto/ext/traced:sys_stats_counters
+filegroup(
+ name = "include_perfetto_ext_traced_sys_stats_counters",
+ srcs = [
+ "include/perfetto/ext/traced/sys_stats_counters.h",
+ ],
+)
+
+# GN target: //include/perfetto/ext/traced:traced
+filegroup(
+ name = "include_perfetto_ext_traced_traced",
+ srcs = [
+ "include/perfetto/ext/traced/data_source_types.h",
+ "include/perfetto/ext/traced/traced.h",
+ ],
+)
+
+# GN target: //include/perfetto/ext/tracing/core:core
+filegroup(
+ name = "include_perfetto_ext_tracing_core_core",
+ srcs = [
+ "include/perfetto/ext/tracing/core/basic_types.h",
+ "include/perfetto/ext/tracing/core/buffer_exhausted_policy.h",
+ "include/perfetto/ext/tracing/core/commit_data_request.h",
+ "include/perfetto/ext/tracing/core/consumer.h",
+ "include/perfetto/ext/tracing/core/observable_events.h",
+ "include/perfetto/ext/tracing/core/producer.h",
+ "include/perfetto/ext/tracing/core/shared_memory.h",
+ "include/perfetto/ext/tracing/core/shared_memory_abi.h",
+ "include/perfetto/ext/tracing/core/shared_memory_arbiter.h",
+ "include/perfetto/ext/tracing/core/slice.h",
+ "include/perfetto/ext/tracing/core/sliced_protobuf_input_stream.h",
+ "include/perfetto/ext/tracing/core/startup_trace_writer.h",
+ "include/perfetto/ext/tracing/core/startup_trace_writer_registry.h",
+ "include/perfetto/ext/tracing/core/trace_packet.h",
+ "include/perfetto/ext/tracing/core/trace_stats.h",
+ "include/perfetto/ext/tracing/core/trace_writer.h",
+ "include/perfetto/ext/tracing/core/tracing_service.h",
+ ],
+)
+
+# GN target: //include/perfetto/ext/tracing/ipc:ipc
+filegroup(
+ name = "include_perfetto_ext_tracing_ipc_ipc",
+ srcs = [
+ "include/perfetto/ext/tracing/ipc/consumer_ipc_client.h",
+ "include/perfetto/ext/tracing/ipc/default_socket.h",
+ "include/perfetto/ext/tracing/ipc/producer_ipc_client.h",
+ "include/perfetto/ext/tracing/ipc/service_ipc_host.h",
+ ],
+)
+
+# GN target: //include/perfetto/protozero:protozero
+filegroup(
+ name = "include_perfetto_protozero_protozero",
+ srcs = [
+ "include/perfetto/protozero/contiguous_memory_range.h",
+ "include/perfetto/protozero/field.h",
+ "include/perfetto/protozero/message.h",
+ "include/perfetto/protozero/message_handle.h",
+ "include/perfetto/protozero/packed_repeated_fields.h",
+ "include/perfetto/protozero/proto_decoder.h",
+ "include/perfetto/protozero/proto_utils.h",
+ "include/perfetto/protozero/scattered_heap_buffer.h",
+ "include/perfetto/protozero/scattered_stream_null_delegate.h",
+ "include/perfetto/protozero/scattered_stream_writer.h",
+ ],
+)
+
+# GN target: //include/perfetto/public:public
+filegroup(
+ name = "include_perfetto_public_public",
+ srcs = [
+ "include/perfetto/public/consumer_api.h",
+ ],
+)
+
+# GN target: //include/perfetto/trace_processor:trace_processor
+filegroup(
+ name = "include_perfetto_trace_processor_trace_processor",
+ srcs = [
+ "include/perfetto/trace_processor/basic_types.h",
+ "include/perfetto/trace_processor/status.h",
+ "include/perfetto/trace_processor/trace_processor.h",
+ ],
+)
+
+# GN target: //include/perfetto/tracing/core:core
+filegroup(
+ name = "include_perfetto_tracing_core_core",
+ srcs = [
+ "include/perfetto/tracing/core/chrome_config.h",
+ "include/perfetto/tracing/core/data_source_config.h",
+ "include/perfetto/tracing/core/data_source_descriptor.h",
+ "include/perfetto/tracing/core/test_config.h",
+ "include/perfetto/tracing/core/trace_config.h",
+ "include/perfetto/tracing/core/tracing_service_state.h",
+ ],
+)
+
+# GN target: //include/perfetto/tracing:tracing
+filegroup(
+ name = "include_perfetto_tracing_tracing",
+ srcs = [
+ "include/perfetto/tracing/data_source.h",
+ "include/perfetto/tracing/internal/basic_types.h",
+ "include/perfetto/tracing/internal/data_source_internal.h",
+ "include/perfetto/tracing/internal/tracing_muxer.h",
+ "include/perfetto/tracing/internal/tracing_tls.h",
+ "include/perfetto/tracing/locked_handle.h",
+ "include/perfetto/tracing/platform.h",
+ "include/perfetto/tracing/trace_writer_base.h",
+ "include/perfetto/tracing/tracing.h",
+ "include/perfetto/tracing/tracing_backend.h",
+ ],
+)
+
+# GN target: //src/android_internal:headers
+filegroup(
+ name = "src_android_internal_headers",
+ srcs = [
+ "src/android_internal/atrace_hal.h",
+ "src/android_internal/dropbox_service.h",
+ "src/android_internal/health_hal.h",
+ "src/android_internal/incident_service.h",
+ "src/android_internal/power_stats_hal.h",
+ ],
+)
+
+# GN target: //src/android_internal:lazy_library_loader
+filegroup(
+ name = "src_android_internal_lazy_library_loader",
+ srcs = [
+ "src/android_internal/lazy_library_loader.cc",
+ "src/android_internal/lazy_library_loader.h",
+ ],
+)
+
+# GN target: //src/base:base
+filegroup(
+ name = "src_base_base",
+ srcs = [
+ "src/base/event_fd.cc",
+ "src/base/file_utils.cc",
+ "src/base/metatrace.cc",
+ "src/base/paged_memory.cc",
+ "src/base/pipe.cc",
+ "src/base/string_splitter.cc",
+ "src/base/string_utils.cc",
+ "src/base/string_view.cc",
+ "src/base/temp_file.cc",
+ "src/base/thread_checker.cc",
+ "src/base/thread_task_runner.cc",
+ "src/base/time.cc",
+ "src/base/unix_task_runner.cc",
+ "src/base/uuid.cc",
+ "src/base/virtual_destructors.cc",
+ "src/base/waitable_event.cc",
+ "src/base/watchdog_posix.cc",
+ ],
+)
+
+# GN target: //src/base:unix_socket
+filegroup(
+ name = "src_base_unix_socket",
+ srcs = [
+ "src/base/unix_socket.cc",
+ ],
+)
+
+# GN target: //src/ipc:ipc
+filegroup(
+ name = "src_ipc_ipc",
+ srcs = [
+ "src/ipc/buffered_frame_deserializer.cc",
+ "src/ipc/buffered_frame_deserializer.h",
+ "src/ipc/client_impl.cc",
+ "src/ipc/client_impl.h",
+ "src/ipc/deferred.cc",
+ "src/ipc/host_impl.cc",
+ "src/ipc/host_impl.h",
+ "src/ipc/service_proxy.cc",
+ "src/ipc/virtual_destructors.cc",
+ ],
+)
+
+# GN target: //src/perfetto_cmd:perfetto_cmd
+filegroup(
+ name = "src_perfetto_cmd_perfetto_cmd",
+ srcs = [
+ "src/perfetto_cmd/config.cc",
+ "src/perfetto_cmd/config.h",
+ "src/perfetto_cmd/packet_writer.cc",
+ "src/perfetto_cmd/packet_writer.h",
+ "src/perfetto_cmd/pbtxt_to_pb.cc",
+ "src/perfetto_cmd/pbtxt_to_pb.h",
+ "src/perfetto_cmd/perfetto_cmd.cc",
+ "src/perfetto_cmd/perfetto_cmd.h",
+ "src/perfetto_cmd/perfetto_config.descriptor.h",
+ "src/perfetto_cmd/rate_limiter.cc",
+ "src/perfetto_cmd/rate_limiter.h",
+ ],
+)
+
+# GN target: //src/perfetto_cmd:trigger_producer
+filegroup(
+ name = "src_perfetto_cmd_trigger_producer",
+ srcs = [
+ "src/perfetto_cmd/trigger_producer.cc",
+ "src/perfetto_cmd/trigger_producer.h",
+ ],
+)
+
+# GN target: //src/protozero:protozero
+filegroup(
+ name = "src_protozero_protozero",
+ srcs = [
+ "src/protozero/message.cc",
+ "src/protozero/message_handle.cc",
+ "src/protozero/proto_decoder.cc",
+ "src/protozero/scattered_heap_buffer.cc",
+ "src/protozero/scattered_stream_null_delegate.cc",
+ "src/protozero/scattered_stream_writer.cc",
+ ],
+)
+
+# GN target: //src/trace_processor/db:lib
+filegroup(
+ name = "src_trace_processor_db_lib",
+ srcs = [
+ "src/trace_processor/db/bit_vector.cc",
+ "src/trace_processor/db/bit_vector.h",
+ "src/trace_processor/db/column.cc",
+ "src/trace_processor/db/column.h",
+ "src/trace_processor/db/row_map.cc",
+ "src/trace_processor/db/row_map.h",
+ "src/trace_processor/db/sparse_vector.h",
+ "src/trace_processor/db/table.cc",
+ "src/trace_processor/db/table.h",
+ "src/trace_processor/db/typed_column.h",
+ ],
+)
+
+genrule(
+ name = "src_trace_processor_metrics_gen_merged_sql_metrics",
+ srcs = [
"src/trace_processor/metrics/android/android_mem.sql",
- "src/trace_processor/metrics/android/android_mem_unagg.sql",
- "src/trace_processor/metrics/android/android_package_list.sql",
"src/trace_processor/metrics/android/android_powrails.sql",
- "src/trace_processor/metrics/android/android_process_growth.sql",
- "src/trace_processor/metrics/android/android_startup.sql",
- "src/trace_processor/metrics/android/android_startup_cpu.sql",
"src/trace_processor/metrics/android/android_startup_launches.sql",
- "src/trace_processor/metrics/android/android_task_state.sql",
- "src/trace_processor/metrics/android/heap_profile_callsite_stats.sql",
+ "src/trace_processor/metrics/android/android_cpu_agg.sql",
+ "src/trace_processor/metrics/android/upid_span_view.sql",
+ "src/trace_processor/metrics/android/android_mem_unagg.sql",
+ "src/trace_processor/metrics/android/android_process_growth.sql",
"src/trace_processor/metrics/android/mem_stats_priority_breakdown.sql",
- "src/trace_processor/metrics/android/process_mem.sql",
+ "src/trace_processor/metrics/android/android_batt.sql",
+ "src/trace_processor/metrics/android/android_startup.sql",
+ "src/trace_processor/metrics/trace_metadata.sql",
+ "src/trace_processor/metrics/android/android_ion.sql",
+ "src/trace_processor/metrics/android/android_startup_cpu.sql",
+ "src/trace_processor/metrics/android/android_package_list.sql",
+ "src/trace_processor/metrics/android/android_cpu.sql",
"src/trace_processor/metrics/android/process_unagg_mem_view.sql",
"src/trace_processor/metrics/android/span_view_stats.sql",
- "src/trace_processor/metrics/android/upid_span_view.sql",
- "src/trace_processor/metrics/trace_metadata.sql",
+ "src/trace_processor/metrics/android/heap_profile_callsite_stats.sql",
+ "src/trace_processor/metrics/android/android_task_state.sql",
+ "src/trace_processor/metrics/android/process_mem.sql",
+ "src/trace_processor/metrics/android/android_lmk.sql",
],
outs = [
"src/trace_processor/metrics/sql_metrics.h",
],
cmd = "$(location gen_merged_sql_metrics_py) --cpp_out=$@ $(SRCS)",
tools = [
- "gen_merged_sql_metrics_py",
+ ":gen_merged_sql_metrics_py",
+ ],
+)
+
+# GN target: //src/trace_processor/metrics:lib
+filegroup(
+ name = "src_trace_processor_metrics_lib",
+ srcs = [
+ "src/trace_processor/metrics/descriptors.cc",
+ "src/trace_processor/metrics/descriptors.h",
+ "src/trace_processor/metrics/metrics.cc",
+ "src/trace_processor/metrics/metrics.descriptor.h",
+ "src/trace_processor/metrics/metrics.h",
+ ],
+)
+
+# GN target: //src/trace_processor/sqlite:sqlite
+filegroup(
+ name = "src_trace_processor_sqlite_sqlite",
+ srcs = [
+ "src/trace_processor/sqlite/db_sqlite_table.cc",
+ "src/trace_processor/sqlite/db_sqlite_table.h",
+ "src/trace_processor/sqlite/query_constraints.cc",
+ "src/trace_processor/sqlite/query_constraints.h",
+ "src/trace_processor/sqlite/scoped_db.h",
+ "src/trace_processor/sqlite/sqlite3_str_split.cc",
+ "src/trace_processor/sqlite/sqlite3_str_split.h",
+ "src/trace_processor/sqlite/sqlite_table.cc",
+ "src/trace_processor/sqlite/sqlite_table.h",
+ "src/trace_processor/sqlite/sqlite_utils.h",
+ ],
+)
+
+# GN target: //src/trace_processor/tables:tables
+filegroup(
+ name = "src_trace_processor_tables_tables",
+ srcs = [
+ "src/trace_processor/tables/macros.h",
+ "src/trace_processor/tables/macros_internal.h",
+ "src/trace_processor/tables/profiler_tables.h",
+ "src/trace_processor/tables/slice_tables.h",
+ "src/trace_processor/tables/track_tables.h",
+ ],
+)
+
+# GN target: //src/trace_processor:common
+filegroup(
+ name = "src_trace_processor_common",
+ srcs = [
+ "src/trace_processor/null_term_string_view.h",
+ "src/trace_processor/string_pool.cc",
+ "src/trace_processor/string_pool.h",
+ ],
+)
+
+# GN target: //src/trace_processor:lib
+filegroup(
+ name = "src_trace_processor_lib",
+ srcs = [
+ "src/trace_processor/android_logs_table.cc",
+ "src/trace_processor/android_logs_table.h",
+ "src/trace_processor/args_table.cc",
+ "src/trace_processor/args_table.h",
+ "src/trace_processor/args_tracker.cc",
+ "src/trace_processor/args_tracker.h",
+ "src/trace_processor/chunked_trace_reader.h",
+ "src/trace_processor/clock_tracker.cc",
+ "src/trace_processor/clock_tracker.h",
+ "src/trace_processor/counter_definitions_table.cc",
+ "src/trace_processor/counter_definitions_table.h",
+ "src/trace_processor/counter_values_table.cc",
+ "src/trace_processor/counter_values_table.h",
+ "src/trace_processor/cpu_profile_stack_sample_table.cc",
+ "src/trace_processor/cpu_profile_stack_sample_table.h",
+ "src/trace_processor/event_tracker.cc",
+ "src/trace_processor/event_tracker.h",
+ "src/trace_processor/export_json.cc",
+ "src/trace_processor/export_json.h",
+ "src/trace_processor/filtered_row_index.cc",
+ "src/trace_processor/filtered_row_index.h",
+ "src/trace_processor/forwarding_trace_parser.cc",
+ "src/trace_processor/forwarding_trace_parser.h",
+ "src/trace_processor/ftrace_descriptors.cc",
+ "src/trace_processor/ftrace_descriptors.h",
+ "src/trace_processor/ftrace_utils.cc",
+ "src/trace_processor/ftrace_utils.h",
+ "src/trace_processor/fuchsia_provider_view.cc",
+ "src/trace_processor/fuchsia_provider_view.h",
+ "src/trace_processor/fuchsia_trace_parser.cc",
+ "src/trace_processor/fuchsia_trace_parser.h",
+ "src/trace_processor/fuchsia_trace_tokenizer.cc",
+ "src/trace_processor/fuchsia_trace_tokenizer.h",
+ "src/trace_processor/fuchsia_trace_utils.cc",
+ "src/trace_processor/fuchsia_trace_utils.h",
+ "src/trace_processor/graphics_frame_event_parser.cc",
+ "src/trace_processor/graphics_frame_event_parser.h",
+ "src/trace_processor/gzip_trace_parser.cc",
+ "src/trace_processor/gzip_trace_parser.h",
+ "src/trace_processor/heap_profile_allocation_table.cc",
+ "src/trace_processor/heap_profile_allocation_table.h",
+ "src/trace_processor/heap_profile_tracker.cc",
+ "src/trace_processor/heap_profile_tracker.h",
+ "src/trace_processor/instants_table.cc",
+ "src/trace_processor/instants_table.h",
+ "src/trace_processor/json_trace_parser.cc",
+ "src/trace_processor/json_trace_parser.h",
+ "src/trace_processor/json_trace_tokenizer.cc",
+ "src/trace_processor/json_trace_tokenizer.h",
+ "src/trace_processor/json_trace_utils.cc",
+ "src/trace_processor/json_trace_utils.h",
+ "src/trace_processor/metadata.h",
+ "src/trace_processor/metadata_table.cc",
+ "src/trace_processor/metadata_table.h",
+ "src/trace_processor/process_table.cc",
+ "src/trace_processor/process_table.h",
+ "src/trace_processor/process_tracker.cc",
+ "src/trace_processor/process_tracker.h",
+ "src/trace_processor/proto_incremental_state.h",
+ "src/trace_processor/proto_trace_parser.cc",
+ "src/trace_processor/proto_trace_parser.h",
+ "src/trace_processor/proto_trace_tokenizer.cc",
+ "src/trace_processor/proto_trace_tokenizer.h",
+ "src/trace_processor/raw_table.cc",
+ "src/trace_processor/raw_table.h",
+ "src/trace_processor/row_iterators.cc",
+ "src/trace_processor/row_iterators.h",
+ "src/trace_processor/sched_slice_table.cc",
+ "src/trace_processor/sched_slice_table.h",
+ "src/trace_processor/slice_table.cc",
+ "src/trace_processor/slice_table.h",
+ "src/trace_processor/slice_tracker.cc",
+ "src/trace_processor/slice_tracker.h",
+ "src/trace_processor/span_join_operator_table.cc",
+ "src/trace_processor/span_join_operator_table.h",
+ "src/trace_processor/sql_stats_table.cc",
+ "src/trace_processor/sql_stats_table.h",
+ "src/trace_processor/stack_profile_callsite_table.cc",
+ "src/trace_processor/stack_profile_callsite_table.h",
+ "src/trace_processor/stack_profile_frame_table.cc",
+ "src/trace_processor/stack_profile_frame_table.h",
+ "src/trace_processor/stack_profile_mapping_table.cc",
+ "src/trace_processor/stack_profile_mapping_table.h",
+ "src/trace_processor/stack_profile_tracker.cc",
+ "src/trace_processor/stack_profile_tracker.h",
+ "src/trace_processor/stats.h",
+ "src/trace_processor/stats_table.cc",
+ "src/trace_processor/stats_table.h",
+ "src/trace_processor/storage_columns.cc",
+ "src/trace_processor/storage_columns.h",
+ "src/trace_processor/storage_schema.cc",
+ "src/trace_processor/storage_schema.h",
+ "src/trace_processor/storage_table.cc",
+ "src/trace_processor/storage_table.h",
+ "src/trace_processor/syscall_tracker.cc",
+ "src/trace_processor/syscall_tracker.h",
+ "src/trace_processor/syscalls_aarch32.h",
+ "src/trace_processor/syscalls_aarch64.h",
+ "src/trace_processor/syscalls_armeabi.h",
+ "src/trace_processor/syscalls_x86_64.h",
+ "src/trace_processor/systrace_parser.cc",
+ "src/trace_processor/systrace_parser.h",
+ "src/trace_processor/systrace_trace_parser.cc",
+ "src/trace_processor/systrace_trace_parser.h",
+ "src/trace_processor/thread_table.cc",
+ "src/trace_processor/thread_table.h",
+ "src/trace_processor/trace_blob_view.h",
+ "src/trace_processor/trace_parser.h",
+ "src/trace_processor/trace_processor.cc",
+ "src/trace_processor/trace_processor_context.cc",
+ "src/trace_processor/trace_processor_context.h",
+ "src/trace_processor/trace_processor_impl.cc",
+ "src/trace_processor/trace_processor_impl.h",
+ "src/trace_processor/trace_sorter.cc",
+ "src/trace_processor/trace_sorter.h",
+ "src/trace_processor/trace_storage.cc",
+ "src/trace_processor/trace_storage.h",
+ "src/trace_processor/variadic.h",
+ "src/trace_processor/virtual_destructors.cc",
+ "src/trace_processor/virtual_track_tracker.cc",
+ "src/trace_processor/virtual_track_tracker.h",
+ "src/trace_processor/window_operator_table.cc",
+ "src/trace_processor/window_operator_table.h",
+ ],
+)
+
+# GN target: //src/traced/probes/android_log:android_log
+filegroup(
+ name = "src_traced_probes_android_log_android_log",
+ srcs = [
+ "src/traced/probes/android_log/android_log_data_source.cc",
+ "src/traced/probes/android_log/android_log_data_source.h",
+ ],
+)
+
+# GN target: //src/traced/probes/filesystem:filesystem
+filegroup(
+ name = "src_traced_probes_filesystem_filesystem",
+ srcs = [
+ "src/traced/probes/filesystem/file_scanner.cc",
+ "src/traced/probes/filesystem/file_scanner.h",
+ "src/traced/probes/filesystem/fs_mount.cc",
+ "src/traced/probes/filesystem/fs_mount.h",
+ "src/traced/probes/filesystem/inode_file_data_source.cc",
+ "src/traced/probes/filesystem/inode_file_data_source.h",
+ "src/traced/probes/filesystem/lru_inode_cache.cc",
+ "src/traced/probes/filesystem/lru_inode_cache.h",
+ "src/traced/probes/filesystem/prefix_finder.cc",
+ "src/traced/probes/filesystem/prefix_finder.h",
+ "src/traced/probes/filesystem/range_tree.cc",
+ "src/traced/probes/filesystem/range_tree.h",
+ ],
+)
+
+# GN target: //src/traced/probes/ftrace:format_parser
+filegroup(
+ name = "src_traced_probes_ftrace_format_parser",
+ srcs = [
+ "src/traced/probes/ftrace/format_parser.cc",
+ "src/traced/probes/ftrace/format_parser.h",
+ ],
+)
+
+# GN target: //src/traced/probes/ftrace:ftrace
+filegroup(
+ name = "src_traced_probes_ftrace_ftrace",
+ srcs = [
+ "src/traced/probes/ftrace/atrace_hal_wrapper.cc",
+ "src/traced/probes/ftrace/atrace_hal_wrapper.h",
+ "src/traced/probes/ftrace/atrace_wrapper.cc",
+ "src/traced/probes/ftrace/atrace_wrapper.h",
+ "src/traced/probes/ftrace/cpu_reader.cc",
+ "src/traced/probes/ftrace/cpu_reader.h",
+ "src/traced/probes/ftrace/cpu_stats_parser.cc",
+ "src/traced/probes/ftrace/cpu_stats_parser.h",
+ "src/traced/probes/ftrace/event_info.cc",
+ "src/traced/probes/ftrace/event_info.h",
+ "src/traced/probes/ftrace/event_info_constants.cc",
+ "src/traced/probes/ftrace/event_info_constants.h",
+ "src/traced/probes/ftrace/ftrace_config.cc",
+ "src/traced/probes/ftrace/ftrace_config.h",
+ "src/traced/probes/ftrace/ftrace_config_muxer.cc",
+ "src/traced/probes/ftrace/ftrace_config_muxer.h",
+ "src/traced/probes/ftrace/ftrace_config_utils.cc",
+ "src/traced/probes/ftrace/ftrace_config_utils.h",
+ "src/traced/probes/ftrace/ftrace_controller.cc",
+ "src/traced/probes/ftrace/ftrace_controller.h",
+ "src/traced/probes/ftrace/ftrace_data_source.cc",
+ "src/traced/probes/ftrace/ftrace_data_source.h",
+ "src/traced/probes/ftrace/ftrace_metadata.cc",
+ "src/traced/probes/ftrace/ftrace_metadata.h",
+ "src/traced/probes/ftrace/ftrace_procfs.cc",
+ "src/traced/probes/ftrace/ftrace_procfs.h",
+ "src/traced/probes/ftrace/ftrace_stats.cc",
+ "src/traced/probes/ftrace/ftrace_stats.h",
+ "src/traced/probes/ftrace/proto_translation_table.cc",
+ "src/traced/probes/ftrace/proto_translation_table.h",
+ ],
+)
+
+# GN target: //src/traced/probes/metatrace:metatrace
+filegroup(
+ name = "src_traced_probes_metatrace_metatrace",
+ srcs = [
+ "src/traced/probes/metatrace/metatrace_data_source.cc",
+ "src/traced/probes/metatrace/metatrace_data_source.h",
+ ],
+)
+
+# GN target: //src/traced/probes/packages_list:packages_list
+filegroup(
+ name = "src_traced_probes_packages_list_packages_list",
+ srcs = [
+ "src/traced/probes/packages_list/packages_list_data_source.cc",
+ "src/traced/probes/packages_list/packages_list_data_source.h",
+ ],
+)
+
+# GN target: //src/traced/probes/power:power
+filegroup(
+ name = "src_traced_probes_power_power",
+ srcs = [
+ "src/traced/probes/power/android_power_data_source.cc",
+ "src/traced/probes/power/android_power_data_source.h",
+ ],
+)
+
+# GN target: //src/traced/probes/ps:ps
+filegroup(
+ name = "src_traced_probes_ps_ps",
+ srcs = [
+ "src/traced/probes/ps/process_stats_data_source.cc",
+ "src/traced/probes/ps/process_stats_data_source.h",
+ ],
+)
+
+# GN target: //src/traced/probes/sys_stats:sys_stats
+filegroup(
+ name = "src_traced_probes_sys_stats_sys_stats",
+ srcs = [
+ "src/traced/probes/sys_stats/sys_stats_data_source.cc",
+ "src/traced/probes/sys_stats/sys_stats_data_source.h",
+ ],
+)
+
+# GN target: //src/traced/probes:data_source
+filegroup(
+ name = "src_traced_probes_data_source",
+ srcs = [
+ "src/traced/probes/probes_data_source.cc",
+ "src/traced/probes/probes_data_source.h",
+ ],
+)
+
+# GN target: //src/traced/probes:probes
+filegroup(
+ name = "src_traced_probes_probes",
+ srcs = [
+ "src/traced/probes/probes.cc",
+ ],
+)
+
+# GN target: //src/traced/probes:probes_src
+filegroup(
+ name = "src_traced_probes_probes_src",
+ srcs = [
+ "src/traced/probes/probes_producer.cc",
+ "src/traced/probes/probes_producer.h",
+ ],
+)
+
+# GN target: //src/traced/service:service
+filegroup(
+ name = "src_traced_service_service",
+ srcs = [
+ "src/traced/service/builtin_producer.cc",
+ "src/traced/service/builtin_producer.h",
+ "src/traced/service/service.cc",
+ ],
+)
+
+# GN target: //src/tracing:common
+filegroup(
+ name = "src_tracing_common",
+ srcs = [
+ "src/tracing/trace_writer_base.cc",
+ ],
+)
+
+# GN target: //src/tracing:consumer_api_deprecated
+filegroup(
+ name = "src_tracing_consumer_api_deprecated",
+ srcs = [
+ "src/tracing/api_impl/consumer_api.cc",
+ ],
+)
+
+# GN target: //src/tracing:ipc
+filegroup(
+ name = "src_tracing_ipc",
+ srcs = [
+ "src/tracing/ipc/consumer/consumer_ipc_client_impl.cc",
+ "src/tracing/ipc/consumer/consumer_ipc_client_impl.h",
+ "src/tracing/ipc/default_socket.cc",
+ "src/tracing/ipc/posix_shared_memory.cc",
+ "src/tracing/ipc/posix_shared_memory.h",
+ "src/tracing/ipc/producer/producer_ipc_client_impl.cc",
+ "src/tracing/ipc/producer/producer_ipc_client_impl.h",
+ "src/tracing/ipc/service/consumer_ipc_service.cc",
+ "src/tracing/ipc/service/consumer_ipc_service.h",
+ "src/tracing/ipc/service/producer_ipc_service.cc",
+ "src/tracing/ipc/service/producer_ipc_service.h",
+ "src/tracing/ipc/service/service_ipc_host_impl.cc",
+ "src/tracing/ipc/service/service_ipc_host_impl.h",
+ ],
+)
+
+# GN target: //src/tracing:tracing
+filegroup(
+ name = "src_tracing_tracing",
+ srcs = [
+ "src/tracing/core/chrome_config.cc",
+ "src/tracing/core/commit_data_request.cc",
+ "src/tracing/core/data_source_config.cc",
+ "src/tracing/core/data_source_descriptor.cc",
+ "src/tracing/core/id_allocator.cc",
+ "src/tracing/core/id_allocator.h",
+ "src/tracing/core/metatrace_writer.cc",
+ "src/tracing/core/metatrace_writer.h",
+ "src/tracing/core/null_trace_writer.cc",
+ "src/tracing/core/null_trace_writer.h",
+ "src/tracing/core/observable_events.cc",
+ "src/tracing/core/packet_stream_validator.cc",
+ "src/tracing/core/packet_stream_validator.h",
+ "src/tracing/core/patch_list.h",
+ "src/tracing/core/shared_memory_abi.cc",
+ "src/tracing/core/shared_memory_arbiter_impl.cc",
+ "src/tracing/core/shared_memory_arbiter_impl.h",
+ "src/tracing/core/sliced_protobuf_input_stream.cc",
+ "src/tracing/core/startup_trace_writer.cc",
+ "src/tracing/core/startup_trace_writer_registry.cc",
+ "src/tracing/core/test_config.cc",
+ "src/tracing/core/trace_buffer.cc",
+ "src/tracing/core/trace_buffer.h",
+ "src/tracing/core/trace_config.cc",
+ "src/tracing/core/trace_packet.cc",
+ "src/tracing/core/trace_stats.cc",
+ "src/tracing/core/trace_writer_impl.cc",
+ "src/tracing/core/trace_writer_impl.h",
+ "src/tracing/core/tracing_service_impl.cc",
+ "src/tracing/core/tracing_service_impl.h",
+ "src/tracing/core/tracing_service_state.cc",
+ "src/tracing/core/virtual_destructors.cc",
+ ],
+)
+
+# GN target: //tools/trace_to_text:pprofbuilder
+filegroup(
+ name = "tools_trace_to_text_pprofbuilder",
+ srcs = [
+ "tools/trace_to_text/pprof_builder.cc",
+ "tools/trace_to_text/pprof_builder.h",
+ ],
+)
+
+# GN target: //tools/trace_to_text:symbolizer
+filegroup(
+ name = "tools_trace_to_text_symbolizer",
+ srcs = [
+ "tools/trace_to_text/symbolizer.cc",
+ "tools/trace_to_text/symbolizer.h",
+ "tools/trace_to_text/trace_symbol_table.cc",
+ "tools/trace_to_text/trace_symbol_table.h",
+ ],
+)
+
+# GN target: //tools/trace_to_text:utils
+filegroup(
+ name = "tools_trace_to_text_utils",
+ srcs = [
+ "tools/trace_to_text/profile_visitor.cc",
+ "tools/trace_to_text/profile_visitor.h",
+ "tools/trace_to_text/utils.cc",
+ "tools/trace_to_text/utils.h",
+ ],
+)
+
+
+# ##############################################################################
+# Proto libraries
+# ##############################################################################
+
+# GN target: //protos/perfetto/trace_processor:metrics_impl_zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_processor_metrics_impl_zero",
+ deps = [
+ ":protos_perfetto_trace_processor_metrics_impl_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/filesystem:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_filesystem_lite",
+ deps = [
+ ":protos_perfetto_trace_filesystem_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/power:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_power_lite",
+ deps = [
+ ":protos_perfetto_trace_power_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/track_event:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_track_event_lite",
+ deps = [
+ ":protos_perfetto_trace_track_event_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/process_stats:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_process_stats_zero",
+ deps = [
+ ":protos_perfetto_config_process_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/perfetto:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_perfetto_zero",
+ deps = [
+ ":protos_perfetto_trace_perfetto_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/power:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_power_zero",
+ deps = [
+ ":protos_perfetto_config_power_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/sys_stats:lite
+perfetto_proto_library(
+ name = "protos_perfetto_config_sys_stats_protos",
+ srcs = [
+ "protos/perfetto/config/sys_stats/sys_stats_config.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/metrics:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_metrics_lite",
+ deps = [
+ ":protos_perfetto_metrics_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/sys_stats:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_sys_stats_lite",
+ deps = [
+ ":protos_perfetto_config_sys_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/metrics:lite
+perfetto_proto_library(
+ name = "protos_perfetto_metrics_protos",
+ srcs = [
+ "protos/perfetto/metrics/metrics.proto",
+ ],
+ deps = [
+ ":protos_perfetto_metrics_android_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/android:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_android_lite",
+ deps = [
+ ":protos_perfetto_config_android_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/interned_data:zero
+perfetto_proto_library(
+ name = "protos_perfetto_trace_interned_data_protos",
+ srcs = [
+ "protos/perfetto/trace/interned_data/interned_data.proto",
+ ],
+ deps = [
+ ":protos_perfetto_trace_profiling_protos",
+ ":protos_perfetto_trace_track_event_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:minimal_lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_minimal_lite",
+ deps = [
+ ":protos_perfetto_trace_minimal_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:non_minimal_zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_non_minimal_zero",
+ deps = [
+ ":protos_perfetto_trace_non_minimal_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/metrics/android:zero
+perfetto_proto_library(
+ name = "protos_perfetto_metrics_android_protos",
+ srcs = [
+ "protos/perfetto/metrics/android/batt_metric.proto",
+ "protos/perfetto/metrics/android/cpu_metric.proto",
+ "protos/perfetto/metrics/android/heap_profile_callsite_stats.proto",
+ "protos/perfetto/metrics/android/ion_metric.proto",
+ "protos/perfetto/metrics/android/lmk_metric.proto",
+ "protos/perfetto/metrics/android/mem_metric.proto",
+ "protos/perfetto/metrics/android/mem_unagg_metric.proto",
+ "protos/perfetto/metrics/android/package_list.proto",
+ "protos/perfetto/metrics/android/powrails_metric.proto",
+ "protos/perfetto/metrics/android/process_growth.proto",
+ "protos/perfetto/metrics/android/startup_metric.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config/inode_file:zero
+perfetto_proto_library(
+ name = "protos_perfetto_config_inode_file_protos",
+ srcs = [
+ "protos/perfetto/config/inode_file/inode_file_config.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config/gpu:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_gpu_zero",
+ deps = [
+ ":protos_perfetto_config_gpu_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/chrome:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_chrome_zero",
+ deps = [
+ ":protos_perfetto_trace_chrome_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/common:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_common_zero",
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/android:lite
+perfetto_proto_library(
+ name = "protos_perfetto_config_android_protos",
+ srcs = [
+ "protos/perfetto/config/android/android_log_config.proto",
+ "protos/perfetto/config/android/packages_list_config.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/power:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_power_lite",
+ deps = [
+ ":protos_perfetto_config_power_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/android:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_android_zero",
+ deps = [
+ ":protos_perfetto_trace_android_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/profiling:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_profiling_zero",
+ deps = [
+ ":protos_perfetto_config_profiling_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/metrics/android:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_metrics_android_lite",
+ deps = [
+ ":protos_perfetto_metrics_android_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/appended_data:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_appended_data_lite",
+ deps = [
+ ":protos_perfetto_trace_appended_data_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/power:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_power_zero",
+ deps = [
+ ":protos_perfetto_trace_power_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/gpu:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_gpu_zero",
+ deps = [
+ ":protos_perfetto_trace_gpu_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/sys_stats:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_sys_stats_protos",
+ srcs = [
+ "protos/perfetto/trace/sys_stats/sys_stats.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/gpu:lite
+perfetto_proto_library(
+ name = "protos_perfetto_config_gpu_protos",
+ srcs = [
+ "protos/perfetto/config/gpu/gpu_counter_config.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/common:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_common_lite",
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/ftrace:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_ftrace_lite",
+ deps = [
+ ":protos_perfetto_trace_ftrace_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/filesystem:zero
+perfetto_proto_library(
+ name = "protos_perfetto_trace_filesystem_protos",
+ srcs = [
+ "protos/perfetto/trace/filesystem/inode_file_map.proto",
+ ],
+)
+
+# GN target: //protos/third_party/pprof:lite
+perfetto_proto_library(
+ name = "protos_third_party_pprof_protos",
+ srcs = [
+ "protos/third_party/pprof/profile.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config/process_stats:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_process_stats_lite",
+ deps = [
+ ":protos_perfetto_config_process_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/appended_data:zero
+perfetto_proto_library(
+ name = "protos_perfetto_trace_appended_data_protos",
+ srcs = [
+ "protos/perfetto/trace/appended_data/appended_data.proto",
+ ],
+ deps = [
+ ":protos_perfetto_trace_profiling_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_lite",
+ deps = [
+ ":protos_perfetto_config_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/ftrace:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_ftrace_zero",
+ deps = [
+ ":protos_perfetto_trace_ftrace_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/profiling:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_profiling_zero",
+ deps = [
+ ":protos_perfetto_trace_profiling_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/ipc:ipc
+perfetto_cc_ipc_library(
+ name = "protos_perfetto_ipc_ipc",
+ deps = [
+ ":protos_perfetto_ipc_ipc_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/android:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_android_zero",
+ deps = [
+ ":protos_perfetto_config_android_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/gpu:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_gpu_lite",
+ deps = [
+ ":protos_perfetto_trace_gpu_protos",
+ ],
+)
+
+# GN target: //src/perfetto_cmd:protos
+perfetto_cc_proto_library(
+ name = "src_perfetto_cmd_protos",
+ deps = [
+ ":src_perfetto_cmd_protos_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/power:zero
+perfetto_proto_library(
+ name = "protos_perfetto_config_power_protos",
+ srcs = [
+ "protos/perfetto/config/power/android_power_config.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/chrome:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_chrome_lite",
+ deps = [
+ ":protos_perfetto_trace_chrome_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:minimal_zero
+perfetto_proto_library(
+ name = "protos_perfetto_trace_minimal_protos",
+ srcs = [
+ "protos/perfetto/trace/clock_snapshot.proto",
+ "protos/perfetto/trace/system_info.proto",
+ "protos/perfetto/trace/trigger.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ":protos_perfetto_config_android_protos",
+ ":protos_perfetto_config_ftrace_protos",
+ ":protos_perfetto_config_gpu_protos",
+ ":protos_perfetto_config_inode_file_protos",
+ ":protos_perfetto_config_power_protos",
+ ":protos_perfetto_config_process_stats_protos",
+ ":protos_perfetto_config_profiling_protos",
+ ":protos_perfetto_config_protos",
+ ":protos_perfetto_config_sys_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/perfetto:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_perfetto_lite",
+ deps = [
+ ":protos_perfetto_trace_perfetto_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:non_minimal_lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_non_minimal_lite",
+ deps = [
+ ":protos_perfetto_trace_non_minimal_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/gpu:zero
+perfetto_proto_library(
+ name = "protos_perfetto_trace_gpu_protos",
+ srcs = [
+ "protos/perfetto/trace/gpu/gpu_counter_event.proto",
+ "protos/perfetto/trace/gpu/gpu_render_stage_event.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/track_event:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_track_event_protos",
+ srcs = [
+ "protos/perfetto/trace/track_event/debug_annotation.proto",
+ "protos/perfetto/trace/track_event/log_message.proto",
+ "protos/perfetto/trace/track_event/process_descriptor.proto",
+ "protos/perfetto/trace/track_event/source_location.proto",
+ "protos/perfetto/trace/track_event/task_execution.proto",
+ "protos/perfetto/trace/track_event/thread_descriptor.proto",
+ "protos/perfetto/trace/track_event/track_descriptor.proto",
+ "protos/perfetto/trace/track_event/track_event.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/ipc:ipc
+perfetto_proto_library(
+ name = "protos_perfetto_ipc_ipc_protos",
+ srcs = [
+ "protos/perfetto/ipc/consumer_port.proto",
+ "protos/perfetto/ipc/producer_port.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ":protos_perfetto_config_android_protos",
+ ":protos_perfetto_config_ftrace_protos",
+ ":protos_perfetto_config_gpu_protos",
+ ":protos_perfetto_config_inode_file_protos",
+ ":protos_perfetto_config_power_protos",
+ ":protos_perfetto_config_process_stats_protos",
+ ":protos_perfetto_config_profiling_protos",
+ ":protos_perfetto_config_protos",
+ ":protos_perfetto_config_sys_stats_protos",
+ ":protos_perfetto_ipc_wire_protocol_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/metrics:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_metrics_zero",
+ deps = [
+ ":protos_perfetto_metrics_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/sys_stats:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_sys_stats_zero",
+ deps = [
+ ":protos_perfetto_trace_sys_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/gpu:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_gpu_lite",
+ deps = [
+ ":protos_perfetto_config_gpu_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/chrome:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_chrome_protos",
+ srcs = [
+ "protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto",
+ "protos/perfetto/trace/chrome/chrome_metadata.proto",
+ "protos/perfetto/trace/chrome/chrome_trace_event.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config/ftrace:lite
+perfetto_proto_library(
+ name = "protos_perfetto_config_ftrace_protos",
+ srcs = [
+ "protos/perfetto/config/ftrace/ftrace_config.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config/ftrace:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_ftrace_lite",
+ deps = [
+ ":protos_perfetto_config_ftrace_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/sys_stats:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_sys_stats_lite",
+ deps = [
+ ":protos_perfetto_trace_sys_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/ipc:wire_protocol
+perfetto_proto_library(
+ name = "protos_perfetto_ipc_wire_protocol_protos",
+ srcs = [
+ "protos/perfetto/ipc/wire_protocol.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config/sys_stats:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_sys_stats_zero",
+ deps = [
+ ":protos_perfetto_config_sys_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/inode_file:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_inode_file_lite",
+ deps = [
+ ":protos_perfetto_config_inode_file_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/ps:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_ps_zero",
+ deps = [
+ ":protos_perfetto_trace_ps_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace_processor:metrics_impl_zero
+perfetto_proto_library(
+ name = "protos_perfetto_trace_processor_metrics_impl_protos",
+ srcs = [
+ "protos/perfetto/trace_processor/metrics_impl.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/interned_data:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_interned_data_zero",
+ deps = [
+ ":protos_perfetto_trace_interned_data_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/interned_data:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_interned_data_lite",
+ deps = [
+ ":protos_perfetto_trace_interned_data_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/ftrace:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_ftrace_protos",
+ srcs = [
+ "protos/perfetto/trace/ftrace/binder.proto",
+ "protos/perfetto/trace/ftrace/block.proto",
+ "protos/perfetto/trace/ftrace/cgroup.proto",
+ "protos/perfetto/trace/ftrace/clk.proto",
+ "protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/ext4.proto",
+ "protos/perfetto/trace/ftrace/f2fs.proto",
+ "protos/perfetto/trace/ftrace/fence.proto",
+ "protos/perfetto/trace/ftrace/filemap.proto",
+ "protos/perfetto/trace/ftrace/ftrace.proto",
+ "protos/perfetto/trace/ftrace/ftrace_event.proto",
+ "protos/perfetto/trace/ftrace/ftrace_event_bundle.proto",
+ "protos/perfetto/trace/ftrace/ftrace_stats.proto",
+ "protos/perfetto/trace/ftrace/generic.proto",
+ "protos/perfetto/trace/ftrace/i2c.proto",
+ "protos/perfetto/trace/ftrace/ipi.proto",
+ "protos/perfetto/trace/ftrace/irq.proto",
+ "protos/perfetto/trace/ftrace/kmem.proto",
+ "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+ "protos/perfetto/trace/ftrace/mdss.proto",
+ "protos/perfetto/trace/ftrace/mm_event.proto",
+ "protos/perfetto/trace/ftrace/oom.proto",
+ "protos/perfetto/trace/ftrace/power.proto",
+ "protos/perfetto/trace/ftrace/raw_syscalls.proto",
+ "protos/perfetto/trace/ftrace/regulator.proto",
+ "protos/perfetto/trace/ftrace/sched.proto",
+ "protos/perfetto/trace/ftrace/signal.proto",
+ "protos/perfetto/trace/ftrace/sync.proto",
+ "protos/perfetto/trace/ftrace/systrace.proto",
+ "protos/perfetto/trace/ftrace/task.proto",
+ "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
+ "protos/perfetto/trace/ftrace/vmscan.proto",
+ "protos/perfetto/trace/ftrace/workqueue.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/perfetto:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_perfetto_protos",
+ srcs = [
+ "protos/perfetto/trace/perfetto/perfetto_metatrace.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/common:zero
+perfetto_proto_library(
+ name = "protos_perfetto_common_protos",
+ srcs = [
+ "protos/perfetto/common/android_log_constants.proto",
+ "protos/perfetto/common/commit_data_request.proto",
+ "protos/perfetto/common/data_source_descriptor.proto",
+ "protos/perfetto/common/descriptor.proto",
+ "protos/perfetto/common/gpu_counter_descriptor.proto",
+ "protos/perfetto/common/observable_events.proto",
+ "protos/perfetto/common/sys_stats_counters.proto",
+ "protos/perfetto/common/trace_stats.proto",
+ "protos/perfetto/common/tracing_service_state.proto",
+ "protos/perfetto/common/track_event_descriptor.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/profiling:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_profiling_lite",
+ deps = [
+ ":protos_perfetto_trace_profiling_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:trusted_lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_trusted_lite",
+ deps = [
+ ":protos_perfetto_trace_trusted_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/ps:zero
+perfetto_proto_library(
+ name = "protos_perfetto_trace_ps_protos",
+ srcs = [
+ "protos/perfetto/trace/ps/process_stats.proto",
+ "protos/perfetto/trace/ps/process_tree.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:minimal_zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_minimal_zero",
+ deps = [
+ ":protos_perfetto_trace_minimal_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/filesystem:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_filesystem_zero",
+ deps = [
+ ":protos_perfetto_trace_filesystem_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/profiling:zero
+perfetto_proto_library(
+ name = "protos_perfetto_config_profiling_protos",
+ srcs = [
+ "protos/perfetto/config/profiling/heapprofd_config.proto",
+ "protos/perfetto/config/profiling/java_hprof_config.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/metrics/android:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_metrics_android_zero",
+ deps = [
+ ":protos_perfetto_metrics_android_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/power:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_power_protos",
+ srcs = [
+ "protos/perfetto/trace/power/battery_counters.proto",
+ "protos/perfetto/trace/power/power_rails.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/ipc:wire_protocol
+perfetto_cc_proto_library(
+ name = "protos_perfetto_ipc_wire_protocol",
+ deps = [
+ ":protos_perfetto_ipc_wire_protocol_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/android:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_android_protos",
+ srcs = [
+ "protos/perfetto/trace/android/android_log.proto",
+ "protos/perfetto/trace/android/graphics_frame_event.proto",
+ "protos/perfetto/trace/android/packages_list.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ],
+)
+
+# GN target: //src/perfetto_cmd:protos
+perfetto_proto_library(
+ name = "src_perfetto_cmd_protos_protos",
+ srcs = [
+ "src/perfetto_cmd/perfetto_cmd_state.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config:zero
+perfetto_proto_library(
+ name = "protos_perfetto_config_protos",
+ srcs = [
+ "protos/perfetto/config/chrome/chrome_config.proto",
+ "protos/perfetto/config/data_source_config.proto",
+ "protos/perfetto/config/test_config.proto",
+ "protos/perfetto/config/trace_config.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ":protos_perfetto_config_android_protos",
+ ":protos_perfetto_config_ftrace_protos",
+ ":protos_perfetto_config_gpu_protos",
+ ":protos_perfetto_config_inode_file_protos",
+ ":protos_perfetto_config_power_protos",
+ ":protos_perfetto_config_process_stats_protos",
+ ":protos_perfetto_config_profiling_protos",
+ ":protos_perfetto_config_sys_stats_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/profiling:lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_profiling_protos",
+ srcs = [
+ "protos/perfetto/trace/profiling/heap_graph.proto",
+ "protos/perfetto/trace/profiling/profile_common.proto",
+ "protos/perfetto/trace/profiling/profile_packet.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:trusted_lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_trusted_protos",
+ srcs = [
+ "protos/perfetto/trace/trusted_packet.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ":protos_perfetto_config_android_protos",
+ ":protos_perfetto_config_ftrace_protos",
+ ":protos_perfetto_config_gpu_protos",
+ ":protos_perfetto_config_inode_file_protos",
+ ":protos_perfetto_config_power_protos",
+ ":protos_perfetto_config_process_stats_protos",
+ ":protos_perfetto_config_profiling_protos",
+ ":protos_perfetto_config_protos",
+ ":protos_perfetto_config_sys_stats_protos",
+ ":protos_perfetto_trace_minimal_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/appended_data:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_appended_data_zero",
+ deps = [
+ ":protos_perfetto_trace_appended_data_protos",
+ ],
+)
+
+# GN target: //protos/third_party/pprof:lite
+perfetto_cc_proto_library(
+ name = "protos_third_party_pprof_lite",
+ deps = [
+ ":protos_third_party_pprof_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/ftrace:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_ftrace_zero",
+ deps = [
+ ":protos_perfetto_config_ftrace_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/android:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_android_lite",
+ deps = [
+ ":protos_perfetto_trace_android_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/profiling:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_config_profiling_lite",
+ deps = [
+ ":protos_perfetto_config_profiling_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_zero",
+ deps = [
+ ":protos_perfetto_config_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/ps:lite
+perfetto_cc_proto_library(
+ name = "protos_perfetto_trace_ps_lite",
+ deps = [
+ ":protos_perfetto_trace_ps_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace/track_event:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_trace_track_event_zero",
+ deps = [
+ ":protos_perfetto_trace_track_event_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/config/process_stats:zero
+perfetto_proto_library(
+ name = "protos_perfetto_config_process_stats_protos",
+ srcs = [
+ "protos/perfetto/config/process_stats/process_stats_config.proto",
+ ],
+)
+
+# GN target: //protos/perfetto/config/inode_file:zero
+perfetto_cc_protozero_library(
+ name = "protos_perfetto_config_inode_file_zero",
+ deps = [
+ ":protos_perfetto_config_inode_file_protos",
+ ],
+)
+
+# GN target: //protos/perfetto/trace:non_minimal_lite
+perfetto_proto_library(
+ name = "protos_perfetto_trace_non_minimal_protos",
+ srcs = [
+ "protos/perfetto/trace/test_event.proto",
+ "protos/perfetto/trace/trace.proto",
+ "protos/perfetto/trace/trace_packet.proto",
+ "protos/perfetto/trace/trace_packet_defaults.proto",
+ ],
+ deps = [
+ ":protos_perfetto_common_protos",
+ ":protos_perfetto_config_android_protos",
+ ":protos_perfetto_config_ftrace_protos",
+ ":protos_perfetto_config_gpu_protos",
+ ":protos_perfetto_config_inode_file_protos",
+ ":protos_perfetto_config_power_protos",
+ ":protos_perfetto_config_process_stats_protos",
+ ":protos_perfetto_config_profiling_protos",
+ ":protos_perfetto_config_protos",
+ ":protos_perfetto_config_sys_stats_protos",
+ ":protos_perfetto_trace_android_protos",
+ ":protos_perfetto_trace_appended_data_protos",
+ ":protos_perfetto_trace_chrome_protos",
+ ":protos_perfetto_trace_filesystem_protos",
+ ":protos_perfetto_trace_ftrace_protos",
+ ":protos_perfetto_trace_gpu_protos",
+ ":protos_perfetto_trace_interned_data_protos",
+ ":protos_perfetto_trace_minimal_protos",
+ ":protos_perfetto_trace_perfetto_protos",
+ ":protos_perfetto_trace_power_protos",
+ ":protos_perfetto_trace_profiling_protos",
+ ":protos_perfetto_trace_ps_protos",
+ ":protos_perfetto_trace_sys_stats_protos",
+ ":protos_perfetto_trace_track_event_protos",
+ ],
+)
+
+
+# ##############################################################################
+# Public targets
+# ##############################################################################
+
+# GN target: //src/perfetto_cmd:perfetto
+perfetto_cc_binary(
+ name = "perfetto",
+ srcs = [
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":include_perfetto_ext_ipc_ipc",
+ ":include_perfetto_ext_traced_traced",
+ ":include_perfetto_ext_tracing_core_core",
+ ":include_perfetto_ext_tracing_ipc_ipc",
+ ":include_perfetto_protozero_protozero",
+ ":include_perfetto_tracing_core_core",
+ ":include_perfetto_tracing_tracing",
+ ":src_android_internal_headers",
+ ":src_android_internal_lazy_library_loader",
+ ":src_base_base",
+ ":src_base_unix_socket",
+ ":src_ipc_ipc",
+ ":src_perfetto_cmd_perfetto_cmd",
+ ":src_perfetto_cmd_trigger_producer",
+ ":src_protozero_protozero",
+ ":src_tracing_common",
+ ":src_tracing_ipc",
+ ":src_tracing_tracing",
+ "src/perfetto_cmd/main.cc",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+ deps = [
+ ":protos_perfetto_common_lite",
+ ":protos_perfetto_common_zero",
+ ":protos_perfetto_config_android_lite",
+ ":protos_perfetto_config_android_zero",
+ ":protos_perfetto_config_ftrace_lite",
+ ":protos_perfetto_config_ftrace_zero",
+ ":protos_perfetto_config_gpu_lite",
+ ":protos_perfetto_config_gpu_zero",
+ ":protos_perfetto_config_inode_file_lite",
+ ":protos_perfetto_config_inode_file_zero",
+ ":protos_perfetto_config_lite",
+ ":protos_perfetto_config_power_lite",
+ ":protos_perfetto_config_power_zero",
+ ":protos_perfetto_config_process_stats_lite",
+ ":protos_perfetto_config_process_stats_zero",
+ ":protos_perfetto_config_profiling_lite",
+ ":protos_perfetto_config_profiling_zero",
+ ":protos_perfetto_config_sys_stats_lite",
+ ":protos_perfetto_config_sys_stats_zero",
+ ":protos_perfetto_config_zero",
+ ":protos_perfetto_ipc_ipc",
+ ":protos_perfetto_ipc_wire_protocol",
+ ":protos_perfetto_trace_android_zero",
+ ":protos_perfetto_trace_appended_data_zero",
+ ":protos_perfetto_trace_chrome_zero",
+ ":protos_perfetto_trace_filesystem_zero",
+ ":protos_perfetto_trace_ftrace_zero",
+ ":protos_perfetto_trace_gpu_zero",
+ ":protos_perfetto_trace_interned_data_zero",
+ ":protos_perfetto_trace_minimal_lite",
+ ":protos_perfetto_trace_minimal_zero",
+ ":protos_perfetto_trace_non_minimal_zero",
+ ":protos_perfetto_trace_perfetto_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",
+ ":protos_perfetto_trace_trusted_lite",
+ ":src_perfetto_cmd_protos",
+ ]
+ + PERFETTO_CONFIG.deps.zlib
+ + PERFETTO_CONFIG.deps.protobuf_lite,
+)
+
+# GN target: //src/trace_processor:trace_processor
+perfetto_cc_library(
+ name = "trace_processor",
+ srcs = [
+ ":src_base_base",
+ ":src_protozero_protozero",
+ ":src_trace_processor_common",
+ ":src_trace_processor_db_lib",
+ ":src_trace_processor_lib",
+ ":src_trace_processor_metrics_lib",
+ ":src_trace_processor_sqlite_sqlite",
+ ":src_trace_processor_tables_tables",
+ ],
+ hdrs = [
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":include_perfetto_ext_traced_sys_stats_counters",
+ ":include_perfetto_protozero_protozero",
+ ":include_perfetto_trace_processor_trace_processor",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+ deps = [
+ ":protos_perfetto_common_zero",
+ ":protos_perfetto_config_android_zero",
+ ":protos_perfetto_config_ftrace_zero",
+ ":protos_perfetto_config_gpu_zero",
+ ":protos_perfetto_config_inode_file_zero",
+ ":protos_perfetto_config_power_zero",
+ ":protos_perfetto_config_process_stats_zero",
+ ":protos_perfetto_config_profiling_zero",
+ ":protos_perfetto_config_sys_stats_zero",
+ ":protos_perfetto_config_zero",
+ ":protos_perfetto_metrics_android_zero",
+ ":protos_perfetto_metrics_zero",
+ ":protos_perfetto_trace_android_zero",
+ ":protos_perfetto_trace_appended_data_zero",
+ ":protos_perfetto_trace_chrome_zero",
+ ":protos_perfetto_trace_filesystem_zero",
+ ":protos_perfetto_trace_ftrace_zero",
+ ":protos_perfetto_trace_gpu_zero",
+ ":protos_perfetto_trace_interned_data_zero",
+ ":protos_perfetto_trace_minimal_zero",
+ ":protos_perfetto_trace_non_minimal_zero",
+ ":protos_perfetto_trace_perfetto_zero",
+ ":protos_perfetto_trace_power_zero",
+ ":protos_perfetto_trace_processor_metrics_impl_zero",
+ ":protos_perfetto_trace_profiling_zero",
+ ":protos_perfetto_trace_ps_zero",
+ ":protos_perfetto_trace_sys_stats_zero",
+ ":protos_perfetto_trace_track_event_zero",
+ ]
+ + PERFETTO_CONFIG.deps.jsoncpp
+ + PERFETTO_CONFIG.deps.zlib
+ + PERFETTO_CONFIG.deps.sqlite
+ + PERFETTO_CONFIG.deps.sqlite_ext_percentile
+ + [ ":cc_merged_sql_metrics" ],
+)
+
+# GN target: //src/trace_processor:trace_processor_shell
+perfetto_cc_binary(
+ name = "trace_processor_shell",
+ srcs = [
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":include_perfetto_ext_traced_sys_stats_counters",
+ ":include_perfetto_protozero_protozero",
+ ":include_perfetto_trace_processor_trace_processor",
+ ":src_base_base",
+ ":src_protozero_protozero",
+ ":src_trace_processor_common",
+ ":src_trace_processor_db_lib",
+ ":src_trace_processor_lib",
+ ":src_trace_processor_metrics_lib",
+ ":src_trace_processor_sqlite_sqlite",
+ ":src_trace_processor_tables_tables",
+ "src/trace_processor/proto_to_json.cc",
+ "src/trace_processor/proto_to_json.h",
+ "src/trace_processor/trace_processor_shell.cc",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+ deps = [
+ ":protos_perfetto_common_zero",
+ ":protos_perfetto_config_android_zero",
+ ":protos_perfetto_config_ftrace_zero",
+ ":protos_perfetto_config_gpu_zero",
+ ":protos_perfetto_config_inode_file_zero",
+ ":protos_perfetto_config_power_zero",
+ ":protos_perfetto_config_process_stats_zero",
+ ":protos_perfetto_config_profiling_zero",
+ ":protos_perfetto_config_sys_stats_zero",
+ ":protos_perfetto_config_zero",
+ ":protos_perfetto_metrics_android_zero",
+ ":protos_perfetto_metrics_zero",
+ ":protos_perfetto_trace_android_zero",
+ ":protos_perfetto_trace_appended_data_zero",
+ ":protos_perfetto_trace_chrome_zero",
+ ":protos_perfetto_trace_filesystem_zero",
+ ":protos_perfetto_trace_ftrace_zero",
+ ":protos_perfetto_trace_gpu_zero",
+ ":protos_perfetto_trace_interned_data_zero",
+ ":protos_perfetto_trace_minimal_zero",
+ ":protos_perfetto_trace_non_minimal_zero",
+ ":protos_perfetto_trace_perfetto_zero",
+ ":protos_perfetto_trace_power_zero",
+ ":protos_perfetto_trace_processor_metrics_impl_zero",
+ ":protos_perfetto_trace_profiling_zero",
+ ":protos_perfetto_trace_ps_zero",
+ ":protos_perfetto_trace_sys_stats_zero",
+ ":protos_perfetto_trace_track_event_zero",
+ ]
+ + PERFETTO_CONFIG.deps.protoc_lib
+ + PERFETTO_CONFIG.deps.linenoise
+ + PERFETTO_CONFIG.deps.jsoncpp
+ + PERFETTO_CONFIG.deps.zlib
+ + PERFETTO_CONFIG.deps.sqlite
+ + PERFETTO_CONFIG.deps.sqlite_ext_percentile
+ + [ ":cc_merged_sql_metrics" ],
+)
+
+# GN target: //src/traced/probes:traced_probes
+perfetto_cc_binary(
+ name = "traced_probes",
+ srcs = [
+ ":include_perfetto_ext_traced_traced",
+ "src/traced/probes/main.cc",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+ deps = [
+ ":libperfetto",
+ ],
+)
+
+# GN target: //src/traced/service:traced
+perfetto_cc_binary(
+ name = "traced",
+ srcs = [
+ ":include_perfetto_ext_traced_traced",
+ "src/traced/service/main.cc",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+ deps = [
+ ":libperfetto",
],
)
# GN target: //tools/trace_to_text:libpprofbuilder
-cc_library(
+perfetto_cc_library(
name = "libpprofbuilder",
srcs = [
- "src/base/event_fd.cc",
- "src/base/file_utils.cc",
- "src/base/metatrace.cc",
- "src/base/paged_memory.cc",
- "src/base/pipe.cc",
- "src/base/string_splitter.cc",
- "src/base/string_utils.cc",
- "src/base/string_view.cc",
- "src/base/temp_file.cc",
- "src/base/thread_checker.cc",
- "src/base/thread_task_runner.cc",
- "src/base/time.cc",
- "src/base/unix_task_runner.cc",
- "src/base/uuid.cc",
- "src/base/virtual_destructors.cc",
- "src/base/waitable_event.cc",
- "src/base/watchdog_posix.cc",
- "src/protozero/message.cc",
- "src/protozero/message_handle.cc",
- "src/protozero/proto_decoder.cc",
- "src/protozero/scattered_heap_buffer.cc",
- "src/protozero/scattered_stream_null_delegate.cc",
- "src/protozero/scattered_stream_writer.cc",
- "tools/trace_to_text/pprof_builder.cc",
- "tools/trace_to_text/profile_visitor.cc",
- "tools/trace_to_text/profile_visitor.h",
- "tools/trace_to_text/symbolizer.cc",
- "tools/trace_to_text/trace_symbol_table.cc",
- "tools/trace_to_text/trace_symbol_table.h",
- "tools/trace_to_text/utils.cc",
- "tools/trace_to_text/utils.h",
+ ":src_base_base",
+ ":tools_trace_to_text_pprofbuilder",
+ ":tools_trace_to_text_symbolizer",
+ ":tools_trace_to_text_utils",
],
hdrs = [
- "include/perfetto/base/build_config.h",
- "include/perfetto/base/build_configs/bazel/perfetto_build_flags.h",
- "include/perfetto/base/compiler.h",
- "include/perfetto/base/copyable_ptr.h",
- "include/perfetto/base/export.h",
- "include/perfetto/base/logging.h",
- "include/perfetto/base/task_runner.h",
- "include/perfetto/base/time.h",
- "include/perfetto/ext/base/circular_queue.h",
- "include/perfetto/ext/base/container_annotations.h",
- "include/perfetto/ext/base/event_fd.h",
- "include/perfetto/ext/base/file_utils.h",
- "include/perfetto/ext/base/hash.h",
- "include/perfetto/ext/base/lookup_set.h",
- "include/perfetto/ext/base/metatrace.h",
- "include/perfetto/ext/base/metatrace_events.h",
- "include/perfetto/ext/base/no_destructor.h",
- "include/perfetto/ext/base/optional.h",
- "include/perfetto/ext/base/paged_memory.h",
- "include/perfetto/ext/base/pipe.h",
- "include/perfetto/ext/base/proc_utils.h",
- "include/perfetto/ext/base/scoped_file.h",
- "include/perfetto/ext/base/small_set.h",
- "include/perfetto/ext/base/string_splitter.h",
- "include/perfetto/ext/base/string_utils.h",
- "include/perfetto/ext/base/string_view.h",
- "include/perfetto/ext/base/string_writer.h",
- "include/perfetto/ext/base/temp_file.h",
- "include/perfetto/ext/base/thread_annotations.h",
- "include/perfetto/ext/base/thread_checker.h",
- "include/perfetto/ext/base/thread_task_runner.h",
- "include/perfetto/ext/base/thread_utils.h",
- "include/perfetto/ext/base/unix_socket.h",
- "include/perfetto/ext/base/unix_task_runner.h",
- "include/perfetto/ext/base/utils.h",
- "include/perfetto/ext/base/uuid.h",
- "include/perfetto/ext/base/waitable_event.h",
- "include/perfetto/ext/base/watchdog.h",
- "include/perfetto/ext/base/watchdog_noop.h",
- "include/perfetto/ext/base/watchdog_posix.h",
- "include/perfetto/ext/base/weak_ptr.h",
- "include/perfetto/ext/traced/sys_stats_counters.h",
- "include/perfetto/protozero/contiguous_memory_range.h",
- "include/perfetto/protozero/field.h",
- "include/perfetto/protozero/message.h",
- "include/perfetto/protozero/message_handle.h",
- "include/perfetto/protozero/packed_repeated_fields.h",
- "include/perfetto/protozero/proto_decoder.h",
- "include/perfetto/protozero/proto_utils.h",
- "include/perfetto/protozero/scattered_heap_buffer.h",
- "include/perfetto/protozero/scattered_stream_null_delegate.h",
- "include/perfetto/protozero/scattered_stream_writer.h",
- "tools/trace_to_text/pprof_builder.h",
- "tools/trace_to_text/symbolizer.h",
+ ":include_perfetto_base_base",
+ ":include_perfetto_ext_base_base",
+ ":include_perfetto_ext_traced_sys_stats_counters",
+ ":include_perfetto_protozero_protozero",
+ ],
+ visibility = [
+ "//visibility:public",
],
deps = [
- "//third_party/perfetto/protos:common_cc_proto",
- "//third_party/perfetto/protos:common_zero_cc_proto",
- "//third_party/perfetto/protos:config_android_cc_proto",
- "//third_party/perfetto/protos:config_android_zero_cc_proto",
- "//third_party/perfetto/protos:config_cc_proto",
- "//third_party/perfetto/protos:config_ftrace_cc_proto",
- "//third_party/perfetto/protos:config_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:config_gpu_cc_proto",
- "//third_party/perfetto/protos:config_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:config_inode_file_cc_proto",
- "//third_party/perfetto/protos:config_inode_file_zero_cc_proto",
- "//third_party/perfetto/protos:config_power_cc_proto",
- "//third_party/perfetto/protos:config_power_zero_cc_proto",
- "//third_party/perfetto/protos:config_process_stats_cc_proto",
- "//third_party/perfetto/protos:config_process_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_profiling_cc_proto",
- "//third_party/perfetto/protos:config_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:config_sys_stats_cc_proto",
- "//third_party/perfetto/protos:config_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_zero_cc_proto",
- "//third_party/perfetto/protos:protos_third_party_pprof_cc_proto",
- "//third_party/perfetto/protos:trace_android_cc_proto",
- "//third_party/perfetto/protos:trace_android_zero_cc_proto",
- "//third_party/perfetto/protos:trace_appended_data_cc_proto",
- "//third_party/perfetto/protos:trace_appended_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_chrome_cc_proto",
- "//third_party/perfetto/protos:trace_chrome_zero_cc_proto",
- "//third_party/perfetto/protos:trace_filesystem_cc_proto",
- "//third_party/perfetto/protos:trace_filesystem_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ftrace_cc_proto",
- "//third_party/perfetto/protos:trace_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:trace_gpu_cc_proto",
- "//third_party/perfetto/protos:trace_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:trace_interned_data_cc_proto",
- "//third_party/perfetto/protos:trace_interned_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_minimal_cc_proto",
- "//third_party/perfetto/protos:trace_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_non_minimal_cc_proto",
- "//third_party/perfetto/protos:trace_non_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_perfetto_cc_proto",
- "//third_party/perfetto/protos:trace_perfetto_zero_cc_proto",
- "//third_party/perfetto/protos:trace_power_cc_proto",
- "//third_party/perfetto/protos:trace_power_zero_cc_proto",
- "//third_party/perfetto/protos:trace_profiling_cc_proto",
- "//third_party/perfetto/protos:trace_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ps_cc_proto",
- "//third_party/perfetto/protos:trace_ps_zero_cc_proto",
- "//third_party/perfetto/protos:trace_sys_stats_cc_proto",
- "//third_party/perfetto/protos:trace_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:trace_track_event_cc_proto",
- "//third_party/perfetto/protos:trace_track_event_zero_cc_proto",
+ ":protos_perfetto_common_lite",
+ ":protos_perfetto_common_zero",
+ ":protos_perfetto_config_android_lite",
+ ":protos_perfetto_config_android_zero",
+ ":protos_perfetto_config_ftrace_lite",
+ ":protos_perfetto_config_ftrace_zero",
+ ":protos_perfetto_config_gpu_lite",
+ ":protos_perfetto_config_gpu_zero",
+ ":protos_perfetto_config_inode_file_lite",
+ ":protos_perfetto_config_inode_file_zero",
+ ":protos_perfetto_config_lite",
+ ":protos_perfetto_config_power_lite",
+ ":protos_perfetto_config_power_zero",
+ ":protos_perfetto_config_process_stats_lite",
+ ":protos_perfetto_config_process_stats_zero",
+ ":protos_perfetto_config_profiling_lite",
+ ":protos_perfetto_config_profiling_zero",
+ ":protos_perfetto_config_sys_stats_lite",
+ ":protos_perfetto_config_sys_stats_zero",
+ ":protos_perfetto_config_zero",
+ ":protos_perfetto_trace_android_lite",
+ ":protos_perfetto_trace_android_zero",
+ ":protos_perfetto_trace_appended_data_lite",
+ ":protos_perfetto_trace_appended_data_zero",
+ ":protos_perfetto_trace_chrome_lite",
+ ":protos_perfetto_trace_chrome_zero",
+ ":protos_perfetto_trace_filesystem_lite",
+ ":protos_perfetto_trace_filesystem_zero",
+ ":protos_perfetto_trace_ftrace_lite",
+ ":protos_perfetto_trace_ftrace_zero",
+ ":protos_perfetto_trace_gpu_lite",
+ ":protos_perfetto_trace_gpu_zero",
+ ":protos_perfetto_trace_interned_data_lite",
+ ":protos_perfetto_trace_interned_data_zero",
+ ":protos_perfetto_trace_minimal_lite",
+ ":protos_perfetto_trace_minimal_zero",
+ ":protos_perfetto_trace_non_minimal_lite",
+ ":protos_perfetto_trace_non_minimal_zero",
+ ":protos_perfetto_trace_perfetto_lite",
+ ":protos_perfetto_trace_perfetto_zero",
+ ":protos_perfetto_trace_power_lite",
+ ":protos_perfetto_trace_power_zero",
+ ":protos_perfetto_trace_profiling_lite",
+ ":protos_perfetto_trace_profiling_zero",
+ ":protos_perfetto_trace_ps_lite",
+ ":protos_perfetto_trace_ps_zero",
+ ":protos_perfetto_trace_sys_stats_lite",
+ ":protos_perfetto_trace_sys_stats_zero",
+ ":protos_perfetto_trace_track_event_lite",
+ ":protos_perfetto_trace_track_event_zero",
+ ":protos_third_party_pprof_lite",
],
)
-# GN target: //src/protozero:libprotozero
+# Content from BUILD.extras
+
+build_config_dir_ = "include/perfetto/base/build_configs/bazel"
+
+# Deliberately NOT a perfetto_cc_library, to avoid cyclic deps.
+# This is pulled as a default dep by all targets.
cc_library(
- name = "libprotozero",
- srcs = [
- "src/protozero/message.cc",
- "src/protozero/message_handle.cc",
- "src/protozero/proto_decoder.cc",
- "src/protozero/scattered_heap_buffer.cc",
- "src/protozero/scattered_stream_null_delegate.cc",
- "src/protozero/scattered_stream_writer.cc",
- ],
- hdrs = [
- "include/perfetto/base/build_config.h",
- "include/perfetto/base/build_configs/bazel/perfetto_build_flags.h",
- "include/perfetto/base/compiler.h",
- "include/perfetto/base/copyable_ptr.h",
- "include/perfetto/base/export.h",
- "include/perfetto/base/logging.h",
- "include/perfetto/base/task_runner.h",
- "include/perfetto/base/time.h",
- "include/perfetto/ext/base/circular_queue.h",
- "include/perfetto/ext/base/container_annotations.h",
- "include/perfetto/ext/base/event_fd.h",
- "include/perfetto/ext/base/file_utils.h",
- "include/perfetto/ext/base/hash.h",
- "include/perfetto/ext/base/lookup_set.h",
- "include/perfetto/ext/base/metatrace.h",
- "include/perfetto/ext/base/metatrace_events.h",
- "include/perfetto/ext/base/no_destructor.h",
- "include/perfetto/ext/base/optional.h",
- "include/perfetto/ext/base/paged_memory.h",
- "include/perfetto/ext/base/pipe.h",
- "include/perfetto/ext/base/proc_utils.h",
- "include/perfetto/ext/base/scoped_file.h",
- "include/perfetto/ext/base/small_set.h",
- "include/perfetto/ext/base/string_splitter.h",
- "include/perfetto/ext/base/string_utils.h",
- "include/perfetto/ext/base/string_view.h",
- "include/perfetto/ext/base/string_writer.h",
- "include/perfetto/ext/base/temp_file.h",
- "include/perfetto/ext/base/thread_annotations.h",
- "include/perfetto/ext/base/thread_checker.h",
- "include/perfetto/ext/base/thread_task_runner.h",
- "include/perfetto/ext/base/thread_utils.h",
- "include/perfetto/ext/base/unix_socket.h",
- "include/perfetto/ext/base/unix_task_runner.h",
- "include/perfetto/ext/base/utils.h",
- "include/perfetto/ext/base/uuid.h",
- "include/perfetto/ext/base/waitable_event.h",
- "include/perfetto/ext/base/watchdog.h",
- "include/perfetto/ext/base/watchdog_noop.h",
- "include/perfetto/ext/base/watchdog_posix.h",
- "include/perfetto/ext/base/weak_ptr.h",
- "include/perfetto/protozero/contiguous_memory_range.h",
- "include/perfetto/protozero/field.h",
- "include/perfetto/protozero/message.h",
- "include/perfetto/protozero/message_handle.h",
- "include/perfetto/protozero/packed_repeated_fields.h",
- "include/perfetto/protozero/proto_decoder.h",
- "include/perfetto/protozero/proto_utils.h",
- "include/perfetto/protozero/scattered_heap_buffer.h",
- "include/perfetto/protozero/scattered_stream_null_delegate.h",
- "include/perfetto/protozero/scattered_stream_writer.h",
- ],
+ name = "build_config_hdr",
+ hdrs = [build_config_dir_ + "/perfetto_build_flags.h"],
+ includes = [build_config_dir_],
)
-# GN target: //src/protozero/protoc_plugin:protozero_plugin
-cc_binary(
- name = "src_protozero_protoc_plugin_protozero_plugin",
- srcs = [
- "include/perfetto/base/build_config.h",
- "include/perfetto/base/build_configs/bazel/perfetto_build_flags.h",
- "include/perfetto/base/compiler.h",
- "include/perfetto/base/copyable_ptr.h",
- "include/perfetto/base/export.h",
- "include/perfetto/base/logging.h",
- "include/perfetto/base/task_runner.h",
- "include/perfetto/base/time.h",
- "include/perfetto/ext/base/circular_queue.h",
- "include/perfetto/ext/base/container_annotations.h",
- "include/perfetto/ext/base/event_fd.h",
- "include/perfetto/ext/base/file_utils.h",
- "include/perfetto/ext/base/hash.h",
- "include/perfetto/ext/base/lookup_set.h",
- "include/perfetto/ext/base/metatrace.h",
- "include/perfetto/ext/base/metatrace_events.h",
- "include/perfetto/ext/base/no_destructor.h",
- "include/perfetto/ext/base/optional.h",
- "include/perfetto/ext/base/paged_memory.h",
- "include/perfetto/ext/base/pipe.h",
- "include/perfetto/ext/base/proc_utils.h",
- "include/perfetto/ext/base/scoped_file.h",
- "include/perfetto/ext/base/small_set.h",
- "include/perfetto/ext/base/string_splitter.h",
- "include/perfetto/ext/base/string_utils.h",
- "include/perfetto/ext/base/string_view.h",
- "include/perfetto/ext/base/string_writer.h",
- "include/perfetto/ext/base/temp_file.h",
- "include/perfetto/ext/base/thread_annotations.h",
- "include/perfetto/ext/base/thread_checker.h",
- "include/perfetto/ext/base/thread_task_runner.h",
- "include/perfetto/ext/base/thread_utils.h",
- "include/perfetto/ext/base/unix_socket.h",
- "include/perfetto/ext/base/unix_task_runner.h",
- "include/perfetto/ext/base/utils.h",
- "include/perfetto/ext/base/uuid.h",
- "include/perfetto/ext/base/waitable_event.h",
- "include/perfetto/ext/base/watchdog.h",
- "include/perfetto/ext/base/watchdog_noop.h",
- "include/perfetto/ext/base/watchdog_posix.h",
- "include/perfetto/ext/base/weak_ptr.h",
- "src/base/event_fd.cc",
- "src/base/file_utils.cc",
- "src/base/metatrace.cc",
- "src/base/paged_memory.cc",
- "src/base/pipe.cc",
- "src/base/string_splitter.cc",
- "src/base/string_utils.cc",
- "src/base/string_view.cc",
- "src/base/temp_file.cc",
- "src/base/thread_checker.cc",
- "src/base/thread_task_runner.cc",
- "src/base/time.cc",
- "src/base/unix_task_runner.cc",
- "src/base/uuid.cc",
- "src/base/virtual_destructors.cc",
- "src/base/waitable_event.cc",
- "src/base/watchdog_posix.cc",
- "src/protozero/protoc_plugin/protozero_plugin.cc",
- ],
- deps = [
- "//third_party/protobuf:libprotoc_legacy",
- "//third_party/protobuf:protobuf_legacy",
- ],
+perfetto_cc_library(
+ name = "cc_merged_sql_metrics",
+ hdrs = ["src/trace_processor/metrics/sql_metrics.h"],
)
-# GN target: //src/trace_processor:trace_processor
-cc_library(
- name = "trace_processor",
- srcs = [
- "src/base/event_fd.cc",
- "src/base/file_utils.cc",
- "src/base/metatrace.cc",
- "src/base/paged_memory.cc",
- "src/base/pipe.cc",
- "src/base/string_splitter.cc",
- "src/base/string_utils.cc",
- "src/base/string_view.cc",
- "src/base/temp_file.cc",
- "src/base/thread_checker.cc",
- "src/base/thread_task_runner.cc",
- "src/base/time.cc",
- "src/base/unix_task_runner.cc",
- "src/base/uuid.cc",
- "src/base/virtual_destructors.cc",
- "src/base/waitable_event.cc",
- "src/base/watchdog_posix.cc",
- "src/protozero/message.cc",
- "src/protozero/message_handle.cc",
- "src/protozero/proto_decoder.cc",
- "src/protozero/scattered_heap_buffer.cc",
- "src/protozero/scattered_stream_null_delegate.cc",
- "src/protozero/scattered_stream_writer.cc",
- "src/trace_processor/android_logs_table.cc",
- "src/trace_processor/android_logs_table.h",
- "src/trace_processor/args_table.cc",
- "src/trace_processor/args_table.h",
- "src/trace_processor/args_tracker.cc",
- "src/trace_processor/args_tracker.h",
- "src/trace_processor/chunked_trace_reader.h",
- "src/trace_processor/clock_tracker.cc",
- "src/trace_processor/clock_tracker.h",
- "src/trace_processor/counter_definitions_table.cc",
- "src/trace_processor/counter_definitions_table.h",
- "src/trace_processor/counter_values_table.cc",
- "src/trace_processor/counter_values_table.h",
- "src/trace_processor/cpu_profile_stack_sample_table.cc",
- "src/trace_processor/cpu_profile_stack_sample_table.h",
- "src/trace_processor/db/bit_vector.cc",
- "src/trace_processor/db/bit_vector.h",
- "src/trace_processor/db/column.cc",
- "src/trace_processor/db/column.h",
- "src/trace_processor/db/row_map.cc",
- "src/trace_processor/db/row_map.h",
- "src/trace_processor/db/sparse_vector.h",
- "src/trace_processor/db/table.cc",
- "src/trace_processor/db/table.h",
- "src/trace_processor/db/typed_column.h",
- "src/trace_processor/event_tracker.cc",
- "src/trace_processor/event_tracker.h",
- "src/trace_processor/export_json.cc",
- "src/trace_processor/export_json.h",
- "src/trace_processor/filtered_row_index.cc",
- "src/trace_processor/filtered_row_index.h",
- "src/trace_processor/forwarding_trace_parser.cc",
- "src/trace_processor/forwarding_trace_parser.h",
- "src/trace_processor/ftrace_descriptors.cc",
- "src/trace_processor/ftrace_descriptors.h",
- "src/trace_processor/ftrace_utils.cc",
- "src/trace_processor/ftrace_utils.h",
- "src/trace_processor/fuchsia_provider_view.cc",
- "src/trace_processor/fuchsia_provider_view.h",
- "src/trace_processor/fuchsia_trace_parser.cc",
- "src/trace_processor/fuchsia_trace_parser.h",
- "src/trace_processor/fuchsia_trace_tokenizer.cc",
- "src/trace_processor/fuchsia_trace_tokenizer.h",
- "src/trace_processor/fuchsia_trace_utils.cc",
- "src/trace_processor/fuchsia_trace_utils.h",
- "src/trace_processor/graphics_frame_event_parser.cc",
- "src/trace_processor/graphics_frame_event_parser.h",
- "src/trace_processor/gzip_trace_parser.cc",
- "src/trace_processor/gzip_trace_parser.h",
- "src/trace_processor/heap_profile_allocation_table.cc",
- "src/trace_processor/heap_profile_allocation_table.h",
- "src/trace_processor/heap_profile_tracker.cc",
- "src/trace_processor/heap_profile_tracker.h",
- "src/trace_processor/instants_table.cc",
- "src/trace_processor/instants_table.h",
- "src/trace_processor/json_trace_parser.cc",
- "src/trace_processor/json_trace_parser.h",
- "src/trace_processor/json_trace_tokenizer.cc",
- "src/trace_processor/json_trace_tokenizer.h",
- "src/trace_processor/json_trace_utils.cc",
- "src/trace_processor/json_trace_utils.h",
- "src/trace_processor/metadata.h",
- "src/trace_processor/metadata_table.cc",
- "src/trace_processor/metadata_table.h",
- "src/trace_processor/metrics/descriptors.cc",
- "src/trace_processor/metrics/descriptors.h",
- "src/trace_processor/metrics/metrics.cc",
- "src/trace_processor/metrics/metrics.descriptor.h",
- "src/trace_processor/metrics/metrics.h",
- "src/trace_processor/metrics/sql_metrics.h",
- "src/trace_processor/null_term_string_view.h",
- "src/trace_processor/process_table.cc",
- "src/trace_processor/process_table.h",
- "src/trace_processor/process_tracker.cc",
- "src/trace_processor/process_tracker.h",
- "src/trace_processor/proto_incremental_state.h",
- "src/trace_processor/proto_trace_parser.cc",
- "src/trace_processor/proto_trace_parser.h",
- "src/trace_processor/proto_trace_tokenizer.cc",
- "src/trace_processor/proto_trace_tokenizer.h",
- "src/trace_processor/raw_table.cc",
- "src/trace_processor/raw_table.h",
- "src/trace_processor/row_iterators.cc",
- "src/trace_processor/row_iterators.h",
- "src/trace_processor/sched_slice_table.cc",
- "src/trace_processor/sched_slice_table.h",
- "src/trace_processor/slice_table.cc",
- "src/trace_processor/slice_table.h",
- "src/trace_processor/slice_tracker.cc",
- "src/trace_processor/slice_tracker.h",
- "src/trace_processor/span_join_operator_table.cc",
- "src/trace_processor/span_join_operator_table.h",
- "src/trace_processor/sql_stats_table.cc",
- "src/trace_processor/sql_stats_table.h",
- "src/trace_processor/sqlite/db_sqlite_table.cc",
- "src/trace_processor/sqlite/db_sqlite_table.h",
- "src/trace_processor/sqlite/query_constraints.cc",
- "src/trace_processor/sqlite/query_constraints.h",
- "src/trace_processor/sqlite/scoped_db.h",
- "src/trace_processor/sqlite/sqlite3_str_split.cc",
- "src/trace_processor/sqlite/sqlite3_str_split.h",
- "src/trace_processor/sqlite/sqlite_table.cc",
- "src/trace_processor/sqlite/sqlite_table.h",
- "src/trace_processor/sqlite/sqlite_utils.h",
- "src/trace_processor/stack_profile_callsite_table.cc",
- "src/trace_processor/stack_profile_callsite_table.h",
- "src/trace_processor/stack_profile_frame_table.cc",
- "src/trace_processor/stack_profile_frame_table.h",
- "src/trace_processor/stack_profile_mapping_table.cc",
- "src/trace_processor/stack_profile_mapping_table.h",
- "src/trace_processor/stack_profile_tracker.cc",
- "src/trace_processor/stack_profile_tracker.h",
- "src/trace_processor/stats.h",
- "src/trace_processor/stats_table.cc",
- "src/trace_processor/stats_table.h",
- "src/trace_processor/storage_columns.cc",
- "src/trace_processor/storage_columns.h",
- "src/trace_processor/storage_schema.cc",
- "src/trace_processor/storage_schema.h",
- "src/trace_processor/storage_table.cc",
- "src/trace_processor/storage_table.h",
- "src/trace_processor/string_pool.cc",
- "src/trace_processor/string_pool.h",
- "src/trace_processor/syscall_tracker.cc",
- "src/trace_processor/syscall_tracker.h",
- "src/trace_processor/syscalls_aarch32.h",
- "src/trace_processor/syscalls_aarch64.h",
- "src/trace_processor/syscalls_armeabi.h",
- "src/trace_processor/syscalls_x86_64.h",
- "src/trace_processor/systrace_parser.cc",
- "src/trace_processor/systrace_parser.h",
- "src/trace_processor/systrace_trace_parser.cc",
- "src/trace_processor/systrace_trace_parser.h",
- "src/trace_processor/tables/macros.h",
- "src/trace_processor/tables/macros_internal.h",
- "src/trace_processor/tables/slice_tables.h",
- "src/trace_processor/tables/track_tables.h",
- "src/trace_processor/thread_table.cc",
- "src/trace_processor/thread_table.h",
- "src/trace_processor/trace_blob_view.h",
- "src/trace_processor/trace_parser.h",
- "src/trace_processor/trace_processor.cc",
- "src/trace_processor/trace_processor_context.cc",
- "src/trace_processor/trace_processor_context.h",
- "src/trace_processor/trace_processor_impl.cc",
- "src/trace_processor/trace_processor_impl.h",
- "src/trace_processor/trace_sorter.cc",
- "src/trace_processor/trace_sorter.h",
- "src/trace_processor/trace_storage.cc",
- "src/trace_processor/trace_storage.h",
- "src/trace_processor/variadic.h",
- "src/trace_processor/virtual_destructors.cc",
- "src/trace_processor/virtual_track_tracker.cc",
- "src/trace_processor/virtual_track_tracker.h",
- "src/trace_processor/window_operator_table.cc",
- "src/trace_processor/window_operator_table.h",
- ],
- hdrs = [
- "include/perfetto/base/build_config.h",
- "include/perfetto/base/build_configs/bazel/perfetto_build_flags.h",
- "include/perfetto/base/compiler.h",
- "include/perfetto/base/copyable_ptr.h",
- "include/perfetto/base/export.h",
- "include/perfetto/base/logging.h",
- "include/perfetto/base/task_runner.h",
- "include/perfetto/base/time.h",
- "include/perfetto/ext/base/circular_queue.h",
- "include/perfetto/ext/base/container_annotations.h",
- "include/perfetto/ext/base/event_fd.h",
- "include/perfetto/ext/base/file_utils.h",
- "include/perfetto/ext/base/hash.h",
- "include/perfetto/ext/base/lookup_set.h",
- "include/perfetto/ext/base/metatrace.h",
- "include/perfetto/ext/base/metatrace_events.h",
- "include/perfetto/ext/base/no_destructor.h",
- "include/perfetto/ext/base/optional.h",
- "include/perfetto/ext/base/paged_memory.h",
- "include/perfetto/ext/base/pipe.h",
- "include/perfetto/ext/base/proc_utils.h",
- "include/perfetto/ext/base/scoped_file.h",
- "include/perfetto/ext/base/small_set.h",
- "include/perfetto/ext/base/string_splitter.h",
- "include/perfetto/ext/base/string_utils.h",
- "include/perfetto/ext/base/string_view.h",
- "include/perfetto/ext/base/string_writer.h",
- "include/perfetto/ext/base/temp_file.h",
- "include/perfetto/ext/base/thread_annotations.h",
- "include/perfetto/ext/base/thread_checker.h",
- "include/perfetto/ext/base/thread_task_runner.h",
- "include/perfetto/ext/base/thread_utils.h",
- "include/perfetto/ext/base/unix_socket.h",
- "include/perfetto/ext/base/unix_task_runner.h",
- "include/perfetto/ext/base/utils.h",
- "include/perfetto/ext/base/uuid.h",
- "include/perfetto/ext/base/waitable_event.h",
- "include/perfetto/ext/base/watchdog.h",
- "include/perfetto/ext/base/watchdog_noop.h",
- "include/perfetto/ext/base/watchdog_posix.h",
- "include/perfetto/ext/base/weak_ptr.h",
- "include/perfetto/ext/traced/sys_stats_counters.h",
- "include/perfetto/protozero/contiguous_memory_range.h",
- "include/perfetto/protozero/field.h",
- "include/perfetto/protozero/message.h",
- "include/perfetto/protozero/message_handle.h",
- "include/perfetto/protozero/packed_repeated_fields.h",
- "include/perfetto/protozero/proto_decoder.h",
- "include/perfetto/protozero/proto_utils.h",
- "include/perfetto/protozero/scattered_heap_buffer.h",
- "include/perfetto/protozero/scattered_stream_null_delegate.h",
- "include/perfetto/protozero/scattered_stream_writer.h",
- "include/perfetto/trace_processor/basic_types.h",
- "include/perfetto/trace_processor/status.h",
- "include/perfetto/trace_processor/trace_processor.h",
- ],
- deps = [
- "//third_party/perfetto:gen_merged_sql_metrics",
- "//third_party/perfetto/google:jsoncpp",
- "//third_party/perfetto/protos:common_zero_cc_proto",
- "//third_party/perfetto/protos:config_android_zero_cc_proto",
- "//third_party/perfetto/protos:config_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:config_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:config_inode_file_zero_cc_proto",
- "//third_party/perfetto/protos:config_power_zero_cc_proto",
- "//third_party/perfetto/protos:config_process_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:config_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_zero_cc_proto",
- "//third_party/perfetto/protos:metrics_android_zero_cc_proto",
- "//third_party/perfetto/protos:metrics_zero_cc_proto",
- "//third_party/perfetto/protos:trace_android_zero_cc_proto",
- "//third_party/perfetto/protos:trace_appended_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_chrome_zero_cc_proto",
- "//third_party/perfetto/protos:trace_filesystem_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:trace_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:trace_interned_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_non_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_perfetto_zero_cc_proto",
- "//third_party/perfetto/protos:trace_power_zero_cc_proto",
- "//third_party/perfetto/protos:trace_processor_metrics_impl_zero_cc_proto",
- "//third_party/perfetto/protos:trace_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ps_zero_cc_proto",
- "//third_party/perfetto/protos:trace_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:trace_track_event_zero_cc_proto",
- "//third_party/sqlite",
- "//third_party/sqlite:sqlite_ext_percentile",
- "//third_party/zlib:zlibsystem",
- ],
-)
-
-# GN target: //src/trace_processor:trace_processor_shell
-cc_binary(
- name = "trace_processor_shell",
- srcs = [
- "include/perfetto/base/build_config.h",
- "include/perfetto/base/build_configs/bazel/perfetto_build_flags.h",
- "include/perfetto/base/compiler.h",
- "include/perfetto/base/copyable_ptr.h",
- "include/perfetto/base/export.h",
- "include/perfetto/base/logging.h",
- "include/perfetto/base/task_runner.h",
- "include/perfetto/base/time.h",
- "include/perfetto/ext/base/circular_queue.h",
- "include/perfetto/ext/base/container_annotations.h",
- "include/perfetto/ext/base/event_fd.h",
- "include/perfetto/ext/base/file_utils.h",
- "include/perfetto/ext/base/hash.h",
- "include/perfetto/ext/base/lookup_set.h",
- "include/perfetto/ext/base/metatrace.h",
- "include/perfetto/ext/base/metatrace_events.h",
- "include/perfetto/ext/base/no_destructor.h",
- "include/perfetto/ext/base/optional.h",
- "include/perfetto/ext/base/paged_memory.h",
- "include/perfetto/ext/base/pipe.h",
- "include/perfetto/ext/base/proc_utils.h",
- "include/perfetto/ext/base/scoped_file.h",
- "include/perfetto/ext/base/small_set.h",
- "include/perfetto/ext/base/string_splitter.h",
- "include/perfetto/ext/base/string_utils.h",
- "include/perfetto/ext/base/string_view.h",
- "include/perfetto/ext/base/string_writer.h",
- "include/perfetto/ext/base/temp_file.h",
- "include/perfetto/ext/base/thread_annotations.h",
- "include/perfetto/ext/base/thread_checker.h",
- "include/perfetto/ext/base/thread_task_runner.h",
- "include/perfetto/ext/base/thread_utils.h",
- "include/perfetto/ext/base/unix_socket.h",
- "include/perfetto/ext/base/unix_task_runner.h",
- "include/perfetto/ext/base/utils.h",
- "include/perfetto/ext/base/uuid.h",
- "include/perfetto/ext/base/waitable_event.h",
- "include/perfetto/ext/base/watchdog.h",
- "include/perfetto/ext/base/watchdog_noop.h",
- "include/perfetto/ext/base/watchdog_posix.h",
- "include/perfetto/ext/base/weak_ptr.h",
- "include/perfetto/ext/traced/sys_stats_counters.h",
- "include/perfetto/protozero/contiguous_memory_range.h",
- "include/perfetto/protozero/field.h",
- "include/perfetto/protozero/message.h",
- "include/perfetto/protozero/message_handle.h",
- "include/perfetto/protozero/packed_repeated_fields.h",
- "include/perfetto/protozero/proto_decoder.h",
- "include/perfetto/protozero/proto_utils.h",
- "include/perfetto/protozero/scattered_heap_buffer.h",
- "include/perfetto/protozero/scattered_stream_null_delegate.h",
- "include/perfetto/protozero/scattered_stream_writer.h",
- "include/perfetto/trace_processor/basic_types.h",
- "include/perfetto/trace_processor/status.h",
- "include/perfetto/trace_processor/trace_processor.h",
- "src/base/event_fd.cc",
- "src/base/file_utils.cc",
- "src/base/metatrace.cc",
- "src/base/paged_memory.cc",
- "src/base/pipe.cc",
- "src/base/string_splitter.cc",
- "src/base/string_utils.cc",
- "src/base/string_view.cc",
- "src/base/temp_file.cc",
- "src/base/thread_checker.cc",
- "src/base/thread_task_runner.cc",
- "src/base/time.cc",
- "src/base/unix_task_runner.cc",
- "src/base/uuid.cc",
- "src/base/virtual_destructors.cc",
- "src/base/waitable_event.cc",
- "src/base/watchdog_posix.cc",
- "src/protozero/message.cc",
- "src/protozero/message_handle.cc",
- "src/protozero/proto_decoder.cc",
- "src/protozero/scattered_heap_buffer.cc",
- "src/protozero/scattered_stream_null_delegate.cc",
- "src/protozero/scattered_stream_writer.cc",
- "src/trace_processor/android_logs_table.cc",
- "src/trace_processor/android_logs_table.h",
- "src/trace_processor/args_table.cc",
- "src/trace_processor/args_table.h",
- "src/trace_processor/args_tracker.cc",
- "src/trace_processor/args_tracker.h",
- "src/trace_processor/chunked_trace_reader.h",
- "src/trace_processor/clock_tracker.cc",
- "src/trace_processor/clock_tracker.h",
- "src/trace_processor/counter_definitions_table.cc",
- "src/trace_processor/counter_definitions_table.h",
- "src/trace_processor/counter_values_table.cc",
- "src/trace_processor/counter_values_table.h",
- "src/trace_processor/cpu_profile_stack_sample_table.cc",
- "src/trace_processor/cpu_profile_stack_sample_table.h",
- "src/trace_processor/db/bit_vector.cc",
- "src/trace_processor/db/bit_vector.h",
- "src/trace_processor/db/column.cc",
- "src/trace_processor/db/column.h",
- "src/trace_processor/db/row_map.cc",
- "src/trace_processor/db/row_map.h",
- "src/trace_processor/db/sparse_vector.h",
- "src/trace_processor/db/table.cc",
- "src/trace_processor/db/table.h",
- "src/trace_processor/db/typed_column.h",
- "src/trace_processor/event_tracker.cc",
- "src/trace_processor/event_tracker.h",
- "src/trace_processor/export_json.cc",
- "src/trace_processor/export_json.h",
- "src/trace_processor/filtered_row_index.cc",
- "src/trace_processor/filtered_row_index.h",
- "src/trace_processor/forwarding_trace_parser.cc",
- "src/trace_processor/forwarding_trace_parser.h",
- "src/trace_processor/ftrace_descriptors.cc",
- "src/trace_processor/ftrace_descriptors.h",
- "src/trace_processor/ftrace_utils.cc",
- "src/trace_processor/ftrace_utils.h",
- "src/trace_processor/fuchsia_provider_view.cc",
- "src/trace_processor/fuchsia_provider_view.h",
- "src/trace_processor/fuchsia_trace_parser.cc",
- "src/trace_processor/fuchsia_trace_parser.h",
- "src/trace_processor/fuchsia_trace_tokenizer.cc",
- "src/trace_processor/fuchsia_trace_tokenizer.h",
- "src/trace_processor/fuchsia_trace_utils.cc",
- "src/trace_processor/fuchsia_trace_utils.h",
- "src/trace_processor/graphics_frame_event_parser.cc",
- "src/trace_processor/graphics_frame_event_parser.h",
- "src/trace_processor/gzip_trace_parser.cc",
- "src/trace_processor/gzip_trace_parser.h",
- "src/trace_processor/heap_profile_allocation_table.cc",
- "src/trace_processor/heap_profile_allocation_table.h",
- "src/trace_processor/heap_profile_tracker.cc",
- "src/trace_processor/heap_profile_tracker.h",
- "src/trace_processor/instants_table.cc",
- "src/trace_processor/instants_table.h",
- "src/trace_processor/json_trace_parser.cc",
- "src/trace_processor/json_trace_parser.h",
- "src/trace_processor/json_trace_tokenizer.cc",
- "src/trace_processor/json_trace_tokenizer.h",
- "src/trace_processor/json_trace_utils.cc",
- "src/trace_processor/json_trace_utils.h",
- "src/trace_processor/metadata.h",
- "src/trace_processor/metadata_table.cc",
- "src/trace_processor/metadata_table.h",
- "src/trace_processor/metrics/descriptors.cc",
- "src/trace_processor/metrics/descriptors.h",
- "src/trace_processor/metrics/metrics.cc",
- "src/trace_processor/metrics/metrics.descriptor.h",
- "src/trace_processor/metrics/metrics.h",
- "src/trace_processor/metrics/sql_metrics.h",
- "src/trace_processor/null_term_string_view.h",
- "src/trace_processor/process_table.cc",
- "src/trace_processor/process_table.h",
- "src/trace_processor/process_tracker.cc",
- "src/trace_processor/process_tracker.h",
- "src/trace_processor/proto_incremental_state.h",
- "src/trace_processor/proto_to_json.cc",
- "src/trace_processor/proto_to_json.h",
- "src/trace_processor/proto_trace_parser.cc",
- "src/trace_processor/proto_trace_parser.h",
- "src/trace_processor/proto_trace_tokenizer.cc",
- "src/trace_processor/proto_trace_tokenizer.h",
- "src/trace_processor/raw_table.cc",
- "src/trace_processor/raw_table.h",
- "src/trace_processor/row_iterators.cc",
- "src/trace_processor/row_iterators.h",
- "src/trace_processor/sched_slice_table.cc",
- "src/trace_processor/sched_slice_table.h",
- "src/trace_processor/slice_table.cc",
- "src/trace_processor/slice_table.h",
- "src/trace_processor/slice_tracker.cc",
- "src/trace_processor/slice_tracker.h",
- "src/trace_processor/span_join_operator_table.cc",
- "src/trace_processor/span_join_operator_table.h",
- "src/trace_processor/sql_stats_table.cc",
- "src/trace_processor/sql_stats_table.h",
- "src/trace_processor/sqlite/db_sqlite_table.cc",
- "src/trace_processor/sqlite/db_sqlite_table.h",
- "src/trace_processor/sqlite/query_constraints.cc",
- "src/trace_processor/sqlite/query_constraints.h",
- "src/trace_processor/sqlite/scoped_db.h",
- "src/trace_processor/sqlite/sqlite3_str_split.cc",
- "src/trace_processor/sqlite/sqlite3_str_split.h",
- "src/trace_processor/sqlite/sqlite_table.cc",
- "src/trace_processor/sqlite/sqlite_table.h",
- "src/trace_processor/sqlite/sqlite_utils.h",
- "src/trace_processor/stack_profile_callsite_table.cc",
- "src/trace_processor/stack_profile_callsite_table.h",
- "src/trace_processor/stack_profile_frame_table.cc",
- "src/trace_processor/stack_profile_frame_table.h",
- "src/trace_processor/stack_profile_mapping_table.cc",
- "src/trace_processor/stack_profile_mapping_table.h",
- "src/trace_processor/stack_profile_tracker.cc",
- "src/trace_processor/stack_profile_tracker.h",
- "src/trace_processor/stats.h",
- "src/trace_processor/stats_table.cc",
- "src/trace_processor/stats_table.h",
- "src/trace_processor/storage_columns.cc",
- "src/trace_processor/storage_columns.h",
- "src/trace_processor/storage_schema.cc",
- "src/trace_processor/storage_schema.h",
- "src/trace_processor/storage_table.cc",
- "src/trace_processor/storage_table.h",
- "src/trace_processor/string_pool.cc",
- "src/trace_processor/string_pool.h",
- "src/trace_processor/syscall_tracker.cc",
- "src/trace_processor/syscall_tracker.h",
- "src/trace_processor/syscalls_aarch32.h",
- "src/trace_processor/syscalls_aarch64.h",
- "src/trace_processor/syscalls_armeabi.h",
- "src/trace_processor/syscalls_x86_64.h",
- "src/trace_processor/systrace_parser.cc",
- "src/trace_processor/systrace_parser.h",
- "src/trace_processor/systrace_trace_parser.cc",
- "src/trace_processor/systrace_trace_parser.h",
- "src/trace_processor/tables/macros.h",
- "src/trace_processor/tables/macros_internal.h",
- "src/trace_processor/tables/slice_tables.h",
- "src/trace_processor/tables/track_tables.h",
- "src/trace_processor/thread_table.cc",
- "src/trace_processor/thread_table.h",
- "src/trace_processor/trace_blob_view.h",
- "src/trace_processor/trace_parser.h",
- "src/trace_processor/trace_processor.cc",
- "src/trace_processor/trace_processor_context.cc",
- "src/trace_processor/trace_processor_context.h",
- "src/trace_processor/trace_processor_impl.cc",
- "src/trace_processor/trace_processor_impl.h",
- "src/trace_processor/trace_processor_shell.cc",
- "src/trace_processor/trace_sorter.cc",
- "src/trace_processor/trace_sorter.h",
- "src/trace_processor/trace_storage.cc",
- "src/trace_processor/trace_storage.h",
- "src/trace_processor/variadic.h",
- "src/trace_processor/virtual_destructors.cc",
- "src/trace_processor/virtual_track_tracker.cc",
- "src/trace_processor/virtual_track_tracker.h",
- "src/trace_processor/window_operator_table.cc",
- "src/trace_processor/window_operator_table.h",
- ],
- deps = [
- "//third_party/perfetto:gen_merged_sql_metrics",
- "//third_party/perfetto/google:jsoncpp",
- "//third_party/perfetto/google:linenoise",
- "//third_party/perfetto/protos:common_zero_cc_proto",
- "//third_party/perfetto/protos:config_android_zero_cc_proto",
- "//third_party/perfetto/protos:config_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:config_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:config_inode_file_zero_cc_proto",
- "//third_party/perfetto/protos:config_power_zero_cc_proto",
- "//third_party/perfetto/protos:config_process_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:config_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_zero_cc_proto",
- "//third_party/perfetto/protos:metrics_android_zero_cc_proto",
- "//third_party/perfetto/protos:metrics_zero_cc_proto",
- "//third_party/perfetto/protos:trace_android_zero_cc_proto",
- "//third_party/perfetto/protos:trace_appended_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_chrome_zero_cc_proto",
- "//third_party/perfetto/protos:trace_filesystem_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:trace_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:trace_interned_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_non_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_perfetto_zero_cc_proto",
- "//third_party/perfetto/protos:trace_power_zero_cc_proto",
- "//third_party/perfetto/protos:trace_processor_metrics_impl_zero_cc_proto",
- "//third_party/perfetto/protos:trace_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ps_zero_cc_proto",
- "//third_party/perfetto/protos:trace_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:trace_track_event_zero_cc_proto",
- "//third_party/protobuf:libprotoc_legacy",
- "//third_party/protobuf:protobuf_legacy",
- "//third_party/sqlite",
- "//third_party/sqlite:sqlite_ext_percentile",
- "//third_party/zlib:zlibsystem",
- ],
-)
-
-# GN target: //tools/trace_to_text:trace_to_text
-cc_binary(
- name = "trace_to_text",
- srcs = [
- "include/perfetto/base/build_config.h",
- "include/perfetto/base/build_configs/bazel/perfetto_build_flags.h",
- "include/perfetto/base/compiler.h",
- "include/perfetto/base/copyable_ptr.h",
- "include/perfetto/base/export.h",
- "include/perfetto/base/logging.h",
- "include/perfetto/base/task_runner.h",
- "include/perfetto/base/time.h",
- "include/perfetto/ext/base/circular_queue.h",
- "include/perfetto/ext/base/container_annotations.h",
- "include/perfetto/ext/base/event_fd.h",
- "include/perfetto/ext/base/file_utils.h",
- "include/perfetto/ext/base/hash.h",
- "include/perfetto/ext/base/lookup_set.h",
- "include/perfetto/ext/base/metatrace.h",
- "include/perfetto/ext/base/metatrace_events.h",
- "include/perfetto/ext/base/no_destructor.h",
- "include/perfetto/ext/base/optional.h",
- "include/perfetto/ext/base/paged_memory.h",
- "include/perfetto/ext/base/pipe.h",
- "include/perfetto/ext/base/proc_utils.h",
- "include/perfetto/ext/base/scoped_file.h",
- "include/perfetto/ext/base/small_set.h",
- "include/perfetto/ext/base/string_splitter.h",
- "include/perfetto/ext/base/string_utils.h",
- "include/perfetto/ext/base/string_view.h",
- "include/perfetto/ext/base/string_writer.h",
- "include/perfetto/ext/base/temp_file.h",
- "include/perfetto/ext/base/thread_annotations.h",
- "include/perfetto/ext/base/thread_checker.h",
- "include/perfetto/ext/base/thread_task_runner.h",
- "include/perfetto/ext/base/thread_utils.h",
- "include/perfetto/ext/base/unix_socket.h",
- "include/perfetto/ext/base/unix_task_runner.h",
- "include/perfetto/ext/base/utils.h",
- "include/perfetto/ext/base/uuid.h",
- "include/perfetto/ext/base/waitable_event.h",
- "include/perfetto/ext/base/watchdog.h",
- "include/perfetto/ext/base/watchdog_noop.h",
- "include/perfetto/ext/base/watchdog_posix.h",
- "include/perfetto/ext/base/weak_ptr.h",
- "include/perfetto/ext/traced/sys_stats_counters.h",
- "include/perfetto/protozero/contiguous_memory_range.h",
- "include/perfetto/protozero/field.h",
- "include/perfetto/protozero/message.h",
- "include/perfetto/protozero/message_handle.h",
- "include/perfetto/protozero/packed_repeated_fields.h",
- "include/perfetto/protozero/proto_decoder.h",
- "include/perfetto/protozero/proto_utils.h",
- "include/perfetto/protozero/scattered_heap_buffer.h",
- "include/perfetto/protozero/scattered_stream_null_delegate.h",
- "include/perfetto/protozero/scattered_stream_writer.h",
- "include/perfetto/trace_processor/basic_types.h",
- "include/perfetto/trace_processor/status.h",
- "include/perfetto/trace_processor/trace_processor.h",
- "src/base/event_fd.cc",
- "src/base/file_utils.cc",
- "src/base/metatrace.cc",
- "src/base/paged_memory.cc",
- "src/base/pipe.cc",
- "src/base/string_splitter.cc",
- "src/base/string_utils.cc",
- "src/base/string_view.cc",
- "src/base/temp_file.cc",
- "src/base/thread_checker.cc",
- "src/base/thread_task_runner.cc",
- "src/base/time.cc",
- "src/base/unix_task_runner.cc",
- "src/base/uuid.cc",
- "src/base/virtual_destructors.cc",
- "src/base/waitable_event.cc",
- "src/base/watchdog_posix.cc",
- "src/protozero/message.cc",
- "src/protozero/message_handle.cc",
- "src/protozero/proto_decoder.cc",
- "src/protozero/scattered_heap_buffer.cc",
- "src/protozero/scattered_stream_null_delegate.cc",
- "src/protozero/scattered_stream_writer.cc",
- "src/trace_processor/android_logs_table.cc",
- "src/trace_processor/android_logs_table.h",
- "src/trace_processor/args_table.cc",
- "src/trace_processor/args_table.h",
- "src/trace_processor/args_tracker.cc",
- "src/trace_processor/args_tracker.h",
- "src/trace_processor/chunked_trace_reader.h",
- "src/trace_processor/clock_tracker.cc",
- "src/trace_processor/clock_tracker.h",
- "src/trace_processor/counter_definitions_table.cc",
- "src/trace_processor/counter_definitions_table.h",
- "src/trace_processor/counter_values_table.cc",
- "src/trace_processor/counter_values_table.h",
- "src/trace_processor/cpu_profile_stack_sample_table.cc",
- "src/trace_processor/cpu_profile_stack_sample_table.h",
- "src/trace_processor/db/bit_vector.cc",
- "src/trace_processor/db/bit_vector.h",
- "src/trace_processor/db/column.cc",
- "src/trace_processor/db/column.h",
- "src/trace_processor/db/row_map.cc",
- "src/trace_processor/db/row_map.h",
- "src/trace_processor/db/sparse_vector.h",
- "src/trace_processor/db/table.cc",
- "src/trace_processor/db/table.h",
- "src/trace_processor/db/typed_column.h",
- "src/trace_processor/event_tracker.cc",
- "src/trace_processor/event_tracker.h",
- "src/trace_processor/export_json.cc",
- "src/trace_processor/export_json.h",
- "src/trace_processor/filtered_row_index.cc",
- "src/trace_processor/filtered_row_index.h",
- "src/trace_processor/forwarding_trace_parser.cc",
- "src/trace_processor/forwarding_trace_parser.h",
- "src/trace_processor/ftrace_descriptors.cc",
- "src/trace_processor/ftrace_descriptors.h",
- "src/trace_processor/ftrace_utils.cc",
- "src/trace_processor/ftrace_utils.h",
- "src/trace_processor/fuchsia_provider_view.cc",
- "src/trace_processor/fuchsia_provider_view.h",
- "src/trace_processor/fuchsia_trace_parser.cc",
- "src/trace_processor/fuchsia_trace_parser.h",
- "src/trace_processor/fuchsia_trace_tokenizer.cc",
- "src/trace_processor/fuchsia_trace_tokenizer.h",
- "src/trace_processor/fuchsia_trace_utils.cc",
- "src/trace_processor/fuchsia_trace_utils.h",
- "src/trace_processor/graphics_frame_event_parser.cc",
- "src/trace_processor/graphics_frame_event_parser.h",
- "src/trace_processor/gzip_trace_parser.cc",
- "src/trace_processor/gzip_trace_parser.h",
- "src/trace_processor/heap_profile_allocation_table.cc",
- "src/trace_processor/heap_profile_allocation_table.h",
- "src/trace_processor/heap_profile_tracker.cc",
- "src/trace_processor/heap_profile_tracker.h",
- "src/trace_processor/instants_table.cc",
- "src/trace_processor/instants_table.h",
- "src/trace_processor/json_trace_parser.cc",
- "src/trace_processor/json_trace_parser.h",
- "src/trace_processor/json_trace_tokenizer.cc",
- "src/trace_processor/json_trace_tokenizer.h",
- "src/trace_processor/json_trace_utils.cc",
- "src/trace_processor/json_trace_utils.h",
- "src/trace_processor/metadata.h",
- "src/trace_processor/metadata_table.cc",
- "src/trace_processor/metadata_table.h",
- "src/trace_processor/metrics/descriptors.cc",
- "src/trace_processor/metrics/descriptors.h",
- "src/trace_processor/metrics/metrics.cc",
- "src/trace_processor/metrics/metrics.descriptor.h",
- "src/trace_processor/metrics/metrics.h",
- "src/trace_processor/metrics/sql_metrics.h",
- "src/trace_processor/null_term_string_view.h",
- "src/trace_processor/process_table.cc",
- "src/trace_processor/process_table.h",
- "src/trace_processor/process_tracker.cc",
- "src/trace_processor/process_tracker.h",
- "src/trace_processor/proto_incremental_state.h",
- "src/trace_processor/proto_trace_parser.cc",
- "src/trace_processor/proto_trace_parser.h",
- "src/trace_processor/proto_trace_tokenizer.cc",
- "src/trace_processor/proto_trace_tokenizer.h",
- "src/trace_processor/raw_table.cc",
- "src/trace_processor/raw_table.h",
- "src/trace_processor/row_iterators.cc",
- "src/trace_processor/row_iterators.h",
- "src/trace_processor/sched_slice_table.cc",
- "src/trace_processor/sched_slice_table.h",
- "src/trace_processor/slice_table.cc",
- "src/trace_processor/slice_table.h",
- "src/trace_processor/slice_tracker.cc",
- "src/trace_processor/slice_tracker.h",
- "src/trace_processor/span_join_operator_table.cc",
- "src/trace_processor/span_join_operator_table.h",
- "src/trace_processor/sql_stats_table.cc",
- "src/trace_processor/sql_stats_table.h",
- "src/trace_processor/sqlite/db_sqlite_table.cc",
- "src/trace_processor/sqlite/db_sqlite_table.h",
- "src/trace_processor/sqlite/query_constraints.cc",
- "src/trace_processor/sqlite/query_constraints.h",
- "src/trace_processor/sqlite/scoped_db.h",
- "src/trace_processor/sqlite/sqlite3_str_split.cc",
- "src/trace_processor/sqlite/sqlite3_str_split.h",
- "src/trace_processor/sqlite/sqlite_table.cc",
- "src/trace_processor/sqlite/sqlite_table.h",
- "src/trace_processor/sqlite/sqlite_utils.h",
- "src/trace_processor/stack_profile_callsite_table.cc",
- "src/trace_processor/stack_profile_callsite_table.h",
- "src/trace_processor/stack_profile_frame_table.cc",
- "src/trace_processor/stack_profile_frame_table.h",
- "src/trace_processor/stack_profile_mapping_table.cc",
- "src/trace_processor/stack_profile_mapping_table.h",
- "src/trace_processor/stack_profile_tracker.cc",
- "src/trace_processor/stack_profile_tracker.h",
- "src/trace_processor/stats.h",
- "src/trace_processor/stats_table.cc",
- "src/trace_processor/stats_table.h",
- "src/trace_processor/storage_columns.cc",
- "src/trace_processor/storage_columns.h",
- "src/trace_processor/storage_schema.cc",
- "src/trace_processor/storage_schema.h",
- "src/trace_processor/storage_table.cc",
- "src/trace_processor/storage_table.h",
- "src/trace_processor/string_pool.cc",
- "src/trace_processor/string_pool.h",
- "src/trace_processor/syscall_tracker.cc",
- "src/trace_processor/syscall_tracker.h",
- "src/trace_processor/syscalls_aarch32.h",
- "src/trace_processor/syscalls_aarch64.h",
- "src/trace_processor/syscalls_armeabi.h",
- "src/trace_processor/syscalls_x86_64.h",
- "src/trace_processor/systrace_parser.cc",
- "src/trace_processor/systrace_parser.h",
- "src/trace_processor/systrace_trace_parser.cc",
- "src/trace_processor/systrace_trace_parser.h",
- "src/trace_processor/tables/macros.h",
- "src/trace_processor/tables/macros_internal.h",
- "src/trace_processor/tables/slice_tables.h",
- "src/trace_processor/tables/track_tables.h",
- "src/trace_processor/thread_table.cc",
- "src/trace_processor/thread_table.h",
- "src/trace_processor/trace_blob_view.h",
- "src/trace_processor/trace_parser.h",
- "src/trace_processor/trace_processor.cc",
- "src/trace_processor/trace_processor_context.cc",
- "src/trace_processor/trace_processor_context.h",
- "src/trace_processor/trace_processor_impl.cc",
- "src/trace_processor/trace_processor_impl.h",
- "src/trace_processor/trace_sorter.cc",
- "src/trace_processor/trace_sorter.h",
- "src/trace_processor/trace_storage.cc",
- "src/trace_processor/trace_storage.h",
- "src/trace_processor/variadic.h",
- "src/trace_processor/virtual_destructors.cc",
- "src/trace_processor/virtual_track_tracker.cc",
- "src/trace_processor/virtual_track_tracker.h",
- "src/trace_processor/window_operator_table.cc",
- "src/trace_processor/window_operator_table.h",
- "tools/trace_to_text/local_symbolizer.cc",
- "tools/trace_to_text/local_symbolizer.h",
- "tools/trace_to_text/main.cc",
- "tools/trace_to_text/pprof_builder.cc",
- "tools/trace_to_text/pprof_builder.h",
- "tools/trace_to_text/profile_visitor.cc",
- "tools/trace_to_text/profile_visitor.h",
- "tools/trace_to_text/proto_full_utils.cc",
- "tools/trace_to_text/proto_full_utils.h",
- "tools/trace_to_text/symbolize_profile.cc",
- "tools/trace_to_text/symbolize_profile.h",
- "tools/trace_to_text/symbolizer.cc",
- "tools/trace_to_text/symbolizer.h",
- "tools/trace_to_text/trace_symbol_table.cc",
- "tools/trace_to_text/trace_symbol_table.h",
- "tools/trace_to_text/trace_to_profile.cc",
- "tools/trace_to_text/trace_to_profile.h",
- "tools/trace_to_text/trace_to_systrace.cc",
- "tools/trace_to_text/trace_to_systrace.h",
- "tools/trace_to_text/trace_to_text.cc",
- "tools/trace_to_text/trace_to_text.h",
- "tools/trace_to_text/utils.cc",
- "tools/trace_to_text/utils.h",
- ],
- deps = [
- "//third_party/perfetto:gen_merged_sql_metrics",
- "//third_party/perfetto/google:jsoncpp",
- "//third_party/perfetto/protos:common_cc_proto",
- "//third_party/perfetto/protos:common_zero_cc_proto",
- "//third_party/perfetto/protos:config_android_cc_proto",
- "//third_party/perfetto/protos:config_android_zero_cc_proto",
- "//third_party/perfetto/protos:config_cc_proto",
- "//third_party/perfetto/protos:config_ftrace_cc_proto",
- "//third_party/perfetto/protos:config_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:config_gpu_cc_proto",
- "//third_party/perfetto/protos:config_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:config_inode_file_cc_proto",
- "//third_party/perfetto/protos:config_inode_file_zero_cc_proto",
- "//third_party/perfetto/protos:config_power_cc_proto",
- "//third_party/perfetto/protos:config_power_zero_cc_proto",
- "//third_party/perfetto/protos:config_process_stats_cc_proto",
- "//third_party/perfetto/protos:config_process_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_profiling_cc_proto",
- "//third_party/perfetto/protos:config_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:config_sys_stats_cc_proto",
- "//third_party/perfetto/protos:config_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:config_zero_cc_proto",
- "//third_party/perfetto/protos:metrics_android_zero_cc_proto",
- "//third_party/perfetto/protos:metrics_zero_cc_proto",
- "//third_party/perfetto/protos:protos_third_party_pprof_cc_proto",
- "//third_party/perfetto/protos:trace_android_cc_proto",
- "//third_party/perfetto/protos:trace_android_zero_cc_proto",
- "//third_party/perfetto/protos:trace_appended_data_cc_proto",
- "//third_party/perfetto/protos:trace_appended_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_chrome_cc_proto",
- "//third_party/perfetto/protos:trace_chrome_zero_cc_proto",
- "//third_party/perfetto/protos:trace_filesystem_cc_proto",
- "//third_party/perfetto/protos:trace_filesystem_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ftrace_cc_proto",
- "//third_party/perfetto/protos:trace_ftrace_zero_cc_proto",
- "//third_party/perfetto/protos:trace_gpu_cc_proto",
- "//third_party/perfetto/protos:trace_gpu_zero_cc_proto",
- "//third_party/perfetto/protos:trace_interned_data_cc_proto",
- "//third_party/perfetto/protos:trace_interned_data_zero_cc_proto",
- "//third_party/perfetto/protos:trace_minimal_cc_proto",
- "//third_party/perfetto/protos:trace_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_non_minimal_cc_proto",
- "//third_party/perfetto/protos:trace_non_minimal_zero_cc_proto",
- "//third_party/perfetto/protos:trace_perfetto_cc_proto",
- "//third_party/perfetto/protos:trace_perfetto_zero_cc_proto",
- "//third_party/perfetto/protos:trace_power_cc_proto",
- "//third_party/perfetto/protos:trace_power_zero_cc_proto",
- "//third_party/perfetto/protos:trace_processor_metrics_impl_zero_cc_proto",
- "//third_party/perfetto/protos:trace_profiling_cc_proto",
- "//third_party/perfetto/protos:trace_profiling_zero_cc_proto",
- "//third_party/perfetto/protos:trace_ps_cc_proto",
- "//third_party/perfetto/protos:trace_ps_zero_cc_proto",
- "//third_party/perfetto/protos:trace_sys_stats_cc_proto",
- "//third_party/perfetto/protos:trace_sys_stats_zero_cc_proto",
- "//third_party/perfetto/protos:trace_track_event_cc_proto",
- "//third_party/perfetto/protos:trace_track_event_zero_cc_proto",
- "//third_party/protobuf:libprotoc_legacy",
- "//third_party/protobuf:protobuf_legacy",
- "//third_party/sqlite",
- "//third_party/sqlite:sqlite_ext_percentile",
- "//third_party/zlib:zlibsystem",
- ],
-)
-
-gensignature(
- name = "trace_processor_sig",
- srcs = [
- ":trace_processor_shell",
- ":trace_to_text",
- ],
- tags = [
- "__TRACE_PROCESSOR_SIG_TAG1",
- "__TRACE_PROCESSOR_SIG_TAG2",
- ],
-)
-
-py_binary(
+perfetto_py_binary(
name = "gen_merged_sql_metrics_py",
srcs = [
"tools/gen_merged_sql_metrics.py",
diff --git a/BUILD.extras b/BUILD.extras
index 8a76d28..3bfd20a 100644
--- a/BUILD.extras
+++ b/BUILD.extras
@@ -1,16 +1,19 @@
-gensignature(
- name = "trace_processor_sig",
- srcs = [
- ":trace_processor_shell",
- ":trace_to_text",
- ],
- tags = [
- "__TRACE_PROCESSOR_SIG_TAG1",
- "__TRACE_PROCESSOR_SIG_TAG2",
- ],
+build_config_dir_ = "include/perfetto/base/build_configs/bazel"
+
+# Deliberately NOT a perfetto_cc_library, to avoid cyclic deps.
+# This is pulled as a default dep by all targets.
+cc_library(
+ name = "build_config_hdr",
+ hdrs = [build_config_dir_ + "/perfetto_build_flags.h"],
+ includes = [build_config_dir_],
)
-py_binary(
+perfetto_cc_library(
+ name = "cc_merged_sql_metrics",
+ hdrs = ["src/trace_processor/metrics/sql_metrics.h"],
+)
+
+perfetto_py_binary(
name = "gen_merged_sql_metrics_py",
srcs = [
"tools/gen_merged_sql_metrics.py",
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index b491a6e..2278b9a 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -22,7 +22,7 @@
def long_line_sources(x): return input.FilterSourceFile(
x, white_list=".*",
black_list=['Android[.]bp', '.*[.]json$', '.*[.]sql$', '.*[.]out$',
- 'test/trace_processor/index$', 'BUILD$', 'protos/BUILD$',
+ 'test/trace_processor/index$', '.*\bBUILD$', 'WORKSPACE',
'.*/Makefile$', '/perfetto_build_flags.h$'])
results = []
results += input.canned_checks.CheckDoNotSubmit(input, output)
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644
index 0000000..a933c67
--- /dev/null
+++ b/WORKSPACE
@@ -0,0 +1,31 @@
+# Copyright (C) 2019 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.
+
+# This file is used only in standalone builds. This file is ignored both in
+# embedder builds (i.e. when other projects pull perfetto under /third_party/
+# or similar) and in google internal builds.
+
+workspace(name = "perfetto")
+
+new_local_repository(
+ name = "perfetto_cfg",
+ path = "bazel/standalone",
+ build_file_content = ""
+)
+
+load("@perfetto//bazel:deps.bzl", "perfetto_deps")
+perfetto_deps()
+
+load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
+protobuf_deps()
diff --git a/bazel/BUILD b/bazel/BUILD
new file mode 100644
index 0000000..069748d
--- /dev/null
+++ b/bazel/BUILD
@@ -0,0 +1,19 @@
+# Copyright (C) 2019 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.
+
+config_setting(
+ name = "os_osx",
+ values = {"cpu": "darwin"},
+ visibility = ["//visibility:public"],
+)
diff --git a/bazel/deps.bzl b/bazel/deps.bzl
new file mode 100644
index 0000000..6f19f3d
--- /dev/null
+++ b/bazel/deps.bzl
@@ -0,0 +1,88 @@
+# Copyright (C) 2019 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.
+
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
+
+# This file must be kept in sync with tools/install-build-deps.
+
+def perfetto_deps():
+ # Note: this is more recent than the version of protobuf we use in the
+ # GN and Android builds. This is because older versions of protobuf don't
+ # support Bazel.
+ _add_repo_if_not_existing(
+ http_archive,
+ name = "com_google_protobuf",
+ strip_prefix = "protobuf-3.9.0",
+ url = "https://github.com/google/protobuf/archive/v3.9.0.tar.gz",
+ sha256 = "2ee9dcec820352671eb83e081295ba43f7a4157181dad549024d7070d079cf65",
+ )
+
+ _add_repo_if_not_existing(
+ http_archive,
+ name = "perfetto_dep_sqlite",
+ url = "https://storage.googleapis.com/perfetto/sqlite-amalgamation-3250300.zip",
+ sha256 = "2ad5379f3b665b60599492cc8a13ac480ea6d819f91b1ef32ed0e1ad152fafef",
+ strip_prefix = "sqlite-amalgamation-3250300",
+ build_file = "//bazel:sqlite.BUILD",
+ )
+
+ _add_repo_if_not_existing(
+ http_archive,
+ name = "perfetto_dep_sqlite_src",
+ url = "https://storage.googleapis.com/perfetto/sqlite-src-3250300.zip",
+ sha256 = "c7922bc840a799481050ee9a76e679462da131adba1814687f05aa5c93766421",
+ strip_prefix = "sqlite-src-3250300",
+ build_file = "//bazel:sqlite.BUILD",
+ )
+
+ _add_repo_if_not_existing(
+ new_git_repository,
+ name = "perfetto_dep_linenoise",
+ remote = "https://fuchsia.googlesource.com/third_party/linenoise.git",
+ commit = "c894b9e59f02203dbe4e2be657572cf88c4230c3",
+ build_file = "//bazel:linenoise.BUILD",
+ shallow_since = "1469784335 +0200",
+ )
+
+ _add_repo_if_not_existing(
+ new_git_repository,
+ name = "perfetto_dep_jsoncpp",
+ remote = "https://github.com/open-source-parsers/jsoncpp",
+ commit = "7165f6ac4c482e68475c9e1dac086f9e12fff0d0", # v1.0.0
+ build_file = "//bazel:jsoncpp.BUILD",
+ shallow_since = "1416494758 -0600",
+ )
+
+ _add_repo_if_not_existing(
+ new_git_repository,
+ name = "perfetto_dep_zlib",
+ remote = "https://android.googlesource.com/platform/external/zlib.git",
+ commit = "dfa0646a03b4e1707469e04dc931b09774968fe6",
+ build_file = "//bazel:zlib.BUILD",
+ shallow_since = "1557160162 -0700",
+ )
+
+ # Without this protobuf.bzl fails. This seems a bug in protobuf_deps().
+ _add_repo_if_not_existing(
+ http_archive,
+ name = "bazel_skylib",
+ sha256 = "bbccf674aa441c266df9894182d80de104cabd19be98be002f6d478aaa31574d",
+ strip_prefix = "bazel-skylib-2169ae1c374aab4a09aa90e65efe1a3aad4e279b",
+ url = "https://github.com/bazelbuild/bazel-skylib/archive/2169ae1c374aab4a09aa90e65efe1a3aad4e279b.tar.gz",
+ )
+
+def _add_repo_if_not_existing(repo_rule, name, **kwargs):
+ if name not in native.existing_rules():
+ repo_rule(name = name, **kwargs)
diff --git a/bazel/jsoncpp.BUILD b/bazel/jsoncpp.BUILD
new file mode 100644
index 0000000..8a33eb8
--- /dev/null
+++ b/bazel/jsoncpp.BUILD
@@ -0,0 +1,49 @@
+# Copyright (C) 2019 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.
+
+cc_library(
+ name = "jsoncpp",
+ srcs = [
+ "src/lib_json/json_batchallocator.h",
+ "src/lib_json/json_internalarray.inl",
+ "src/lib_json/json_internalmap.inl",
+ "src/lib_json/json_reader.cpp",
+ "src/lib_json/json_tool.h",
+ "src/lib_json/json_value.cpp",
+ "src/lib_json/json_valueiterator.inl",
+ "src/lib_json/json_writer.cpp",
+ ],
+ hdrs = [
+ "include/json/assertions.h",
+ "include/json/autolink.h",
+ "include/json/config.h",
+ "include/json/features.h",
+ "include/json/forwards.h",
+ "include/json/json.h",
+ "include/json/reader.h",
+ "include/json/value.h",
+ "include/json/version.h",
+ "include/json/writer.h",
+ ],
+ copts = [
+ "-Isrc/lib_json",
+ ],
+ defines = [
+ "JSON_USE_EXCEPTION=0",
+ ],
+ includes = [
+ "include",
+ ],
+ visibility = ["//visibility:public"],
+)
diff --git a/bazel/linenoise.BUILD b/bazel/linenoise.BUILD
new file mode 100644
index 0000000..d2b6053
--- /dev/null
+++ b/bazel/linenoise.BUILD
@@ -0,0 +1,27 @@
+# Copyright (C) 2019 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.
+
+cc_library(
+ name = "linenoise",
+ srcs = [
+ "linenoise.c",
+ ],
+ hdrs = [
+ "linenoise.h",
+ ],
+ includes = [
+ ".",
+ ],
+ visibility = ["//visibility:public"],
+)
diff --git a/bazel/proto_gen.bzl b/bazel/proto_gen.bzl
new file mode 100644
index 0000000..cf0d5ff
--- /dev/null
+++ b/bazel/proto_gen.bzl
@@ -0,0 +1,114 @@
+# Copyright (C) 2019 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.
+
+# This file defines the proto_gen() rule that is used for generating protos
+# with custom plugins (ipc and protozero).
+
+def _proto_gen_impl(ctx):
+ proto_src = [
+ f
+ for dep in ctx.attr.deps
+ for f in dep[ProtoInfo].direct_sources
+ ]
+ includes = [
+ f
+ for dep in ctx.attr.deps
+ for f in dep[ProtoInfo].transitive_imports.to_list()
+ ]
+
+ proto_path = "."
+
+ out_dir = str(ctx.genfiles_dir.path)
+ strip_base_path = ""
+ if ctx.attr.root != "//":
+ # This path is hit in Google internal builds, where root is typically
+ # //third_party/perfetto.
+ proto_path = "."
+ strip_base_path = ctx.attr.root[2:] + "/" # -> third_party/perfetto/
+ elif ctx.label.workspace_root:
+ # This path is hit when proto targets are built as @perfetto//:xxx
+ # instead of //:xxx. This happens in embedder builds. In this case,
+ # workspace_root == "external/perfetto" and we need to rebase the paths
+ # passed to protoc.
+ proto_path = ctx.label.workspace_root
+ out_dir += "/" + ctx.label.workspace_root
+ strip_base_path = ctx.label.workspace_root + "/"
+
+ out_files = []
+ suffix = ctx.attr.suffix
+ for src in proto_src:
+ base_path = src.path[:-len(".proto")]
+ if base_path.startswith(strip_base_path):
+ base_path = base_path[len(strip_base_path):]
+ out_files += [ctx.actions.declare_file(base_path + ".%s.h" % suffix)]
+ out_files += [ctx.actions.declare_file(base_path + ".%s.cc" % suffix)]
+
+ arguments = [
+ "--proto_path=" + proto_path,
+ ]
+ plugin_deps = []
+ if ctx.attr.plugin:
+ arguments += [
+ "--plugin=protoc-gen-plugin=" + ctx.executable.plugin.path,
+ "--plugin_out=wrapper_namespace=pbzero:" + out_dir,
+ ]
+ plugin_deps += [ctx.executable.plugin]
+ else:
+ arguments += [
+ "--cpp_out=" + out_dir,
+ ]
+
+ arguments += [src.path for src in proto_src]
+ ctx.actions.run(
+ inputs = proto_src + includes + plugin_deps,
+ tools = plugin_deps,
+ outputs = out_files,
+ executable = ctx.executable.protoc,
+ arguments = arguments,
+ )
+ return [
+ DefaultInfo(files = depset(out_files)),
+ OutputGroupInfo(
+ cc = depset([f for f in out_files if f.path.endswith(".cc")]),
+ h = depset([f for f in out_files if f.path.endswith(".h")]),
+ ),
+ ]
+
+proto_gen = rule(
+ attrs = {
+ "deps": attr.label_list(
+ mandatory = True,
+ allow_empty = False,
+ providers = [ProtoInfo],
+ ),
+ "plugin": attr.label(
+ executable = True,
+ mandatory = False,
+ cfg = "host",
+ ),
+ "suffix": attr.string(
+ mandatory = True,
+ ),
+ "protoc": attr.label(
+ executable = True,
+ cfg = "host",
+ ),
+ "root": attr.string(
+ mandatory = False,
+ default = "//",
+ ),
+ },
+ output_to_genfiles = True,
+ implementation = _proto_gen_impl,
+)
diff --git a/bazel/rules.bzl b/bazel/rules.bzl
new file mode 100644
index 0000000..0aca50e
--- /dev/null
+++ b/bazel/rules.bzl
@@ -0,0 +1,156 @@
+# Copyright (C) 2019 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.
+
+load("@perfetto_cfg//:perfetto_cfg.bzl", "PERFETTO_CONFIG")
+load("@perfetto//bazel:proto_gen.bzl", "proto_gen")
+
+# +----------------------------------------------------------------------------+
+# | Base C++ rules. |
+# +----------------------------------------------------------------------------+
+
+def default_cc_args():
+ return {
+ "deps": [PERFETTO_CONFIG.root + ":build_config_hdr"],
+ "copts": [],
+ "includes": ["include"],
+ "linkopts": select({
+ "@perfetto//bazel:os_osx": [],
+ "//conditions:default": ["-ldl", "-lrt"],
+ }),
+ }
+
+def perfetto_cc_library(**kwargs):
+ args = _merge_dicts(default_cc_args(), kwargs)
+ if not _rule_override("cc_library", **args):
+ native.cc_library(**args)
+
+def perfetto_cc_binary(**kwargs):
+ args = _merge_dicts(default_cc_args(), kwargs)
+ if not _rule_override("cc_binary", **args):
+ native.cc_binary(**args)
+
+def perfetto_py_binary(**kwargs):
+ if not _rule_override("py_binary", **kwargs):
+ native.py_binary(**kwargs)
+
+# +----------------------------------------------------------------------------+
+# | Proto-related rules |
+# +----------------------------------------------------------------------------+
+
+def perfetto_proto_library(**kwargs):
+ if not _rule_override("proto_library", **kwargs):
+ native.proto_library(**kwargs)
+
+def perfetto_cc_proto_library(**kwargs):
+ if not _rule_override("cc_proto_library", **kwargs):
+ native.cc_proto_library(**kwargs)
+
+# Generates .pbzero.{cc,h} from .proto(s). We deliberately do NOT generate
+# conventional .pb.{cc,h} from here as protozero gen sources do not have any
+# dependency on libprotobuf.
+def perfetto_cc_protozero_library(name, deps, **kwargs):
+ if _rule_override(
+ "cc_protozero_library",
+ name = name,
+ deps = deps,
+ **kwargs
+ ):
+ return
+
+ proto_gen(
+ name = name + "_src",
+ deps = deps,
+ suffix = "pbzero",
+ plugin = PERFETTO_CONFIG.root + ":protozero_plugin",
+ protoc = PERFETTO_CONFIG.deps.protoc[0],
+ root = PERFETTO_CONFIG.root,
+ )
+
+ native.filegroup(
+ name = name + "_h",
+ srcs = [":" + name + "_src"],
+ output_group = "h",
+ )
+
+ perfetto_cc_library(
+ name = name,
+ srcs = [":" + name + "_src"],
+ hdrs = [":" + name + "_h"],
+ deps = [PERFETTO_CONFIG.root + ":libprotozero"],
+ **kwargs
+ )
+
+# Generates .ipc.{cc,h} and .pb.{cc.h} from .proto(s). The IPC sources depend
+# on .pb.h so we need to generate also the standard protobuf sources here.
+def perfetto_cc_ipc_library(name, deps, **kwargs):
+ if _rule_override("cc_ipc_library", name = name, deps = deps, **kwargs):
+ return
+
+ # Takes care of generating .pb.{cc,h}.
+ perfetto_cc_proto_library(name = name + "_pb", deps = deps)
+
+ # Generates .ipc.{cc,h}.
+ proto_gen(
+ name = name + "_src",
+ deps = deps,
+ suffix = "ipc",
+ plugin = PERFETTO_CONFIG.root + ":ipc_plugin",
+ protoc = PERFETTO_CONFIG.deps.protoc[0],
+ root = PERFETTO_CONFIG.root,
+ )
+
+ native.filegroup(
+ name = name + "_h",
+ srcs = [":" + name + "_src"],
+ output_group = "h",
+ )
+
+ perfetto_cc_library(
+ name = name,
+ srcs = [":" + name + "_src"],
+ hdrs = [":" + name + "_h"],
+ deps = [
+ ":" + name + "_pb",
+
+ # Generated .ipc.{cc,h} depend on this.
+ PERFETTO_CONFIG.root + ":perfetto_ipc",
+
+ # Generated .pb.{cc,h} depend on this.
+ ] + PERFETTO_CONFIG.deps.protobuf_lite,
+ **kwargs
+ )
+
+# +----------------------------------------------------------------------------+
+# | Misc utility functions |
+# +----------------------------------------------------------------------------+
+
+def _rule_override(rule_name, **kwargs):
+ overrides = getattr(PERFETTO_CONFIG, "rule_overrides", struct())
+ overridden_rule = getattr(overrides, rule_name, None)
+ if overridden_rule:
+ overridden_rule(**kwargs)
+ return True
+ return False
+
+def _merge_dicts(*args):
+ res = {}
+ for arg in args:
+ for k, v in arg.items():
+ if type(v) == "string":
+ res[k] = v
+ elif type(v) == "list" or type(v) == "select":
+ res[k] = res.get(k, []) + v
+ else:
+ fail("key type not supported: " + type(v))
+ return res
diff --git a/bazel/sqlite.BUILD b/bazel/sqlite.BUILD
new file mode 100644
index 0000000..75c3e9a
--- /dev/null
+++ b/bazel/sqlite.BUILD
@@ -0,0 +1,76 @@
+# Copyright (C) 2019 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.
+
+# This build file is used for both @perfetto_dep_sqlite and
+# @perfetto_dep_sqlite_src.
+
+# #############################
+# @perfetto_dep_sqlite section
+# #############################
+
+filegroup(
+ name = "headers",
+ srcs = [
+ "sqlite3.h",
+ "sqlite3ext.h",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+include_sqlite = [
+ ".",
+]
+
+sqlite_copts = [
+ "-DSQLITE_THREADSAFE=0",
+ "-DQLITE_DEFAULT_MEMSTATUS=0",
+ "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS",
+ "-DSQLITE_OMIT_DEPRECATED",
+ "-DSQLITE_OMIT_SHARED_CACHE",
+ "-DHAVE_USLEEP",
+ "-DHAVE_UTIME",
+ "-DSQLITE_BYTEORDER=1234",
+ "-DSQLITE_DEFAULT_AUTOVACUUM=0",
+ "-DSQLITE_DEFAULT_MMAP_SIZE=0",
+ "-DSQLITE_CORE",
+ "-DSQLITE_TEMP_STORE=3",
+ "-DSQLITE_OMIT_LOAD_EXTENSION",
+ "-DSQLITE_OMIT_RANDOMNESS",
+]
+
+cc_library(
+ name = "sqlite",
+ srcs = [
+ "sqlite3.c",
+ "sqlite3.h",
+ ],
+ hdrs = [":headers"],
+ copts = sqlite_copts,
+ includes = include_sqlite,
+ visibility = ["//visibility:public"],
+)
+
+# ################################
+# @perfetto_dep_sqlite_src section
+# ################################
+
+cc_library(
+ name = "percentile_ext",
+ srcs = [
+ "ext/misc/percentile.c",
+ ],
+ copts = sqlite_copts,
+ includes = include_sqlite,
+ visibility = ["//visibility:public"],
+)
diff --git a/bazel/standalone/README.md b/bazel/standalone/README.md
new file mode 100644
index 0000000..6b549b3
--- /dev/null
+++ b/bazel/standalone/README.md
@@ -0,0 +1,25 @@
+# Perfetto standalone Bazel config
+
+This directory is only used in standalone builds.
+The WORKSPACE aliases this directory to @perfetto_cfg.
+
+Bazel-based embedders are supposed to:
+
+### 1. Have a (modified) copy of perfetto_cfg.bzl in their repo
+
+```
+myproject/
+ build/
+ perfetto_overrides/
+ perfetto_cfg.bzl
+```
+
+### 2. Have a repository rule that maps the directory to @perfetto_cfg
+
+E.g in myproject/WORKSPACE
+```
+local_repository(
+ name = "perfetto_cfg",
+ path = "build/perfetto_overrides",
+)
+```
diff --git a/bazel/standalone/perfetto_cfg.bzl b/bazel/standalone/perfetto_cfg.bzl
new file mode 100644
index 0000000..bcc71d7
--- /dev/null
+++ b/bazel/standalone/perfetto_cfg.bzl
@@ -0,0 +1,52 @@
+# Copyright (C) 2019 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.
+
+PERFETTO_CONFIG = struct(
+ # This is used to refer to deps within perfetto's BUILD files.
+ # In standalone and bazel-based embedders use '//', because perfetto has its
+ # own repository, and //xxx would be relative to @perfetto//xxx.
+ # In Google internal builds, instead, this is set to //third_party/perfetto,
+ # because perfetto doesn't have its own repository there.
+ root = "//",
+
+ # These variables map dependencies to perfetto third-party projects. This is
+ # to allow perfetto embedders (e.g. gapid) and google internal builds to
+ # override paths and target names to their own third_party.
+ deps = struct(
+ zlib = ["@perfetto_dep_zlib//:zlib"],
+ jsoncpp = ["@perfetto_dep_jsoncpp//:jsoncpp"],
+ linenoise = ["@perfetto_dep_linenoise//:linenoise"],
+ sqlite = ["@perfetto_dep_sqlite//:sqlite"],
+ sqlite_ext_percentile = ["@perfetto_dep_sqlite_src//:percentile_ext"],
+ protoc = ["@com_google_protobuf//:protoc"],
+ protoc_lib = ["@com_google_protobuf//:protoc_lib"],
+ protobuf_lite = ["@com_google_protobuf//:protobuf_lite"],
+ protobuf_full = ["@com_google_protobuf//:protobuf"],
+ ),
+
+ # This struct allows the embedder to customize copts and other args passed
+ # to rules like cc_binary. Prefixed rules (e.g. perfetto_cc_binary) will
+ # look into this struct before falling back on native.cc_binary().
+ # This field is completely optional, the embedder can omit the whole
+ # |rule_overrides| or invidivual keys. They are assigned to None here just
+ # for documentation purposes.
+ rule_overrides = struct(
+ cc_binary = None,
+ cc_library = None,
+ cc_proto_library = None,
+ java_proto_library = None,
+ proto_library = None,
+ py_binary = None,
+ ),
+)
diff --git a/bazel/zlib.BUILD b/bazel/zlib.BUILD
new file mode 100644
index 0000000..1557352
--- /dev/null
+++ b/bazel/zlib.BUILD
@@ -0,0 +1,54 @@
+# Copyright (C) 2019 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.
+
+cc_library(
+ name = "zlib",
+ srcs = [
+ "src/adler32.c",
+ "src/compress.c",
+ "src/crc32.c",
+ "src/crc32.h",
+ "src/deflate.c",
+ "src/deflate.h",
+ "src/gzclose.c",
+ "src/gzguts.h",
+ "src/gzlib.c",
+ "src/gzread.c",
+ "src/gzwrite.c",
+ "src/infback.c",
+ "src/inffast.c",
+ "src/inffast.h",
+ "src/inffixed.h",
+ "src/inflate.c",
+ "src/inflate.h",
+ "src/inftrees.c",
+ "src/inftrees.h",
+ "src/trees.c",
+ "src/trees.h",
+ "src/uncompr.c",
+ "src/zconf.h",
+ "src/zlib.h",
+ "src/zutil.c",
+ "src/zutil.h",
+ ],
+ hdrs = [
+ "zlib.h",
+ ],
+ copts = [
+ "-DHAVE_HIDDEN",
+ "-Isrc",
+ ],
+ includes = ["zlib"],
+ visibility = ["//visibility:public"],
+)
diff --git a/protos/BUILD b/protos/BUILD
deleted file mode 100644
index 25b1514..0000000
--- a/protos/BUILD
+++ /dev/null
@@ -1,1920 +0,0 @@
-# Copyright (C) 2019 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.
-#
-# This file is automatically generated by tools/gen_bazel. Do not edit.
-
-load("//tools/build_defs/proto/cpp:cc_proto_library.bzl", "cc_proto_library")
-load("//tools/build_defs/proto:descriptor_set.bzl", "transitive_descriptor_set")
-load("//third_party/perfetto/google:build_defs.bzl", "pbzero_cc_proto_library")
-
-package(default_visibility = ["//third_party/perfetto:__subpackages__"])
-
-licenses(["notice"]) # Apache 2.0
-
-exports_files(["LICENSE"])
-
-# GN target: //protos/perfetto/common:lite_gen
-proto_library(
- name = "common",
- srcs = [
- "perfetto/common/android_log_constants.proto",
- "perfetto/common/commit_data_request.proto",
- "perfetto/common/data_source_descriptor.proto",
- "perfetto/common/descriptor.proto",
- "perfetto/common/gpu_counter_descriptor.proto",
- "perfetto/common/observable_events.proto",
- "perfetto/common/sys_stats_counters.proto",
- "perfetto/common/trace_stats.proto",
- "perfetto/common/tracing_service_state.proto",
- "perfetto/common/track_event_descriptor.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/common:lite_gen
-cc_proto_library(
- name = "common_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- ],
-)
-
-# GN target: //protos/perfetto/common:lite_gen
-java_proto_library(
- name = "common_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- ],
-)
-
-# GN target: //protos/perfetto/common:zero_gen
-proto_library(
- name = "common_zero",
- srcs = [
- "perfetto/common/android_log_constants.proto",
- "perfetto/common/commit_data_request.proto",
- "perfetto/common/data_source_descriptor.proto",
- "perfetto/common/descriptor.proto",
- "perfetto/common/gpu_counter_descriptor.proto",
- "perfetto/common/observable_events.proto",
- "perfetto/common/sys_stats_counters.proto",
- "perfetto/common/trace_stats.proto",
- "perfetto/common/tracing_service_state.proto",
- "perfetto/common/track_event_descriptor.proto",
- ],
-)
-
-# GN target: //protos/perfetto/common:zero_gen
-pbzero_cc_proto_library(
- name = "common_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:common_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config:lite_gen
-proto_library(
- name = "config",
- srcs = [
- "perfetto/config/chrome/chrome_config.proto",
- "perfetto/config/data_source_config.proto",
- "perfetto/config/test_config.proto",
- "perfetto/config/trace_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- "//third_party/perfetto/protos:config_android",
- "//third_party/perfetto/protos:config_ftrace",
- "//third_party/perfetto/protos:config_gpu",
- "//third_party/perfetto/protos:config_inode_file",
- "//third_party/perfetto/protos:config_power",
- "//third_party/perfetto/protos:config_process_stats",
- "//third_party/perfetto/protos:config_profiling",
- "//third_party/perfetto/protos:config_sys_stats",
- ],
-)
-
-# GN target: //protos/perfetto/config/android:lite_gen
-proto_library(
- name = "config_android",
- srcs = [
- "perfetto/config/android/android_log_config.proto",
- "perfetto/config/android/packages_list_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- ],
-)
-
-# GN target: //protos/perfetto/config/android:lite_gen
-cc_proto_library(
- name = "config_android_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_android",
- ],
-)
-
-# GN target: //protos/perfetto/config/android:lite_gen
-java_proto_library(
- name = "config_android_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_android",
- ],
-)
-
-# GN target: //protos/perfetto/config/android:zero_gen
-proto_library(
- name = "config_android_zero",
- srcs = [
- "perfetto/config/android/android_log_config.proto",
- "perfetto/config/android/packages_list_config.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- ],
-)
-
-# GN target: //protos/perfetto/config/android:zero_gen
-pbzero_cc_proto_library(
- name = "config_android_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_android_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config:lite_gen
-cc_proto_library(
- name = "config_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config",
- ],
-)
-
-# GN target: //protos/perfetto/config/ftrace:lite_gen
-proto_library(
- name = "config_ftrace",
- srcs = [
- "perfetto/config/ftrace/ftrace_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/config/ftrace:lite_gen
-cc_proto_library(
- name = "config_ftrace_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_ftrace",
- ],
-)
-
-# GN target: //protos/perfetto/config/ftrace:lite_gen
-java_proto_library(
- name = "config_ftrace_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_ftrace",
- ],
-)
-
-# GN target: //protos/perfetto/config/ftrace:zero_gen
-proto_library(
- name = "config_ftrace_zero",
- srcs = [
- "perfetto/config/ftrace/ftrace_config.proto",
- ],
-)
-
-# GN target: //protos/perfetto/config/ftrace:zero_gen
-pbzero_cc_proto_library(
- name = "config_ftrace_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_ftrace_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config/gpu:lite_gen
-proto_library(
- name = "config_gpu",
- srcs = [
- "perfetto/config/gpu/gpu_counter_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/config/gpu:lite_gen
-cc_proto_library(
- name = "config_gpu_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_gpu",
- ],
-)
-
-# GN target: //protos/perfetto/config/gpu:lite_gen
-java_proto_library(
- name = "config_gpu_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_gpu",
- ],
-)
-
-# GN target: //protos/perfetto/config/gpu:zero_gen
-proto_library(
- name = "config_gpu_zero",
- srcs = [
- "perfetto/config/gpu/gpu_counter_config.proto",
- ],
-)
-
-# GN target: //protos/perfetto/config/gpu:zero_gen
-pbzero_cc_proto_library(
- name = "config_gpu_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_gpu_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config/inode_file:lite_gen
-proto_library(
- name = "config_inode_file",
- srcs = [
- "perfetto/config/inode_file/inode_file_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/config/inode_file:lite_gen
-cc_proto_library(
- name = "config_inode_file_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_inode_file",
- ],
-)
-
-# GN target: //protos/perfetto/config/inode_file:lite_gen
-java_proto_library(
- name = "config_inode_file_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_inode_file",
- ],
-)
-
-# GN target: //protos/perfetto/config/inode_file:zero_gen
-proto_library(
- name = "config_inode_file_zero",
- srcs = [
- "perfetto/config/inode_file/inode_file_config.proto",
- ],
-)
-
-# GN target: //protos/perfetto/config/inode_file:zero_gen
-pbzero_cc_proto_library(
- name = "config_inode_file_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_inode_file_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config:lite_gen
-java_proto_library(
- name = "config_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config",
- ],
-)
-
-# GN target: //protos/perfetto/config:merged_config_gen
-proto_library(
- name = "config_merged_config_gen",
- srcs = [
- "perfetto/config/perfetto_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/config:merged_config_gen
-cc_proto_library(
- name = "config_merged_config_gen_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_merged_config_gen",
- ],
-)
-
-# GN target: //protos/perfetto/config:merged_config_gen
-java_proto_library(
- name = "config_merged_config_gen_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_merged_config_gen",
- ],
-)
-
-# GN target: //protos/perfetto/config/power:lite_gen
-proto_library(
- name = "config_power",
- srcs = [
- "perfetto/config/power/android_power_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/config/power:lite_gen
-cc_proto_library(
- name = "config_power_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_power",
- ],
-)
-
-# GN target: //protos/perfetto/config/power:lite_gen
-java_proto_library(
- name = "config_power_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_power",
- ],
-)
-
-# GN target: //protos/perfetto/config/power:zero_gen
-proto_library(
- name = "config_power_zero",
- srcs = [
- "perfetto/config/power/android_power_config.proto",
- ],
-)
-
-# GN target: //protos/perfetto/config/power:zero_gen
-pbzero_cc_proto_library(
- name = "config_power_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_power_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config/process_stats:lite_gen
-proto_library(
- name = "config_process_stats",
- srcs = [
- "perfetto/config/process_stats/process_stats_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/config/process_stats:lite_gen
-cc_proto_library(
- name = "config_process_stats_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_process_stats",
- ],
-)
-
-# GN target: //protos/perfetto/config/process_stats:lite_gen
-java_proto_library(
- name = "config_process_stats_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_process_stats",
- ],
-)
-
-# GN target: //protos/perfetto/config/process_stats:zero_gen
-proto_library(
- name = "config_process_stats_zero",
- srcs = [
- "perfetto/config/process_stats/process_stats_config.proto",
- ],
-)
-
-# GN target: //protos/perfetto/config/process_stats:zero_gen
-pbzero_cc_proto_library(
- name = "config_process_stats_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_process_stats_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config/profiling:lite_gen
-proto_library(
- name = "config_profiling",
- srcs = [
- "perfetto/config/profiling/heapprofd_config.proto",
- "perfetto/config/profiling/java_hprof_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/config/profiling:lite_gen
-cc_proto_library(
- name = "config_profiling_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_profiling",
- ],
-)
-
-# GN target: //protos/perfetto/config/profiling:lite_gen
-java_proto_library(
- name = "config_profiling_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_profiling",
- ],
-)
-
-# GN target: //protos/perfetto/config/profiling:zero_gen
-proto_library(
- name = "config_profiling_zero",
- srcs = [
- "perfetto/config/profiling/heapprofd_config.proto",
- "perfetto/config/profiling/java_hprof_config.proto",
- ],
-)
-
-# GN target: //protos/perfetto/config/profiling:zero_gen
-pbzero_cc_proto_library(
- name = "config_profiling_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_profiling_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config/sys_stats:lite_gen
-proto_library(
- name = "config_sys_stats",
- srcs = [
- "perfetto/config/sys_stats/sys_stats_config.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- ],
-)
-
-# GN target: //protos/perfetto/config/sys_stats:lite_gen
-cc_proto_library(
- name = "config_sys_stats_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_sys_stats",
- ],
-)
-
-# GN target: //protos/perfetto/config/sys_stats:lite_gen
-java_proto_library(
- name = "config_sys_stats_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:config_sys_stats",
- ],
-)
-
-# GN target: //protos/perfetto/config/sys_stats:zero_gen
-proto_library(
- name = "config_sys_stats_zero",
- srcs = [
- "perfetto/config/sys_stats/sys_stats_config.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- ],
-)
-
-# GN target: //protos/perfetto/config/sys_stats:zero_gen
-pbzero_cc_proto_library(
- name = "config_sys_stats_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_sys_stats_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/config:zero_gen
-proto_library(
- name = "config_zero",
- srcs = [
- "perfetto/config/chrome/chrome_config.proto",
- "perfetto/config/data_source_config.proto",
- "perfetto/config/test_config.proto",
- "perfetto/config/trace_config.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- "//third_party/perfetto/protos:config_android_zero",
- "//third_party/perfetto/protos:config_ftrace_zero",
- "//third_party/perfetto/protos:config_gpu_zero",
- "//third_party/perfetto/protos:config_inode_file_zero",
- "//third_party/perfetto/protos:config_power_zero",
- "//third_party/perfetto/protos:config_process_stats_zero",
- "//third_party/perfetto/protos:config_profiling_zero",
- "//third_party/perfetto/protos:config_sys_stats_zero",
- ],
-)
-
-# GN target: //protos/perfetto/config:zero_gen
-pbzero_cc_proto_library(
- name = "config_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:config_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/metrics:lite_gen
-proto_library(
- name = "metrics",
- srcs = [
- "perfetto/metrics/metrics.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:metrics_android",
- ],
-)
-
-# GN target: //protos/perfetto/metrics/android:lite_gen
-proto_library(
- name = "metrics_android",
- srcs = [
- "perfetto/metrics/android/batt_metric.proto",
- "perfetto/metrics/android/cpu_metric.proto",
- "perfetto/metrics/android/heap_profile_callsite_stats.proto",
- "perfetto/metrics/android/ion_metric.proto",
- "perfetto/metrics/android/lmk_metric.proto",
- "perfetto/metrics/android/mem_metric.proto",
- "perfetto/metrics/android/mem_unagg_metric.proto",
- "perfetto/metrics/android/package_list.proto",
- "perfetto/metrics/android/powrails_metric.proto",
- "perfetto/metrics/android/process_growth.proto",
- "perfetto/metrics/android/startup_metric.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/metrics/android:lite_gen
-cc_proto_library(
- name = "metrics_android_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:metrics_android",
- ],
-)
-
-# GN target: //protos/perfetto/metrics/android:lite_gen
-java_proto_library(
- name = "metrics_android_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:metrics_android",
- ],
-)
-
-# GN target: //protos/perfetto/metrics/android:zero_gen
-proto_library(
- name = "metrics_android_zero",
- srcs = [
- "perfetto/metrics/android/batt_metric.proto",
- "perfetto/metrics/android/cpu_metric.proto",
- "perfetto/metrics/android/heap_profile_callsite_stats.proto",
- "perfetto/metrics/android/ion_metric.proto",
- "perfetto/metrics/android/lmk_metric.proto",
- "perfetto/metrics/android/mem_metric.proto",
- "perfetto/metrics/android/mem_unagg_metric.proto",
- "perfetto/metrics/android/package_list.proto",
- "perfetto/metrics/android/powrails_metric.proto",
- "perfetto/metrics/android/process_growth.proto",
- "perfetto/metrics/android/startup_metric.proto",
- ],
-)
-
-# GN target: //protos/perfetto/metrics/android:zero_gen
-pbzero_cc_proto_library(
- name = "metrics_android_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:metrics_android_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/metrics:lite_gen
-cc_proto_library(
- name = "metrics_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:metrics",
- ],
-)
-
-# GN target: //protos/perfetto/metrics:lite_gen
-java_proto_library(
- name = "metrics_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:metrics",
- ],
-)
-
-# GN target: //protos/perfetto/metrics:zero_gen
-proto_library(
- name = "metrics_zero",
- srcs = [
- "perfetto/metrics/metrics.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:metrics_android_zero",
- ],
-)
-
-# GN target: //protos/perfetto/metrics:zero_gen
-pbzero_cc_proto_library(
- name = "metrics_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:metrics_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/third_party/pprof:lite_gen
-proto_library(
- name = "protos_third_party_pprof",
- srcs = [
- "third_party/pprof/profile.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/third_party/pprof:lite_gen
-cc_proto_library(
- name = "protos_third_party_pprof_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:protos_third_party_pprof",
- ],
-)
-
-# GN target: //protos/third_party/pprof:lite_gen
-java_proto_library(
- name = "protos_third_party_pprof_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:protos_third_party_pprof",
- ],
-)
-
-# GN target: //protos/perfetto/trace/android:lite_gen
-proto_library(
- name = "trace_android",
- srcs = [
- "perfetto/trace/android/android_log.proto",
- "perfetto/trace/android/graphics_frame_event.proto",
- "perfetto/trace/android/packages_list.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- ],
-)
-
-# GN target: //protos/perfetto/trace/android:lite_gen
-cc_proto_library(
- name = "trace_android_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_android",
- ],
-)
-
-# GN target: //protos/perfetto/trace/android:lite_gen
-java_proto_library(
- name = "trace_android_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_android",
- ],
-)
-
-# GN target: //protos/perfetto/trace/android:zero_gen
-proto_library(
- name = "trace_android_zero",
- srcs = [
- "perfetto/trace/android/android_log.proto",
- "perfetto/trace/android/graphics_frame_event.proto",
- "perfetto/trace/android/packages_list.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/android:zero_gen
-pbzero_cc_proto_library(
- name = "trace_android_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_android_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/appended_data:lite_gen
-proto_library(
- name = "trace_appended_data",
- srcs = [
- "perfetto/trace/appended_data/appended_data.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_profiling",
- ],
-)
-
-# GN target: //protos/perfetto/trace/appended_data:lite_gen
-cc_proto_library(
- name = "trace_appended_data_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_appended_data",
- ],
-)
-
-# GN target: //protos/perfetto/trace/appended_data:lite_gen
-java_proto_library(
- name = "trace_appended_data_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_appended_data",
- ],
-)
-
-# GN target: //protos/perfetto/trace/appended_data:zero_gen
-proto_library(
- name = "trace_appended_data_zero",
- srcs = [
- "perfetto/trace/appended_data/appended_data.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_profiling_zero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/appended_data:zero_gen
-pbzero_cc_proto_library(
- name = "trace_appended_data_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_appended_data_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/chrome:lite_gen
-proto_library(
- name = "trace_chrome",
- srcs = [
- "perfetto/trace/chrome/chrome_benchmark_metadata.proto",
- "perfetto/trace/chrome/chrome_metadata.proto",
- "perfetto/trace/chrome/chrome_trace_event.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/chrome:lite_gen
-cc_proto_library(
- name = "trace_chrome_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_chrome",
- ],
-)
-
-# GN target: //protos/perfetto/trace/chrome:lite_gen
-java_proto_library(
- name = "trace_chrome_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_chrome",
- ],
-)
-
-# GN target: //protos/perfetto/trace/chrome:zero_gen
-proto_library(
- name = "trace_chrome_zero",
- srcs = [
- "perfetto/trace/chrome/chrome_benchmark_metadata.proto",
- "perfetto/trace/chrome/chrome_metadata.proto",
- "perfetto/trace/chrome/chrome_trace_event.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/chrome:zero_gen
-pbzero_cc_proto_library(
- name = "trace_chrome_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_chrome_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/filesystem:lite_gen
-proto_library(
- name = "trace_filesystem",
- srcs = [
- "perfetto/trace/filesystem/inode_file_map.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/filesystem:lite_gen
-cc_proto_library(
- name = "trace_filesystem_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_filesystem",
- ],
-)
-
-# GN target: //protos/perfetto/trace/filesystem:lite_gen
-java_proto_library(
- name = "trace_filesystem_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_filesystem",
- ],
-)
-
-# GN target: //protos/perfetto/trace/filesystem:zero_gen
-proto_library(
- name = "trace_filesystem_zero",
- srcs = [
- "perfetto/trace/filesystem/inode_file_map.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/filesystem:zero_gen
-pbzero_cc_proto_library(
- name = "trace_filesystem_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_filesystem_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ftrace:lite_gen
-proto_library(
- name = "trace_ftrace",
- srcs = [
- "perfetto/trace/ftrace/binder.proto",
- "perfetto/trace/ftrace/block.proto",
- "perfetto/trace/ftrace/cgroup.proto",
- "perfetto/trace/ftrace/clk.proto",
- "perfetto/trace/ftrace/compaction.proto",
- "perfetto/trace/ftrace/ext4.proto",
- "perfetto/trace/ftrace/f2fs.proto",
- "perfetto/trace/ftrace/fence.proto",
- "perfetto/trace/ftrace/filemap.proto",
- "perfetto/trace/ftrace/ftrace.proto",
- "perfetto/trace/ftrace/ftrace_event.proto",
- "perfetto/trace/ftrace/ftrace_event_bundle.proto",
- "perfetto/trace/ftrace/ftrace_stats.proto",
- "perfetto/trace/ftrace/generic.proto",
- "perfetto/trace/ftrace/i2c.proto",
- "perfetto/trace/ftrace/ipi.proto",
- "perfetto/trace/ftrace/irq.proto",
- "perfetto/trace/ftrace/kmem.proto",
- "perfetto/trace/ftrace/lowmemorykiller.proto",
- "perfetto/trace/ftrace/mdss.proto",
- "perfetto/trace/ftrace/mm_event.proto",
- "perfetto/trace/ftrace/oom.proto",
- "perfetto/trace/ftrace/power.proto",
- "perfetto/trace/ftrace/raw_syscalls.proto",
- "perfetto/trace/ftrace/regulator.proto",
- "perfetto/trace/ftrace/sched.proto",
- "perfetto/trace/ftrace/signal.proto",
- "perfetto/trace/ftrace/sync.proto",
- "perfetto/trace/ftrace/systrace.proto",
- "perfetto/trace/ftrace/task.proto",
- "perfetto/trace/ftrace/test_bundle_wrapper.proto",
- "perfetto/trace/ftrace/vmscan.proto",
- "perfetto/trace/ftrace/workqueue.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ftrace:lite_gen
-cc_proto_library(
- name = "trace_ftrace_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_ftrace",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ftrace:lite_gen
-java_proto_library(
- name = "trace_ftrace_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_ftrace",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ftrace:zero_gen
-proto_library(
- name = "trace_ftrace_zero",
- srcs = [
- "perfetto/trace/ftrace/binder.proto",
- "perfetto/trace/ftrace/block.proto",
- "perfetto/trace/ftrace/cgroup.proto",
- "perfetto/trace/ftrace/clk.proto",
- "perfetto/trace/ftrace/compaction.proto",
- "perfetto/trace/ftrace/ext4.proto",
- "perfetto/trace/ftrace/f2fs.proto",
- "perfetto/trace/ftrace/fence.proto",
- "perfetto/trace/ftrace/filemap.proto",
- "perfetto/trace/ftrace/ftrace.proto",
- "perfetto/trace/ftrace/ftrace_event.proto",
- "perfetto/trace/ftrace/ftrace_event_bundle.proto",
- "perfetto/trace/ftrace/ftrace_stats.proto",
- "perfetto/trace/ftrace/generic.proto",
- "perfetto/trace/ftrace/i2c.proto",
- "perfetto/trace/ftrace/ipi.proto",
- "perfetto/trace/ftrace/irq.proto",
- "perfetto/trace/ftrace/kmem.proto",
- "perfetto/trace/ftrace/lowmemorykiller.proto",
- "perfetto/trace/ftrace/mdss.proto",
- "perfetto/trace/ftrace/mm_event.proto",
- "perfetto/trace/ftrace/oom.proto",
- "perfetto/trace/ftrace/power.proto",
- "perfetto/trace/ftrace/raw_syscalls.proto",
- "perfetto/trace/ftrace/regulator.proto",
- "perfetto/trace/ftrace/sched.proto",
- "perfetto/trace/ftrace/signal.proto",
- "perfetto/trace/ftrace/sync.proto",
- "perfetto/trace/ftrace/systrace.proto",
- "perfetto/trace/ftrace/task.proto",
- "perfetto/trace/ftrace/test_bundle_wrapper.proto",
- "perfetto/trace/ftrace/vmscan.proto",
- "perfetto/trace/ftrace/workqueue.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ftrace:zero_gen
-pbzero_cc_proto_library(
- name = "trace_ftrace_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_ftrace_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/gpu:lite_gen
-proto_library(
- name = "trace_gpu",
- srcs = [
- "perfetto/trace/gpu/gpu_counter_event.proto",
- "perfetto/trace/gpu/gpu_render_stage_event.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- ],
-)
-
-# GN target: //protos/perfetto/trace/gpu:lite_gen
-cc_proto_library(
- name = "trace_gpu_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_gpu",
- ],
-)
-
-# GN target: //protos/perfetto/trace/gpu:lite_gen
-java_proto_library(
- name = "trace_gpu_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_gpu",
- ],
-)
-
-# GN target: //protos/perfetto/trace/gpu:zero_gen
-proto_library(
- name = "trace_gpu_zero",
- srcs = [
- "perfetto/trace/gpu/gpu_counter_event.proto",
- "perfetto/trace/gpu/gpu_render_stage_event.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/gpu:zero_gen
-pbzero_cc_proto_library(
- name = "trace_gpu_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_gpu_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/interned_data:lite_gen
-proto_library(
- name = "trace_interned_data",
- srcs = [
- "perfetto/trace/interned_data/interned_data.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_profiling",
- "//third_party/perfetto/protos:trace_track_event",
- ],
-)
-
-# GN target: //protos/perfetto/trace/interned_data:lite_gen
-cc_proto_library(
- name = "trace_interned_data_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_interned_data",
- ],
-)
-
-# GN target: //protos/perfetto/trace/interned_data:lite_gen
-java_proto_library(
- name = "trace_interned_data_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_interned_data",
- ],
-)
-
-# GN target: //protos/perfetto/trace/interned_data:zero_gen
-proto_library(
- name = "trace_interned_data_zero",
- srcs = [
- "perfetto/trace/interned_data/interned_data.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_profiling_zero",
- "//third_party/perfetto/protos:trace_track_event_zero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/interned_data:zero_gen
-pbzero_cc_proto_library(
- name = "trace_interned_data_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_interned_data_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace:merged_trace_gen
-proto_library(
- name = "trace_merged_trace_gen",
- srcs = [
- "perfetto/trace/perfetto_trace.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace:merged_trace_gen
-cc_proto_library(
- name = "trace_merged_trace_gen_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_merged_trace_gen",
- ],
-)
-
-# GN target: //protos/perfetto/trace:merged_trace_gen
-java_proto_library(
- name = "trace_merged_trace_gen_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_merged_trace_gen",
- ],
-)
-
-# GN target: //protos/perfetto/trace:minimal_lite_gen
-proto_library(
- name = "trace_minimal",
- srcs = [
- "perfetto/trace/clock_snapshot.proto",
- "perfetto/trace/system_info.proto",
- "perfetto/trace/trigger.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- "//third_party/perfetto/protos:config",
- "//third_party/perfetto/protos:config_android",
- "//third_party/perfetto/protos:config_ftrace",
- "//third_party/perfetto/protos:config_gpu",
- "//third_party/perfetto/protos:config_inode_file",
- "//third_party/perfetto/protos:config_power",
- "//third_party/perfetto/protos:config_process_stats",
- "//third_party/perfetto/protos:config_profiling",
- "//third_party/perfetto/protos:config_sys_stats",
- ],
-)
-
-# GN target: //protos/perfetto/trace:minimal_lite_gen
-cc_proto_library(
- name = "trace_minimal_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_minimal",
- ],
-)
-
-# GN target: //protos/perfetto/trace:minimal_lite_gen
-java_proto_library(
- name = "trace_minimal_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_minimal",
- ],
-)
-
-# GN target: //protos/perfetto/trace:minimal_zero_gen
-proto_library(
- name = "trace_minimal_zero",
- srcs = [
- "perfetto/trace/clock_snapshot.proto",
- "perfetto/trace/system_info.proto",
- "perfetto/trace/trigger.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- "//third_party/perfetto/protos:config_android_zero",
- "//third_party/perfetto/protos:config_ftrace_zero",
- "//third_party/perfetto/protos:config_gpu_zero",
- "//third_party/perfetto/protos:config_inode_file_zero",
- "//third_party/perfetto/protos:config_power_zero",
- "//third_party/perfetto/protos:config_process_stats_zero",
- "//third_party/perfetto/protos:config_profiling_zero",
- "//third_party/perfetto/protos:config_sys_stats_zero",
- "//third_party/perfetto/protos:config_zero",
- ],
-)
-
-# GN target: //protos/perfetto/trace:minimal_zero_gen
-pbzero_cc_proto_library(
- name = "trace_minimal_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_minimal_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace:non_minimal_lite_gen
-proto_library(
- name = "trace_non_minimal",
- srcs = [
- "perfetto/trace/test_event.proto",
- "perfetto/trace/trace.proto",
- "perfetto/trace/trace_packet.proto",
- "perfetto/trace/trace_packet_defaults.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- "//third_party/perfetto/protos:config",
- "//third_party/perfetto/protos:config_android",
- "//third_party/perfetto/protos:config_ftrace",
- "//third_party/perfetto/protos:config_gpu",
- "//third_party/perfetto/protos:config_inode_file",
- "//third_party/perfetto/protos:config_power",
- "//third_party/perfetto/protos:config_process_stats",
- "//third_party/perfetto/protos:config_profiling",
- "//third_party/perfetto/protos:config_sys_stats",
- "//third_party/perfetto/protos:trace_android",
- "//third_party/perfetto/protos:trace_appended_data",
- "//third_party/perfetto/protos:trace_chrome",
- "//third_party/perfetto/protos:trace_filesystem",
- "//third_party/perfetto/protos:trace_ftrace",
- "//third_party/perfetto/protos:trace_gpu",
- "//third_party/perfetto/protos:trace_interned_data",
- "//third_party/perfetto/protos:trace_minimal",
- "//third_party/perfetto/protos:trace_perfetto",
- "//third_party/perfetto/protos:trace_power",
- "//third_party/perfetto/protos:trace_profiling",
- "//third_party/perfetto/protos:trace_ps",
- "//third_party/perfetto/protos:trace_sys_stats",
- "//third_party/perfetto/protos:trace_track_event",
- ],
-)
-
-# GN target: //protos/perfetto/trace:non_minimal_lite_gen
-cc_proto_library(
- name = "trace_non_minimal_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_non_minimal",
- ],
-)
-
-# GN target: //protos/perfetto/trace:non_minimal_lite_gen
-java_proto_library(
- name = "trace_non_minimal_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_non_minimal",
- ],
-)
-
-# GN target: //protos/perfetto/trace:non_minimal_zero_gen
-proto_library(
- name = "trace_non_minimal_zero",
- srcs = [
- "perfetto/trace/test_event.proto",
- "perfetto/trace/trace.proto",
- "perfetto/trace/trace_packet.proto",
- "perfetto/trace/trace_packet_defaults.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- "//third_party/perfetto/protos:config_android_zero",
- "//third_party/perfetto/protos:config_ftrace_zero",
- "//third_party/perfetto/protos:config_gpu_zero",
- "//third_party/perfetto/protos:config_inode_file_zero",
- "//third_party/perfetto/protos:config_power_zero",
- "//third_party/perfetto/protos:config_process_stats_zero",
- "//third_party/perfetto/protos:config_profiling_zero",
- "//third_party/perfetto/protos:config_sys_stats_zero",
- "//third_party/perfetto/protos:config_zero",
- "//third_party/perfetto/protos:trace_android_zero",
- "//third_party/perfetto/protos:trace_appended_data_zero",
- "//third_party/perfetto/protos:trace_chrome_zero",
- "//third_party/perfetto/protos:trace_filesystem_zero",
- "//third_party/perfetto/protos:trace_ftrace_zero",
- "//third_party/perfetto/protos:trace_gpu_zero",
- "//third_party/perfetto/protos:trace_interned_data_zero",
- "//third_party/perfetto/protos:trace_minimal_zero",
- "//third_party/perfetto/protos:trace_perfetto_zero",
- "//third_party/perfetto/protos:trace_power_zero",
- "//third_party/perfetto/protos:trace_profiling_zero",
- "//third_party/perfetto/protos:trace_ps_zero",
- "//third_party/perfetto/protos:trace_sys_stats_zero",
- "//third_party/perfetto/protos:trace_track_event_zero",
- ],
-)
-
-# GN target: //protos/perfetto/trace:non_minimal_zero_gen
-pbzero_cc_proto_library(
- name = "trace_non_minimal_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_non_minimal_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/perfetto:lite_gen
-proto_library(
- name = "trace_perfetto",
- srcs = [
- "perfetto/trace/perfetto/perfetto_metatrace.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/perfetto:lite_gen
-cc_proto_library(
- name = "trace_perfetto_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_perfetto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/perfetto:lite_gen
-java_proto_library(
- name = "trace_perfetto_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_perfetto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/perfetto:zero_gen
-proto_library(
- name = "trace_perfetto_zero",
- srcs = [
- "perfetto/trace/perfetto/perfetto_metatrace.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/perfetto:zero_gen
-pbzero_cc_proto_library(
- name = "trace_perfetto_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_perfetto_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/power:lite_gen
-proto_library(
- name = "trace_power",
- srcs = [
- "perfetto/trace/power/battery_counters.proto",
- "perfetto/trace/power/power_rails.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/power:lite_gen
-cc_proto_library(
- name = "trace_power_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_power",
- ],
-)
-
-# GN target: //protos/perfetto/trace/power:lite_gen
-java_proto_library(
- name = "trace_power_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_power",
- ],
-)
-
-# GN target: //protos/perfetto/trace/power:zero_gen
-proto_library(
- name = "trace_power_zero",
- srcs = [
- "perfetto/trace/power/battery_counters.proto",
- "perfetto/trace/power/power_rails.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/power:zero_gen
-pbzero_cc_proto_library(
- name = "trace_power_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_power_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace_processor:lite_gen
-proto_library(
- name = "trace_processor",
- srcs = [
- "perfetto/trace_processor/raw_query.proto",
- "perfetto/trace_processor/trace_processor.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace_processor:lite_gen
-cc_proto_library(
- name = "trace_processor_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_processor",
- ],
-)
-
-# GN target: //protos/perfetto/trace_processor:lite_gen
-java_proto_library(
- name = "trace_processor_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_processor",
- ],
-)
-
-# GN target: //protos/perfetto/trace_processor:metrics_impl_zero_gen
-proto_library(
- name = "trace_processor_metrics_impl_zero",
- srcs = [
- "perfetto/trace_processor/metrics_impl.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace_processor:metrics_impl_zero_gen
-pbzero_cc_proto_library(
- name = "trace_processor_metrics_impl_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_processor_metrics_impl_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/profiling:lite_gen
-proto_library(
- name = "trace_profiling",
- srcs = [
- "perfetto/trace/profiling/heap_graph.proto",
- "perfetto/trace/profiling/profile_common.proto",
- "perfetto/trace/profiling/profile_packet.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/profiling:lite_gen
-cc_proto_library(
- name = "trace_profiling_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_profiling",
- ],
-)
-
-# GN target: //protos/perfetto/trace/profiling:lite_gen
-java_proto_library(
- name = "trace_profiling_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_profiling",
- ],
-)
-
-# GN target: //protos/perfetto/trace/profiling:zero_gen
-proto_library(
- name = "trace_profiling_zero",
- srcs = [
- "perfetto/trace/profiling/heap_graph.proto",
- "perfetto/trace/profiling/profile_common.proto",
- "perfetto/trace/profiling/profile_packet.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/profiling:zero_gen
-pbzero_cc_proto_library(
- name = "trace_profiling_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_profiling_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ps:lite_gen
-proto_library(
- name = "trace_ps",
- srcs = [
- "perfetto/trace/ps/process_stats.proto",
- "perfetto/trace/ps/process_tree.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ps:lite_gen
-cc_proto_library(
- name = "trace_ps_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_ps",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ps:lite_gen
-java_proto_library(
- name = "trace_ps_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_ps",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ps:zero_gen
-proto_library(
- name = "trace_ps_zero",
- srcs = [
- "perfetto/trace/ps/process_stats.proto",
- "perfetto/trace/ps/process_tree.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/ps:zero_gen
-pbzero_cc_proto_library(
- name = "trace_ps_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_ps_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/sys_stats:lite_gen
-proto_library(
- name = "trace_sys_stats",
- srcs = [
- "perfetto/trace/sys_stats/sys_stats.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:common",
- ],
-)
-
-# GN target: //protos/perfetto/trace/sys_stats:lite_gen
-cc_proto_library(
- name = "trace_sys_stats_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_sys_stats",
- ],
-)
-
-# GN target: //protos/perfetto/trace/sys_stats:lite_gen
-java_proto_library(
- name = "trace_sys_stats_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_sys_stats",
- ],
-)
-
-# GN target: //protos/perfetto/trace/sys_stats:zero_gen
-proto_library(
- name = "trace_sys_stats_zero",
- srcs = [
- "perfetto/trace/sys_stats/sys_stats.proto",
- ],
- deps = [
- "//third_party/perfetto/protos:common_zero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/sys_stats:zero_gen
-pbzero_cc_proto_library(
- name = "trace_sys_stats_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_sys_stats_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
-
-# GN target: //protos/perfetto/trace/track_event:lite_gen
-proto_library(
- name = "trace_track_event",
- srcs = [
- "perfetto/trace/track_event/debug_annotation.proto",
- "perfetto/trace/track_event/log_message.proto",
- "perfetto/trace/track_event/process_descriptor.proto",
- "perfetto/trace/track_event/source_location.proto",
- "perfetto/trace/track_event/task_execution.proto",
- "perfetto/trace/track_event/thread_descriptor.proto",
- "perfetto/trace/track_event/track_descriptor.proto",
- "perfetto/trace/track_event/track_event.proto",
- ],
- has_services = 1,
- cc_api_version = 2,
- cc_generic_services = 1,
- visibility = [
- "//visibility:public",
- ],
-)
-
-# GN target: //protos/perfetto/trace/track_event:lite_gen
-cc_proto_library(
- name = "trace_track_event_cc_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_track_event",
- ],
-)
-
-# GN target: //protos/perfetto/trace/track_event:lite_gen
-java_proto_library(
- name = "trace_track_event_java_proto",
- visibility = [
- "//visibility:public",
- ],
- deps = [
- "//third_party/perfetto/protos:trace_track_event",
- ],
-)
-
-# GN target: //protos/perfetto/trace/track_event:zero_gen
-proto_library(
- name = "trace_track_event_zero",
- srcs = [
- "perfetto/trace/track_event/debug_annotation.proto",
- "perfetto/trace/track_event/log_message.proto",
- "perfetto/trace/track_event/process_descriptor.proto",
- "perfetto/trace/track_event/source_location.proto",
- "perfetto/trace/track_event/task_execution.proto",
- "perfetto/trace/track_event/thread_descriptor.proto",
- "perfetto/trace/track_event/track_descriptor.proto",
- "perfetto/trace/track_event/track_event.proto",
- ],
-)
-
-# GN target: //protos/perfetto/trace/track_event:zero_gen
-pbzero_cc_proto_library(
- name = "trace_track_event_zero_cc_proto",
- src_proto_library = "//third_party/perfetto/protos:trace_track_event_zero",
- deps = [
- "//third_party/perfetto:libprotozero",
- ],
-)
diff --git a/src/ipc/BUILD.gn b/src/ipc/BUILD.gn
index 12353de..ed0ecd2 100644
--- a/src/ipc/BUILD.gn
+++ b/src/ipc/BUILD.gn
@@ -30,6 +30,7 @@
]
deps = [
"../../gn:default_deps",
+ "../../gn:protobuf_lite",
"../../protos/perfetto/ipc:wire_protocol",
"../base",
]
@@ -86,3 +87,12 @@
proto_in_dir = perfetto_root_path
proto_out_dir = perfetto_root_path
}
+
+# This is used by Bazel BUILD rules.
+static_library("perfetto_ipc") {
+ complete_static_lib = true
+ deps = [
+ ":ipc",
+ "../../gn:default_deps",
+ ]
+}
diff --git a/src/trace_processor/tables/BUILD.gn b/src/trace_processor/tables/BUILD.gn
index ba41d12..ab79c88 100644
--- a/src/trace_processor/tables/BUILD.gn
+++ b/src/trace_processor/tables/BUILD.gn
@@ -16,6 +16,7 @@
sources = [
"macros.h",
"macros_internal.h",
+ "profiler_tables.h",
"slice_tables.h",
"track_tables.h",
]
diff --git a/tools/gen_bazel b/tools/gen_bazel
index 0c2187b..27dee42 100755
--- a/tools/gen_bazel
+++ b/tools/gen_bazel
@@ -25,17 +25,262 @@
from __future__ import print_function
import argparse
-import functools
import json
import os
import re
import sys
-import textwrap
import gn_utils
-# Copyright header for generated code.
-header = """# Copyright (C) 2019 The Android Open Source Project
+# Arguments for the GN output directory.
+# host_os="linux" is to generate the right build files from Mac OS.
+gn_args = ' '.join([
+ 'host_os="linux"',
+ 'is_debug=false',
+ 'is_perfetto_build_generator=true',
+ 'enable_perfetto_watchdog=true',
+ 'monolithic_binaries=true',
+ 'target_os="linux"',
+])
+
+# Default targets to translate to the blueprint file.
+
+# These targets will be exported with public visibility in the generated BUILD.
+public_targets = [
+ '//src/perfetto_cmd:perfetto',
+ '//src/traced/probes:traced_probes',
+ '//src/traced/service:traced',
+ '//src/trace_processor:trace_processor_shell',
+ '//src/trace_processor:trace_processor',
+ '//tools/trace_to_text:libpprofbuilder',
+]
+
+# These targets are required by internal build rules but don't need to be
+# exported publicly.
+default_targets = [
+ '//src/ipc:perfetto_ipc',
+ '//src/ipc/protoc_plugin:ipc_plugin',
+ '//src/protozero:libprotozero',
+ '//src/protozero/protoc_plugin:protozero_plugin',
+] + public_targets
+
+# Root proto targets (to force discovery of intermediate proto targets).
+proto_targets = [
+ '//protos/perfetto/metrics:lite',
+ '//protos/perfetto/trace:lite',
+ '//protos/perfetto/config:lite',
+]
+
+# The directory where the generated perfetto_build_flags.h will be copied into.
+buildflags_dir = 'include/perfetto/base/build_configs/bazel'
+
+# Internal equivalents for third-party libraries that the upstream project
+# depends on.
+external_deps = {
+ '//gn:default_deps': [],
+ '//gn:jsoncpp': ['PERFETTO_CONFIG.deps.jsoncpp'],
+ '//gn:linenoise': ['PERFETTO_CONFIG.deps.linenoise'],
+ '//gn:protobuf_full': ['PERFETTO_CONFIG.deps.protobuf_full'],
+ '//gn:protobuf_lite': ['PERFETTO_CONFIG.deps.protobuf_lite'],
+ '//gn:protoc_lib': ['PERFETTO_CONFIG.deps.protoc_lib'],
+ '//gn:protoc': ['PERFETTO_CONFIG.deps.protoc'],
+ '//gn:sqlite': [
+ 'PERFETTO_CONFIG.deps.sqlite',
+ 'PERFETTO_CONFIG.deps.sqlite_ext_percentile'
+ ],
+ '//gn:zlib': ['PERFETTO_CONFIG.deps.zlib'],
+ '//gn/standalone:gen_git_revision': [],
+ '//src/trace_processor/metrics:gen_merged_sql_metrics': [
+ '[ ":cc_merged_sql_metrics" ]'
+ ]
+}
+
+
+def gen_sql_metrics(target):
+ label = BazelLabel(get_bazel_label_name(target.name), 'genrule')
+ label.srcs += [re.sub('^//', '', x) for x in target.inputs]
+ label.outs += target.outputs
+ label.cmd = r'$(location gen_merged_sql_metrics_py) --cpp_out=$@ $(SRCS)'
+ label.tools += [':gen_merged_sql_metrics_py']
+ return [label]
+
+
+custom_actions = {
+ '//src/trace_processor/metrics:gen_merged_sql_metrics': gen_sql_metrics,
+}
+
+# ------------------------------------------------------------------------------
+# End of configuration.
+# ------------------------------------------------------------------------------
+
+
+class Error(Exception):
+ pass
+
+
+class BazelLabel(object):
+
+ def __init__(self, name, type):
+ self.comment = None
+ self.name = name
+ self.type = type
+ self.visibility = []
+ self.srcs = []
+ self.hdrs = []
+ self.deps = []
+ self.external_deps = []
+ self.tools = []
+ self.outs = []
+
+ def __str__(self):
+ """Converts the object into a Bazel Starlark label."""
+ res = ''
+ res += ('# GN target: %s\n' % self.comment) if self.comment else ''
+ res += '%s(\n' % self.type
+ any_deps = len(self.deps) + len(self.external_deps) > 0
+ ORD = ['name', 'srcs', 'hdrs', 'visibility', 'deps', 'outs', 'cmd', 'tools']
+ key_sorter = lambda kv: ORD.index(kv[0]) if kv[0] in ORD else '99-' + kv[0]
+ for k, v in sorted(self.__dict__.iteritems(), key=key_sorter):
+ if k in ('type', 'comment',
+ 'external_deps') or v is None or (v == [] and
+ (k != 'deps' or not any_deps)):
+ continue
+ res += ' %s = ' % k
+ if isinstance(v, basestring):
+ res += '"%s",\n' % v
+ elif isinstance(v, list):
+ res += '[\n'
+ for entry in v:
+ res += ' "%s",\n' % entry
+ res += ' ]'
+ if k == 'deps':
+ for edep in self.external_deps:
+ res += '\n + %s' % edep
+ res += ',\n'
+ else:
+ raise Error('Unsupported value %s', type(v))
+ res += ')\n\n'
+ return res
+
+
+def get_bazel_label_name(gn_name):
+ """Converts a GN target name into a Bazel label name.
+
+ If target is in the public taraget list, returns only the GN target name,
+ e.g.: //src/ipc:perfetto_ipc -> perfetto_ipc
+
+ Otherwise, in the case of an intermediate taraget, returns a mangled path.
+ e.g.: //include/perfetto/base:base -> include_perfetto_base_base.
+ """
+ if gn_name in default_targets:
+ return gn_utils.label_without_toolchain(gn_name).split(':')[1]
+ return gn_utils.label_to_target_name_with_path(gn_name)
+
+
+def gen_proto_labels(target):
+ """ Generates the xx_proto_library label for proto targets.
+
+ Bazel requires that each protobuf-related target is modeled with two labels:
+ 1. A plugin-dependent target (e.g. cc_library, cc_protozero_library) that has
+ only a dependency on 2 and does NOT refer to any .proto sources.
+ 2. A plugin-agnostic target that defines only the .proto sources and their
+ dependencies.
+ """
+ assert (target.type == 'proto_library')
+
+ def get_sources_label(target_name):
+ return re.sub('_(lite|zero)$', '',
+ get_bazel_label_name(target_name)) + '_protos'
+
+ sources_label_name = get_sources_label(target.name)
+
+ # Generates 1.
+ if target.proto_plugin == 'proto':
+ plugin_label_type = 'perfetto_cc_proto_library'
+ elif target.proto_plugin == 'protozero':
+ plugin_label_type = 'perfetto_cc_protozero_library'
+ elif target.proto_plugin == 'ipc':
+ plugin_label_type = 'perfetto_cc_ipc_library'
+ else:
+ raise Error('Unknown proto plugin: %s' % target.proto_plugin)
+ plugin_label_name = get_bazel_label_name(target.name)
+ plugin_label = BazelLabel(plugin_label_name, plugin_label_type)
+ plugin_label.comment = target.name
+ plugin_label.deps += [':' + sources_label_name]
+
+ # Generates 2.
+ sources_label = BazelLabel(sources_label_name, 'perfetto_proto_library')
+ sources_label.comment = target.name
+ assert (all(x.startswith('//') for x in target.sources))
+ assert (all(x.endswith('.proto') for x in target.sources))
+ sources_label.srcs = sorted([x[2:] for x in target.sources]) # Strip //.
+ deps = [':' + get_sources_label(x) for x in target.proto_deps]
+ sources_label.deps = sorted(deps)
+
+ return [plugin_label, sources_label]
+
+
+def gen_target(gn_target):
+ if gn_target.type == 'proto_library':
+ return gen_proto_labels(gn_target)
+ elif gn_target.type == 'action':
+ if gn_target.name in custom_actions:
+ return custom_actions[gn_target.name](gn_target)
+ return []
+ elif gn_target.type == 'group':
+ return []
+ elif gn_target.type == 'executable':
+ bazel_type = 'perfetto_cc_binary'
+ elif gn_target.type == 'shared_library':
+ bazel_type = 'perfetto_cc_binary'
+ vars['linkshared'] = True
+ elif gn_target.type == 'static_library':
+ bazel_type = 'perfetto_cc_library'
+ elif gn_target.type == 'source_set':
+ bazel_type = 'filegroup'
+ else:
+ raise Error('target type not supported: %s' % gn_target.type)
+
+ label = BazelLabel(get_bazel_label_name(gn_target.name), bazel_type)
+ label.comment = gn_target.name
+ label.srcs = [x[2:] for x in gn_target.sources]
+
+ if gn_target.name in public_targets:
+ label.visibility = ['//visibility:public']
+
+ if gn_target.type in gn_utils.LINKER_UNIT_TYPES:
+ # |source_sets| contains the transitive set of source_set deps.
+ for trans_dep in gn_target.source_set_deps:
+ name = ':' + get_bazel_label_name(trans_dep)
+ if name.startswith(
+ ':include_perfetto_') and gn_target.type != 'executable':
+ label.hdrs += [name]
+ else:
+ label.srcs += [name]
+ for dep in gn_target.deps:
+ if dep.startswith('//gn:'):
+ assert (dep in external_deps), dep
+ if dep in external_deps:
+ assert (isinstance(external_deps[dep], list))
+ label.external_deps += external_deps[dep]
+ else:
+ label.deps += [':' + get_bazel_label_name(dep)]
+ label.deps += [':' + get_bazel_label_name(x) for x in gn_target.proto_deps]
+
+ label.deps = sorted(label.deps)
+ label.srcs = sorted(label.srcs)
+ label.hdrs = sorted(label.hdrs)
+ return [label]
+
+
+def gen_target_str(gn_target):
+ return ''.join(str(x) for x in gen_target(gn_target))
+
+
+def generate_build(gn_desc, targets, extras):
+ gn = gn_utils.GnParser(gn_desc)
+ res = '''
+# Copyright (C) 2019 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.
@@ -50,580 +295,91 @@
# limitations under the License.
#
# This file is automatically generated by {}. Do not edit.
-""".format(__file__)
-# Arguments for the GN output directory.
-# host_os="linux" is to generate the right build files from Mac OS.
-gn_args = ' '.join([
- 'host_os="linux"',
- 'is_debug=false',
- 'is_perfetto_build_generator=true',
- 'target_os="linux"',
-])
+load("@perfetto_cfg//:perfetto_cfg.bzl", "PERFETTO_CONFIG")
+load(
+ "@perfetto//bazel:rules.bzl",
+ "perfetto_cc_binary",
+ "perfetto_cc_ipc_library",
+ "perfetto_cc_library",
+ "perfetto_cc_proto_library",
+ "perfetto_cc_protozero_library",
+ "perfetto_proto_library",
+ "perfetto_py_binary",
+)
-# Default targets to translate to the blueprint file.
-default_targets = [
- '//src/trace_processor:trace_processor_shell',
- '//src/protozero:libprotozero',
- '//src/trace_processor:trace_processor',
- '//tools/trace_to_text:trace_to_text',
- '//tools/trace_to_text:libpprofbuilder',
- '//protos/perfetto/config:merged_config_gen',
- '//protos/perfetto/trace:merged_trace_gen',
- '//protos/perfetto/trace_processor:lite_gen',
- '//protos/perfetto/metrics:lite_gen',
-]
+package(default_visibility = ["//visibility:private"])
+licenses(["notice"]) # Apache 2.0
+exports_files(["NOTICE"])
+'''.format(__file__)
-# The directory where the generated perfetto_build_flags.h will be copied into.
-buildflags_dir = 'include/perfetto/base/build_configs/bazel'
+ # Public targets need to be computed at the beginning (to figure out the
+ # intermediate deps) but printed at the end (because declaration order matters
+ # in Bazel).
+ public_str = ''
+ for target_name in sorted(public_targets):
+ target = gn.get_target(target_name)
+ public_str += gen_target_str(target)
+ res += '''
+# ##############################################################################
+# Internal targets
+# ##############################################################################
-def enable_sqlite(module):
- module.deps.add(Label('//third_party/sqlite'))
- module.deps.add(Label('//third_party/sqlite:sqlite_ext_percentile'))
+'''
+ # Generate the other non-public targets.
+ for target_name in sorted(set(default_targets) - set(public_targets)):
+ target = gn.get_target(target_name)
+ res += gen_target_str(target)
+ # Generate all the intermediate targets.
+ for target in sorted(gn.all_targets.itervalues(), key=lambda x: x.name):
+ if target.name in default_targets or target.name in gn.proto_libs:
+ continue
+ res += gen_target_str(target)
-def enable_jsoncpp(module):
- module.deps.add(Label('//third_party/perfetto/google:jsoncpp'))
+ res += '''
+# ##############################################################################
+# Proto libraries
+# ##############################################################################
+'''
+ # Force discovery of explicilty listed root proto targets.
+ for target_name in proto_targets:
+ gn.get_target(target_name)
-def enable_linenoise(module):
- module.deps.add(Label('//third_party/perfetto/google:linenoise'))
+ # Generate targets for the transitive set of proto targets.
+ # TODO explain deduping here.
+ labels = {}
+ for target in gn.proto_libs.itervalues():
+ for label in gen_target(target):
+ labels[label.name] = label
+ res += ''.join(str(x) for x in labels.itervalues())
-def enable_gtest_prod(module):
- module.deps.add(Label('//third_party/perfetto/google:gtest_prod'))
+ res += '''
+# ##############################################################################
+# Public targets
+# ##############################################################################
-
-def enable_protobuf_full(module):
- module.deps.add(Label('//third_party/protobuf:libprotoc_legacy'))
- module.deps.add(Label('//third_party/protobuf:protobuf_legacy'))
-
-
-def enable_perfetto_version(module):
- module.deps.add(Label('//third_party/perfetto/google:perfetto_version'))
-
-
-def enable_zlib(module):
- module.deps.add(Label('//third_party/zlib:zlibsystem'))
-
-
-def disable_module(module):
- pass
-
-
-# Internal equivalents for third-party libraries that the upstream project
-# depends on.
-builtin_deps = {
- '//buildtools:linenoise': enable_linenoise,
- '//buildtools:protobuf_full': enable_protobuf_full,
- '//buildtools:protobuf_lite': disable_module,
- '//buildtools:protoc': disable_module,
- '//buildtools:sqlite': enable_sqlite,
- '//buildtools:zlib': enable_zlib,
- '//gn:default_deps': disable_module,
- '//gn:jsoncpp': enable_jsoncpp,
- '//gn:protoc_lib': enable_protobuf_full,
- '//gn/standalone:gen_git_revision': enable_perfetto_version,
-}
-
-# ----------------------------------------------------------------------------
-# End of configuration.
-# ----------------------------------------------------------------------------
-
-
-class Error(Exception):
- pass
-
-
-def is_public_header(label):
- """
- Returns if this is a c++ header file that is part of the API.
- Args:
- label: Label to evaluate
- """
- # TODO(135923303): Remove the pprof builder once the long-term solution lands
- return label.endswith('.h') and (
- label.startswith('//include/perfetto/') or
- label == '//tools/trace_to_text/pprof_builder.h' or
- label == '//tools/trace_to_text/symbolizer.h')
-
-
-@functools.total_ordering
-class Label(object):
- """Represents a label in BUILD file terminology. This class wraps a string
- label to allow for correct comparison of labels for sorting.
-
- Args:
- label: The string rerepsentation of the label.
- """
-
- def __init__(self, label):
- self.label = label
-
- def is_absolute(self):
- return self.label.startswith('//')
-
- def dirname(self):
- return self.label.split(':')[0] if ':' in self.label else self.label
-
- def basename(self):
- return self.label.split(':')[1] if ':' in self.label else ''
-
- def __eq__(self, other):
- return self.label == other.label
-
- def __lt__(self, other):
- return (
- self.is_absolute(),
- self.dirname(),
- self.basename()
- ) < (
- other.is_absolute(),
- other.dirname(),
- other.basename()
- )
-
- def __str__(self):
- return self.label
-
- def __hash__(self):
- return hash(self.label)
-
-
-class Writer(object):
- def __init__(self, output, width=79):
- self.output = output
- self.width = width
-
- def comment(self, text):
- for line in textwrap.wrap(text,
- self.width - 2,
- break_long_words=False,
- break_on_hyphens=False):
- self.output.write('# {}\n'.format(line))
-
- def newline(self):
- self.output.write('\n')
-
- def line(self, s, indent=0):
- self.output.write(' ' * indent + s + '\n')
-
- def variable(self, key, value, sort=True):
- if value is None:
- return
- if isinstance(value, set) or isinstance(value, list):
- if len(value) == 0:
- return
- self.line('{} = ['.format(key), indent=1)
- for v in sorted(list(value)) if sort else value:
- self.line('"{}",'.format(v), indent=2)
- self.line('],', indent=1)
- elif isinstance(value, basestring):
- self.line('{} = "{}",'.format(key, value), indent=1)
- else:
- self.line('{} = {},'.format(key, value), indent=1)
-
- def header(self):
- self.output.write(header)
-
-
-class Target(object):
- """In-memory representation of a BUILD target."""
-
- def __init__(self, type, name, gn_name=None):
- assert type in ('cc_binary', 'cc_library', 'cc_proto_library',
- 'proto_library', 'filegroup', 'alias',
- 'pbzero_cc_proto_library', 'genrule',
- 'transitive_descriptor_set', 'java_proto_library' )
- self.type = type
- self.name = name
- self.srcs = set()
- self.hdrs = set()
- self.deps = set()
- self.visibility = set()
- self.gn_name = gn_name
- self.cc_proto_fields = False
- self.src_proto_library = None
- self.outs = set()
- self.cmd = None
- self.tools = set()
-
- def write(self, writer):
- if self.gn_name:
- writer.comment('GN target: {}'.format(self.gn_name))
-
- writer.line('{}('.format(self.type))
- writer.variable('name', self.name)
- writer.variable('srcs', self.srcs)
- writer.variable('hdrs', self.hdrs)
-
- if self.cc_proto_fields:
- assert(self.type == 'proto_library')
- if self.srcs:
- writer.variable('has_services', 1)
- writer.variable('cc_api_version', 2)
- if self.srcs:
- writer.variable('cc_generic_services', 1)
-
- writer.variable('src_proto_library', self.src_proto_library)
-
- writer.variable('outs', self.outs)
- writer.variable('cmd', self.cmd)
- writer.variable('tools', self.tools)
-
- # Keep visibility and deps last.
- writer.variable('visibility', self.visibility)
-
- if type != 'filegroup':
- writer.variable('deps', self.deps)
-
- writer.line(')')
-
-
-class Build(object):
- """In-memory representation of a BUILD file."""
-
- def __init__(self, public, header_lines=[]):
- self.targets = {}
- self.public = public
- self.header_lines = header_lines
-
- def add_target(self, target):
- self.targets[target.name] = target
-
- def write(self, writer):
- writer.header()
- writer.newline()
- for line in self.header_lines:
- writer.line(line)
- if self.header_lines:
- writer.newline()
- if self.public:
- writer.line(
- 'package(default_visibility = ["//visibility:public"])')
- else:
- writer.line(
- 'package(default_visibility = ["//third_party/perfetto:__subpackages__"])')
- writer.newline()
- writer.line('licenses(["notice"]) # Apache 2.0')
- writer.newline()
- writer.line('exports_files(["LICENSE"])')
- writer.newline()
-
- sorted_targets = sorted(
- self.targets.itervalues(), key=lambda m: m.name)
- for target in sorted_targets[:-1]:
- target.write(writer)
- writer.newline()
-
- # BUILD files shouldn't have a trailing new line.
- sorted_targets[-1].write(writer)
-
-
-class BuildGenerator(object):
- def __init__(self, desc):
- self.desc = desc
- self.action_generated_files = set()
-
- for target in self.desc.itervalues():
- if target['type'] == 'action':
- self.action_generated_files.update(target['outputs'])
-
-
- def create_build_for_targets(self, targets):
- """Generate a BUILD for a list of GN targets and aliases."""
- self.build = Build(public=True)
-
- proto_cc_import = 'load("//tools/build_defs/proto/cpp:cc_proto_library.bzl", "cc_proto_library")'
- descriptor_set_import = 'load("//tools/build_defs/proto:descriptor_set.bzl", "transitive_descriptor_set")'
- pbzero_cc_import = 'load("//third_party/perfetto/google:build_defs.bzl", "pbzero_cc_proto_library")'
- self.proto_build = Build(public=False,
- header_lines=[
- proto_cc_import,
- descriptor_set_import,
- pbzero_cc_import,
- ])
-
- for target in targets:
- self.create_target(target)
-
- return (self.build, self.proto_build)
-
-
- def resolve_dependencies(self, target_name):
- """Return the set of direct dependent-on targets for a GN target.
-
- Args:
- desc: JSON GN description.
- target_name: Name of target
-
- Returns:
- A set of transitive dependencies in the form of GN targets.
- """
-
- if gn_utils.label_without_toolchain(target_name) in builtin_deps:
- return set()
- target = self.desc[target_name]
- resolved_deps = set()
- for dep in target.get('deps', []):
- resolved_deps.add(dep)
- return resolved_deps
-
-
- def apply_module_sources_to_target(self, target, module_desc):
- """
- Args:
- target: Module to which dependencies should be added.
- module_desc: JSON GN description of the module.
- visibility: Whether the module is visible with respect to the target.
- """
- for src in module_desc.get('sources', []):
- label = Label(gn_utils.label_to_path(src))
- if target.type == 'cc_library' and is_public_header(src):
- target.hdrs.add(label)
- else:
- target.srcs.add(label)
-
- if '//include/perfetto/base/build_config.h' in module_desc.get(
- 'sources', []):
- label = Label(os.path.join(buildflags_dir, 'perfetto_build_flags.h'))
- if target.type == 'cc_library':
- target.hdrs.add(label)
- elif target.type == 'cc_binary':
- target.srcs.add(label)
-
-
- def apply_module_dependency(self, target, dep_name):
- """
- Args:
- build: BUILD instance which is being generated.
- proto_build: BUILD instance which is being generated to hold protos.
- desc: JSON GN description.
- target: Module to which dependencies should be added.
- dep_name: GN target of the dependency.
- """
- # If the dependency refers to a library which we can replace with an internal
- # equivalent, stop recursing and patch the dependency in.
- dep_name_no_toolchain = gn_utils.label_without_toolchain(dep_name)
- if dep_name_no_toolchain in builtin_deps:
- builtin_deps[dep_name_no_toolchain](target)
- return
-
- dep_desc = self.desc[dep_name]
- if dep_desc['type'] == 'source_set':
- for inner_name in self.resolve_dependencies(dep_name):
- self.apply_module_dependency(target, inner_name)
-
- # Any source set which has a source generated by an action doesn't need
- # to be depended on as we will depend on the action directly.
- sources = dep_desc.get('sources', [])
- if any(src in self.action_generated_files for src in sources):
- return
-
- self.apply_module_sources_to_target(target, dep_desc)
- elif dep_desc['type'] == 'action':
- args = dep_desc['args']
- if "gen_merged_sql_metrics" in dep_name:
- dep_target = self.create_merged_sql_metrics_target(dep_name)
- target.deps.add(Label("//third_party/perfetto:" + dep_target.name))
-
- if target.type == 'cc_library' or target.type == 'cc_binary':
- target.srcs.update(dep_target.outs)
- elif '/protoc' in args[0]:
- result = self.create_proto_target(dep_name);
- if result is None:
- return
- (proto_target, cc_target) = result
- if target.type == 'proto_library':
- dep_target_name = proto_target.name
- else:
- dep_target_name = cc_target.name
- target.deps.add(
- Label("//third_party/perfetto/protos:" + dep_target_name))
- else:
- raise Error('Unsupported action in target %s: %s' % (dep_target_name,
- args))
- elif dep_desc['type'] == 'static_library':
- dep_target = self.create_target(dep_name)
- target.deps.add(Label("//third_party/perfetto:" + dep_target.name))
- elif dep_desc['type'] == 'group':
- for inner_name in self.resolve_dependencies(dep_name):
- self.apply_module_dependency(target, inner_name)
- elif dep_desc['type'] == 'executable':
- # Just create the dep target but don't add it as a dep because it's an
- # executable.
- self.create_target(dep_name)
- else:
- raise Error('Unknown target name %s with type: %s' %
- (dep_name, dep_desc['type']))
-
- def create_merged_sql_metrics_target(self, gn_target_name):
- target_desc = self.desc[gn_target_name]
- gn_target_name_no_toolchain = gn_utils.label_without_toolchain(
- gn_target_name)
- target = Target(
- 'genrule',
- 'gen_merged_sql_metrics',
- gn_name=gn_target_name_no_toolchain,
- )
- target.outs.update(
- Label(src[src.index('gen/') + len('gen/'):])
- for src in target_desc.get('outputs', [])
- )
- target.cmd = '$(location gen_merged_sql_metrics_py) --cpp_out=$@ $(SRCS)'
- target.tools.update([
- 'gen_merged_sql_metrics_py',
- ])
- target.srcs.update(
- Label(gn_utils.label_to_path(src))
- for src in target_desc.get('inputs', [])
- if src not in self.action_generated_files
- )
- self.build.add_target(target)
- return target
-
- def create_proto_target(self, gn_target_name):
- target_desc = self.desc[gn_target_name]
- args = target_desc['args']
-
- gn_target_name_no_toolchain = gn_utils.label_without_toolchain(
- gn_target_name)
- stripped_path = gn_target_name_no_toolchain.replace("protos/perfetto/", "")
-
- is_descriptor = any('descriptor_set_out' in arg for arg in args)
- if is_descriptor:
- return None
-
- is_pbzero = any("pbzero" in arg for arg in args)
- is_proto_lite = not is_pbzero and not is_descriptor
-
- pretty_target_name = gn_utils.label_to_target_name_with_path(stripped_path)
- pretty_target_name = pretty_target_name.replace("_lite_gen", "")
- pretty_target_name = pretty_target_name.replace("_zero_gen", "_zero")
- proto_target_name = pretty_target_name
-
- proto_target = Target(
- 'proto_library',
- proto_target_name,
- gn_name=gn_target_name_no_toolchain
- )
- proto_target.cc_proto_fields = is_proto_lite
- proto_target.srcs.update([
- Label(gn_utils.label_to_path(src).replace('protos/', ''))
- for src in target_desc.get('sources', [])
- ])
- if is_proto_lite:
- proto_target.visibility.add("//visibility:public")
- self.proto_build.add_target(proto_target)
-
- for dep_name in self.resolve_dependencies(gn_target_name):
- self.apply_module_dependency(proto_target, dep_name)
-
- if is_pbzero:
- # Remove all the protozero srcs from the proto_library.
- proto_target.srcs.difference_update(
- [src for src in proto_target.srcs if not src.label.endswith('.proto')])
-
- # Remove all the non-proto deps from the proto_library and add to the cc
- # library.
- cc_deps = [
- dep for dep in proto_target.deps
- if not dep.label.startswith('//third_party/perfetto/protos')
- ]
- proto_target.deps.difference_update(cc_deps)
-
- cc_target_name = proto_target.name + "_cc_proto"
- cc_target = Target('pbzero_cc_proto_library', cc_target_name,
- gn_name=gn_target_name_no_toolchain)
-
- cc_target.deps.add(Label('//third_party/perfetto:libprotozero'))
- cc_target.deps.update(cc_deps)
-
- # Add the proto_library to the cc_target.
- cc_target.src_proto_library = \
- "//third_party/perfetto/protos:" + proto_target.name
-
- self.proto_build.add_target(cc_target)
- else:
- cc_target_name = proto_target.name + "_cc_proto"
- cc_target = Target('cc_proto_library',
- cc_target_name, gn_name=gn_target_name_no_toolchain)
- cc_target.visibility.add("//visibility:public")
- cc_target.deps.add(
- Label("//third_party/perfetto/protos:" + proto_target.name))
- self.proto_build.add_target(cc_target)
-
- java_target_name = proto_target.name + "_java_proto"
- java_target = Target('java_proto_library',
- java_target_name,
- gn_name=gn_target_name_no_toolchain)
- java_target.visibility.add("//visibility:public")
- java_target.deps.add(
- Label("//third_party/perfetto/protos:" + proto_target.name))
- self.proto_build.add_target(java_target)
-
- return (proto_target, cc_target)
-
-
- def create_target(self, gn_target_name):
- """Generate module(s) for a given GN target.
-
- Given a GN target name, generate one or more corresponding modules into a
- build file.
-
- Args:
- build: Build instance which is being generated.
- desc: JSON GN description.
- gn_target_name: GN target name for module generation.
- """
-
- target_desc = self.desc[gn_target_name]
- if target_desc['type'] == 'action':
- args = target_desc['args']
- if '/protoc' in args[0]:
- return self.create_proto_target(gn_target_name)
- else:
- raise Error('Unsupported action in target %s: %s' % (gn_target_name,
- args))
- elif target_desc['type'] == 'executable':
- target_type = 'cc_binary'
- elif target_desc['type'] == 'static_library':
- target_type = 'cc_library'
- elif target_desc['type'] == 'source_set':
- target_type = 'filegroup'
- else:
- raise Error('Unknown target type: %s' % target_desc['type'])
-
- label_no_toolchain = gn_utils.label_without_toolchain(gn_target_name)
- target_name_path = gn_utils.label_to_target_name_with_path(label_no_toolchain)
- if label_no_toolchain in default_targets:
- target_name = label_no_toolchain.split(':')[-1]
- else:
- target_name = target_name_path
- target = Target(target_type, target_name, gn_name=label_no_toolchain)
- target.srcs.update(
- Label(gn_utils.label_to_path(src))
- for src in target_desc.get('sources', [])
- if src not in self.action_generated_files
- )
-
- for dep_name in self.resolve_dependencies(gn_target_name):
- self.apply_module_dependency(target, dep_name)
+'''
+ res += public_str
+ res += '# Content from BUILD.extras\n\n'
+ res += extras
+ return res
- self.build.add_target(target)
- return target
def main():
parser = argparse.ArgumentParser(
description='Generate BUILD from a GN description.')
parser.add_argument(
- '--check-only', help='Don\'t keep the generated files',
- action='store_true')
+ '--check-only',
+ help='Don\'t keep the generated files',
+ action='store_true')
parser.add_argument(
'--desc',
- help='GN description (e.g., gn desc out --format=json --all-toolchains "//*"'
- )
+ help='GN description ' +
+ '(e.g., gn desc out --format=json --all-toolchains "//*"')
parser.add_argument(
'--repo-root',
help='Standalone Perfetto repository to generate a GN description',
@@ -658,24 +414,14 @@
out_files = []
- build_generator = BuildGenerator(desc)
- build, proto_build = build_generator.create_build_for_targets(
- args.targets or default_targets)
-
# Generate the main BUILD file.
- out_files.append(args.output + '.swp')
- with open(out_files[-1], 'w') as f:
- writer = Writer(f)
- build.write(writer)
- writer.newline()
- with open(args.extras, 'r') as r:
- for line in r:
- writer.line(line.rstrip("\n\r"))
+ with open(args.extras, 'r') as extra_f:
+ extras = extra_f.read()
- # Generate the protos/BUILD file.
- out_files.append(args.output_proto + '.swp')
- with open(out_files[-1], 'w') as f:
- proto_build.write(Writer(f))
+ contents = generate_build(desc, args.targets or default_targets, extras)
+ out_files.append(args.output + '.swp')
+ with open(out_files[-1], 'w') as out_f:
+ out_f.write(contents)
# Generate the build flags file.
out_files.append(os.path.join(buildflags_dir, 'perfetto_build_flags.h.swp'))
diff --git a/tools/gen_merged_sql_metrics.py b/tools/gen_merged_sql_metrics.py
index cb36db5..319d0d3 100755
--- a/tools/gen_merged_sql_metrics.py
+++ b/tools/gen_merged_sql_metrics.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python
# Copyright (C) 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -104,8 +104,7 @@
for path in sql_outputs.keys():
name = os.path.basename(path)
variable = filename_to_variable(os.path.splitext(name)[0])
- path_escaped = path.encode('string_escape')
- output.write('\n {{"{}", {}}},\n'.format(path_escaped, variable))
+ output.write('\n {{"{}", {}}},\n'.format(path, variable))
output.write("};\n")
output.write(NAMESPACE_END)
diff --git a/tools/gn_utils.py b/tools/gn_utils.py
index 30c646b..1bc7afc 100644
--- a/tools/gn_utils.py
+++ b/tools/gn_utils.py
@@ -27,6 +27,7 @@
BUILDFLAGS_TARGET = '//gn:gen_buildflags'
+LINKER_UNIT_TYPES = ('executable', 'shared_library', 'static_library')
def _check_command_output(cmd, cwd):
@@ -183,4 +184,182 @@
os.unlink(tmp_file)
else:
os.rename(tmp_file, target_file)
- return res
\ No newline at end of file
+ return res
+
+
+class GnParser(object):
+ """A parser with some cleverness for GN json desc files
+
+ The main goals of this parser are:
+ 1) Deal with the fact that other build systems don't have an equivalent
+ notion to GN's source_set. Conversely to Bazel's and Soong's filegroups,
+ GN source_sets expect that dependencies, cflags and other source_set
+ properties propagate up to the linker unit (static_library, executable or
+ shared_library). This parser simulates the same behavior: when a
+ source_set is encountered, some of its variables (cflags and such) are
+ copied up to the dependent targets. This is to allow gen_xxx to create
+ one filegroup for each source_set and then squash all the other flags
+ onto the linker unit.
+ 2) Detect and special-case protobuf targets, figuring out the protoc-plugin
+ being used.
+ """
+ class Target(object):
+ """Reperesents A GN target.
+
+ Maked properties are propagated up the dependency chain when a
+ source_set dependency is encountered.
+ """
+ def __init__(self, name, type):
+ self.name = name # e.g. //src/ipc:ipc
+
+ VALID_TYPES = ('static_library', 'shared_library', 'executable',
+ 'group', 'action', 'source_set', 'proto_library')
+ assert(type in VALID_TYPES)
+ self.type = type
+
+ # Only set when type == proto_library.
+ # This is typically: 'proto', 'protozero', 'ipc'.
+ self.proto_plugin = None
+
+ self.sources = set()
+
+ # These are valid only for type == 'action'
+ self.inputs = set()
+ self.outputs = set()
+ self.script = None
+ self.args = []
+
+ # These variables are propagated up when encountering a dependency
+ # on a source_set target.
+ self.cflags = set()
+ self.defines = set()
+ self.deps = set()
+ self.include_dirs = set()
+ self.ldflags = set()
+ self.source_set_deps = set() # Transitive set of source_set deps.
+ self.proto_deps = set() # Transitive set of protobuf deps.
+
+ # Deps on //gn:xxx have this flag set to True. These dependencies
+ # are special because they pull third_party code from buildtools/.
+ # We don't want to keep recursing into //buildtools in generators,
+ # this flag is used to stop the recursion and create an empty
+ # placeholder target once we hit //gn:protoc or similar.
+ self.is_third_party_dep_ = False
+
+ def __repr__(self):
+ return json.dumps({k:(list(v) if isinstance(v, set) else v)
+ for (k,v) in self.__dict__.iteritems()}, indent=4)
+
+ def update(self, other):
+ for key in ('cflags', 'defines', 'deps', 'include_dirs', 'ldflags',
+ 'source_set_deps', 'proto_deps'):
+ self.__dict__[key].update(other.__dict__.get(key, []))
+
+
+ def __init__(self, gn_desc):
+ self.gn_desc_ = gn_desc
+ self.all_targets = {}
+ self.linker_units = {} # Executables, shared or static libraries.
+ self.source_sets = {}
+ self.actions = {}
+ self.proto_libs = {}
+
+
+ def get_target(self, gn_target_name):
+ """Returns a Target object from the fully qualified GN target name.
+
+ It bubbles up variables from source_set dependencies as described in the
+ class-level comments.
+ """
+ target = self.all_targets.get(gn_target_name)
+ if target is not None:
+ return target # Taraget already processed.
+
+ desc = self.gn_desc_[gn_target_name]
+ target = GnParser.Target(gn_target_name, desc['type'])
+ self.all_targets[gn_target_name] = target
+
+ # We should never have GN targets directly depend on buidtools. They
+ # should hop via //gn:xxx, so we can give generators an opportunity to
+ # override them.
+ assert(not gn_target_name.startswith('//buildtools'))
+
+ # Don't descend further into third_party targets. Genrators are supposed
+ # to either ignore them or route to other externally-provided targets.
+ if gn_target_name.startswith('//gn'):
+ target.is_third_party_dep_ = True
+ return target
+
+ proto_target_type = self.get_proto_target_type_(target)
+ if proto_target_type is not None:
+ self.proto_libs[target.name] = target
+ target.type = 'proto_library'
+ target.proto_plugin = proto_target_type
+ proto_desc = self.gn_desc_[target.name + '_gen']
+ target.sources.update(proto_desc.get('sources', []))
+ assert(all(x.endswith('.proto') for x in target.sources))
+ elif target.type == 'source_set':
+ self.source_sets[gn_target_name] = target
+ target.sources.update(desc.get('sources', []))
+ elif target.type in LINKER_UNIT_TYPES:
+ self.linker_units[gn_target_name] = target
+ target.sources.update(desc.get('sources', []))
+ elif target.type == 'action':
+ self.actions[gn_target_name] = target
+ target.inputs.update(desc['inputs'])
+ outs = [re.sub('^//out/[^/]+/gen/', '', x) for x in desc['outputs']]
+ target.outputs.update(outs)
+ target.script = desc['script']
+ # Args are typically relative to the root build dir (../../xxx)
+ # because root build dir is typically out/xxx/).
+ target.args = [re.sub('^../../', '//', x) for x in desc['args']]
+
+ target.cflags.update(desc.get('cflags', []) + desc.get('cflags_cc', []))
+ target.ldflags.update(desc.get('ldflags', []))
+ target.defines.update(desc.get('defines', []))
+ target.include_dirs.update(desc.get('include_dirs', []))
+
+ # Recurse in dependencies.
+ for dep_name in desc.get('deps', []):
+ dep = self.get_target(dep_name)
+ if dep.is_third_party_dep_:
+ target.deps.add(dep_name)
+ elif dep.type == 'proto_library':
+ target.proto_deps.add(dep_name)
+ target.proto_deps.update(dep.proto_deps) # Bubble up deps.
+ elif dep.type == 'source_set':
+ target.source_set_deps.add(dep_name)
+ target.update(dep) # Bubble up source set's cflags/ldflags etc.
+ elif dep.type == 'group':
+ target.update(dep) # Bubble up groups's cflags/ldflags etc.
+ elif dep.type == 'action':
+ target.deps.add(dep_name)
+ elif dep.type in LINKER_UNIT_TYPES:
+ target.deps.add(dep_name)
+
+ return target
+
+ def get_proto_target_type_(self, target):
+ """ Checks if the target is a proto library and return the plugin.
+
+ Returns:
+ None: if the target is not a proto library.
+ The plugin name (or 'proto' in the default case) for proto library
+ targets.
+ """
+ gen_desc = self.gn_desc_.get(target.name + '_gen')
+ if gen_desc is None or gen_desc['type'] != 'action':
+ return None
+ args = gen_desc.get('args', [])
+ if '/protoc' not in args[0]:
+ return None
+ for arg in args:
+ if arg.startswith('--plugin='):
+ # |arg| at this point looks like:
+ # --plugin=protoc-gen-plugin=gcc_like_host/protozero_plugin
+ # or
+ # --plugin=protoc-gen-plugin=protozero_plugin
+ return arg.split('=')[-1].split('/')[-1].replace('_plugin', '')
+ return 'proto'
+
+