// These targets are appended to the autogenerated Android.bp by tools/gen_android_bp.

java_library_host {
    name: "perfetto_config-full",
    proto: {
        type: "full",
    },
    srcs: [
        "protos/perfetto/config/perfetto_config.proto",
    ],
}

java_library {
    name: "perfetto_config-lite",
    proto: {
        type: "lite",
    },
    srcs: [
        "protos/perfetto/config/perfetto_config.proto",
    ],
}

java_library_host {
    name: "trace_summary-full",
    proto: {
        type: "full",
        canonical_path_from_root: false,
    },
    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",
    },
    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",
    },
    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/trace_processor/*.py",
    ],
    path: "python",
}

filegroup {
    name: "perfetto-trace-processor-python-data",
    srcs: ["python/perfetto/trace_processor/*.descriptor*"],
    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.InputMethodClientsTraceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodServiceTraceProto,perfetto.protos.ViewCapture,perfetto.protos.WindowManagerConfig,perfetto.protos.WindowManagerTraceEntry,perfetto.protos.AppWakelocksConfig,perfetto.protos.AppWakelockInfo,perfetto.protos.AppWakelockBundle " +
        "--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,
    },
    srcs: [
        ":libprotobuf-internal-descriptor-proto",
        ":perfetto_javastream_filegroup_proto",
    ],
    static_libs: [
        "libprotobuf-java-lite",
    ],
    sdk_version: "current",
}

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,
    },
    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",
}
