| // These targets are appended to the autogenerated Android.bp by tools/gen_android_bp. | |
| java_library_host { | |
| name: "perfetto_config-full", | |
| proto: { | |
| type: "full", | |
| local_include_dirs: ["."], | |
| }, | |
| srcs: [ | |
| "protos/perfetto/config/perfetto_config.proto", | |
| ], | |
| } | |
| java_library { | |
| name: "perfetto_config-lite", | |
| proto: { | |
| type: "lite", | |
| local_include_dirs: ["."], | |
| }, | |
| srcs: [ | |
| "protos/perfetto/config/perfetto_config.proto", | |
| ], | |
| } | |
| java_library_host { | |
| name: "trace_summary-full", | |
| proto: { | |
| type: "full", | |
| canonical_path_from_root: false, | |
| local_include_dirs: ["."], | |
| }, | |
| static_libs: [ | |
| "libprotobuf-java-full", | |
| ], | |
| srcs: [ | |
| ":perfetto_trace_summary_filegroup_proto", | |
| ], | |
| // b/267831518: Pin tradefed and dependencies to Java 11. | |
| java_version: "11", | |
| } | |
| java_library_host { | |
| name: "perfetto_trace-full", | |
| proto: { | |
| type: "full", | |
| local_include_dirs: ["."], | |
| }, | |
| srcs: [ | |
| "protos/perfetto/trace/perfetto_trace.proto", | |
| ], | |
| // b/267831518: Pin tradefed and dependencies to Java 11. | |
| java_version: "11", | |
| } | |
| java_library_host { | |
| name: "perfetto_metrics-full", | |
| proto: { | |
| type: "full", | |
| local_include_dirs: ["."], | |
| }, | |
| srcs: [ | |
| "protos/perfetto/metrics/perfetto_merged_metrics.proto", | |
| ], | |
| // b/267831518: Pin tradefed and dependencies to Java 11. | |
| java_version: "11", | |
| } | |
| // This sample target shows how to use the perfetto client API from within the | |
| // Android tree. | |
| cc_binary { | |
| name: "libperfetto_client_example", | |
| srcs: [ | |
| "test/client_api_example.cc", | |
| ], | |
| static_libs: [ | |
| "libperfetto_client_experimental", | |
| "perfetto_trace_protos", | |
| ], | |
| shared_libs: [ | |
| "libprotobuf-cpp-lite", | |
| "liblog", | |
| ], | |
| cflags: [ | |
| "-DGOOGLE_PROTOBUF_NO_RTTI", | |
| "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER", | |
| ], | |
| defaults: [ | |
| "perfetto_defaults", | |
| ], | |
| } | |
| cc_library_static { | |
| name: "libstatslog_perfetto", | |
| generated_sources: ["statslog_perfetto.cpp"], | |
| generated_headers: ["statslog_perfetto.h"], | |
| cflags: [ | |
| "-Wall", | |
| "-Werror", | |
| ], | |
| export_generated_headers: ["statslog_perfetto.h"], | |
| shared_libs: [ | |
| "libcutils", | |
| "liblog", | |
| "libstatssocket", | |
| "libutils", | |
| ], | |
| } | |
| genrule { | |
| name: "statslog_perfetto.h", | |
| tools: ["stats-log-api-gen"], | |
| cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_perfetto.h --module perfetto --namespace perfetto,android_internal", | |
| out: [ | |
| "statslog_perfetto.h", | |
| ], | |
| } | |
| genrule { | |
| name: "statslog_perfetto.cpp", | |
| tools: ["stats-log-api-gen"], | |
| cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_perfetto.cpp --module perfetto --namespace perfetto,android_internal --importHeader statslog_perfetto.h", | |
| out: [ | |
| "statslog_perfetto.cpp", | |
| ], | |
| } | |
| package { | |
| default_applicable_licenses: ["external_perfetto_license"], | |
| } | |
| python_library { | |
| name: "perfetto-trace-processor-python", | |
| srcs: [ | |
| ":perfetto-trace-processor-python-srcs", | |
| ":perfetto-trace-uri-resolver-python-srcs", | |
| ], | |
| data: [ | |
| ":perfetto-trace-processor-python-data", | |
| ], | |
| libs: [ | |
| "libprotobuf-python", | |
| ], | |
| host_supported: true, | |
| } | |
| filegroup { | |
| name: "perfetto-trace-uri-resolver-python-srcs", | |
| srcs: ["python/perfetto/trace_uri_resolver/*.py"], | |
| path: "python", | |
| } | |
| filegroup { | |
| name: "perfetto-trace-processor-python-srcs", | |
| srcs: [ | |
| "python/perfetto/common/*.py", | |
| "python/perfetto/prebuilts/*.py", | |
| "python/perfetto/prebuilts/manifests/*.py", | |
| "python/perfetto/trace_processor/*.py", | |
| ], | |
| path: "python", | |
| } | |
| filegroup { | |
| name: "perfetto-trace-processor-python-data", | |
| srcs: ["python/perfetto/trace_processor/*.descriptor*"], | |
| path: "python", | |
| } | |
| python_library { | |
| name: "perfetto-trace-proto-python", | |
| srcs: [ | |
| ":perfetto-trace-proto-python-srcs", | |
| ], | |
| libs: [ | |
| "libprotobuf-python", | |
| ], | |
| host_supported: true, | |
| } | |
| filegroup { | |
| name: "perfetto-trace-proto-python-srcs", | |
| srcs: [ | |
| "python/perfetto/protos/perfetto/trace/*.py", | |
| ], | |
| path: "python", | |
| } | |
| // Added automatically by a large-scale-change that took the approach of | |
| // 'apply every license found to every target'. While this makes sure we respect | |
| // every license restriction, it may not be entirely correct. | |
| // | |
| // e.g. GPL in an MIT project might only apply to the contrib/ directory. | |
| // | |
| // Please consider splitting the single license below into multiple licenses, | |
| // taking care not to lose any license_kind information, and overriding the | |
| // default license using the 'licenses: [...]' property on targets as needed. | |
| // | |
| // For unused files, consider creating a 'fileGroup' with "//visibility:private" | |
| // to attach the license to, and including a comment whether the files may be | |
| // used in the current project. | |
| // See: http://go/android-license-faq | |
| license { | |
| name: "external_perfetto_license", | |
| visibility: [":__subpackages__"], | |
| license_kinds: [ | |
| "SPDX-license-identifier-Apache-2.0", | |
| "SPDX-license-identifier-BSD", | |
| "SPDX-license-identifier-CC-BY", | |
| ], | |
| license_text: [ | |
| "LICENSE", | |
| ], | |
| } | |
| gensrcs { | |
| name: "perfetto_trace_javastream_protos", | |
| srcs: [ | |
| ":perfetto_javastream_filegroup_proto", | |
| ], | |
| tools: [ | |
| "aprotoc", | |
| "protoc-gen-javastream", | |
| "soong_zip", | |
| ], | |
| cmd: "mkdir -p $(genDir)/$(in) " + | |
| "&& $(location aprotoc) " + | |
| "--plugin=$(location protoc-gen-javastream) " + | |
| "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields,perfetto.protos.WinscopeExtensionsImpl,perfetto.protos.ViewCapture,perfetto.protos.AppWakelocksConfig,perfetto.protos.AppWakelockInfo,perfetto.protos.AppWakelockBundle,perfetto.protos.DisplayVideoConfig,perfetto.protos.AndroidProcessStateConfig," + | |
| // IME protos | |
| "perfetto.protos.ClientSideProto,perfetto.protos.DisplayCutoutProto,perfetto.protos.EditorInfoProto,perfetto.protos.ImeFocusControllerProto,perfetto.protos.InputConnectionCallProto,perfetto.protos.InputConnectionProto,perfetto.protos.InputMethodClientsTraceProto,perfetto.protos.InputMethodClientsTraceFileProto,perfetto.protos.InputMethodConfig,perfetto.protos.InputMethodManagerProto,perfetto.protos.InputMethodManagerServiceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodManagerServiceTraceFileProto,perfetto.protos.InputMethodServiceProto,perfetto.protos.InputMethodServiceTraceProto,perfetto.protos.InputMethodServiceTraceFileProto,perfetto.protos.InsetsAnimationControlImplProto,perfetto.protos.InsetsControllerProto,perfetto.protos.InsetsProto,perfetto.protos.InsetsFrameProviderProto,perfetto.protos.InsetsSizeOverrideProto,perfetto.protos.InsetsSourceConsumerProto,perfetto.protos.InsetsSourceControlProto,perfetto.protos.InsetsSourceProto,perfetto.protos.InsetsStateProto,perfetto.protos.RectProto,perfetto.protos.SoftInputWindowProto,perfetto.protos.SurfaceControlProto,perfetto.protos.ViewRootImplProto,perfetto.protos.WindowLayoutParamsProto," + | |
| // WindowManager protos | |
| "perfetto.protos.ActivityInfoProto,perfetto.protos.ActivityRecordProto,perfetto.protos.AlphaAnimationSpecProto,perfetto.protos.AnimationAdapterProto,perfetto.protos.AnimationSpecProto,perfetto.protos.AppTransitionProto,perfetto.protos.BackNavigationProto,perfetto.protos.ConfigurationContainerProto,perfetto.protos.ConfigurationProto,perfetto.protos.DeviceConfigurationProto,perfetto.protos.DisplayAreaProto,perfetto.protos.DisplayContentProto,perfetto.protos.DisplayInfoProto,perfetto.protos.DisplayRotationProto,perfetto.protos.GlobalConfigurationProto,perfetto.protos.IdentifierProto,perfetto.protos.ImeInsetsSourceProviderProto,perfetto.protos.InsetsSourceProviderProto,perfetto.protos.KeyguardControllerProto,perfetto.protos.KeyguardPerDisplayProto,perfetto.protos.KeyguardServiceDelegateProto,perfetto.protos.LocalAnimationAdapterProto,perfetto.protos.LocaleProto,perfetto.protos.MoveAnimationSpecProto,perfetto.protos.PointProto,perfetto.protos.RemoteAnimationTargetProto,perfetto.protos.RemoteInsetsControlTargetProto,perfetto.protos.ResourcesConfigurationProto,perfetto.protos.RootWindowContainerProto,perfetto.protos.SurfaceAnimatorProto,perfetto.protos.TaskFragmentProto,perfetto.protos.TaskProto,perfetto.protos.WindowAnimationSpecProto,perfetto.protos.WindowConfigurationProto,perfetto.protos.WindowContainerChildProto,perfetto.protos.WindowContainerProto,perfetto.protos.WindowFramesProto,perfetto.protos.WindowManagerConfig,perfetto.protos.WindowManagerServicePatchProto,perfetto.protos.WindowManagerPolicyProto,perfetto.protos.WindowManagerServiceDumpProto,perfetto.protos.WindowManagerTraceEntry,perfetto.protos.WindowManagerTraceFileProto,perfetto.protos.WindowOrientationListenerProto,perfetto.protos.WindowStateAnimatorProto,perfetto.protos.WindowStateProto,perfetto.protos.WindowSurfaceControllerProto,perfetto.protos.WindowTokenProto,perfetto.protos.InsetsStateControllerProto,perfetto.protos.DisplayPolicyProto,perfetto.protos.DecorInsetsProto,perfetto.protos.DecorInsetsInfoProto,perfetto.protos.AppearanceRegionProto,perfetto.protos.SystemBarVisibilityOverrideProto,perfetto.protos.InsetsPolicyProto,perfetto.protos.InsetsControlTargetProto,perfetto.protos.DisplayFramesProto " + | |
| "--javastream_out=$(genDir)/$(in) " + | |
| "-Iexternal/protobuf/src " + | |
| "-Iexternal/perfetto " + | |
| "-I . $(in) " + | |
| "&& $(location soong_zip) " + | |
| "-jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)", | |
| data: [ | |
| ":libprotobuf-internal-protos", | |
| ], | |
| output_extension: "srcjar", | |
| } | |
| java_library { | |
| name: "perfetto_winscope-lite", | |
| proto: { | |
| type: "lite", | |
| include_dirs: ["external/protobuf/src"], | |
| canonical_path_from_root: false, | |
| local_include_dirs: ["."], | |
| }, | |
| srcs: [ | |
| ":libprotobuf-internal-descriptor-proto", | |
| ":perfetto_javastream_filegroup_proto", | |
| ], | |
| static_libs: [ | |
| "libprotobuf-java-lite", | |
| ], | |
| sdk_version: "current", | |
| host_supported: true, | |
| } | |
| java_library { | |
| name: "perfetto_config_java_protos_system_server_current", | |
| srcs: [ | |
| ":perfetto_config_filegroup_proto", | |
| ], | |
| static_libs: [ | |
| "libprotobuf-java-lite", | |
| ], | |
| proto: { | |
| type: "lite", | |
| canonical_path_from_root: false, | |
| local_include_dirs: ["."], | |
| }, | |
| sdk_version: "system_server_current", | |
| min_sdk_version: "35", | |
| apex_available: [ | |
| "com.android.profiling", | |
| ], | |
| } | |
| prebuilt_etc { | |
| name: "perfetto_persistent_cfg.pbtxt", | |
| filename: "persistent_cfg.pbtxt", | |
| sub_dir: "perfetto", | |
| src: "persistent_cfg.pbtxt", | |
| } | |
| phony { | |
| name: "perfetto-extras", | |
| required: [ | |
| "libperfetto_android_internal", | |
| "traced_perf", | |
| "trigger_perfetto", | |
| ], | |
| } | |
| filegroup { | |
| name: "heap_profile", | |
| srcs: [ | |
| "tools/heap_profile", | |
| ], | |
| } | |
| aconfig_declarations { | |
| name: "perfetto_flags-aconfig", | |
| package: "perfetto.flags", | |
| container: "system", | |
| srcs: ["perfetto_flags.aconfig"], | |
| } | |
| cc_aconfig_library { | |
| name: "perfetto_flags_c_lib", | |
| aconfig_declarations: "perfetto_flags-aconfig", | |
| // All flags read from C++ are fixed read-only, and this drops the runtime | |
| // deps (libbase, aconfig storage) that have no sdk variant. | |
| mode: "force-read-only", | |
| vendor_available: true, | |
| product_available: true, | |
| apex_available: [ | |
| "//apex_available:anyapex", | |
| "//apex_available:platform", | |
| "com.android.profiling", | |
| ], | |
| sdk_version: "current", | |
| // The sdk variant would otherwise use the NDK "system" STL (no libc++). | |
| stl: "libc++_static", | |
| min_sdk_version: "30", | |
| } | |
| // This target groups the dependencies on the android-tree rules that generate | |
| // /etc/tracing_descriptors.gz and /vendor/etc/tracing_descriptors.gz | |
| // Those targets are defined in /system/core and TODO(primiano): /vendor. | |
| phony { | |
| name: "etc_system_tracing_proto_descriptors", | |
| target: { | |
| android: { | |
| required: [ | |
| "system_tracing_protos_descriptor", | |
| ], | |
| }, | |
| }, | |
| } | |
| filegroup { | |
| name: "ravenwood-perfetto-policies", | |
| srcs: [ | |
| "src/android_sdk/jni/ravenwood-perfetto-policies.txt", | |
| ], | |
| } | |
| // Host-only stubs for the small set of Android classes the perfetto Java | |
| // SDK references that are missing from Soong's host module_current | |
| // classpath (dalvik.annotation.optimization.{Critical,Fast}Native and | |
| // android.system.SystemCleaner; plus android.util.{ArraySet,Log} and | |
| // android.os.Process). Linked into the host variant of | |
| // perfetto_trace_lib_java_defaults as a libs: dep so the stubs are visible | |
| // to javac but not bundled into the jar; the Android variant continues | |
| // to use the real platform classes from module_current. | |
| java_library_host { | |
| name: "perfetto_trace_lib_host_stubs", | |
| srcs: [ | |
| "src/android_sdk/java/host_stubs/**/*.java", | |
| ], | |
| // androidx/** is a test-only shim (AndroidJUnit4) for the standalone host | |
| // JUnit runner (tools/run_android_sdk_host_test), which compiles host_stubs | |
| // with JUnit on the classpath. It is not one of the SDK host shims this | |
| // library is meant to provide (see the comment above) and pulling it in here | |
| // drags in org.junit, which this library does not depend on -- breaking the | |
| // Soong host build. The Soong host/ravenwood build uses the real | |
| // androidx.test, so exclude it. | |
| exclude_srcs: [ | |
| "src/android_sdk/java/host_stubs/androidx/**/*.java", | |
| ], | |
| } | |
| filegroup { | |
| name: "wattson_power_curves", | |
| srcs: [ | |
| "src/trace_processor/plugins/wattson/data/**/*.csv", | |
| ], | |
| path: "src/trace_processor/plugins/wattson/data", | |
| visibility: ["//visibility:public"], | |
| } | |
| filegroup { | |
| name: "perfetto_cpp_blob_emitter", | |
| srcs: [ | |
| "python/tools/cpp_blob_emitter.py", | |
| ], | |
| } | |
| filegroup { | |
| name: "perfetto_java_blob_emitter", | |
| srcs: [ | |
| "python/tools/java_blob_emitter.py", | |
| ], | |
| } | |
| filegroup { | |
| name: "perfetto_sdk_libcore_jarjar_rules", | |
| srcs: ["src/android_sdk/java/main/perfetto-sdk-libcore-jarjar-rules.txt"], | |
| visibility: [ | |
| "//libcore:__subpackages__", | |
| ], | |
| } |