Skip to content
Snippets Groups Projects
ProtoLibraries.bp 7.55 KiB
Newer Older
// Copyright (C) 2021 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.

gensrcs {
    name: "framework-javastream-protos",

    tools: [
        "aprotoc",
        "protoc-gen-javastream",
        "soong_zip",
    ],

    cmd: "mkdir -p $(genDir)/$(in) " +
        "&& $(location aprotoc) " +
        "  --plugin=$(location protoc-gen-javastream) " +
        "  --javastream_out=$(genDir)/$(in) " +
        "  -Iexternal/protobuf/src " +
        "  -I . " +
        "  $(in) " +
        "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",

    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_atom_enum_protos",
Dichen Zhang's avatar
Dichen Zhang committed
        ":libstats_atom_message_protos",
        ":libtombstone_proto-src",
        "core/proto/**/*.proto",
        "libs/incident/**/*.proto",
    ],

    data: [
        ":libprotobuf-internal-protos",
    ],

    output_extension: "srcjar",
}

gensrcs {
    name: "framework-cppstream-protos",

    tools: [
        "aprotoc",
        "protoc-gen-cppstream",
    ],

    cmd: "mkdir -p $(genDir) " +
        "&& $(location aprotoc) " +
        "  --plugin=$(location protoc-gen-cppstream) " +
        "  --cppstream_out=$(genDir) " +
        "  -Iexternal/protobuf/src " +
        "  -I . " +
        "  $(in)",

    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_atom_enum_protos",
Dichen Zhang's avatar
Dichen Zhang committed
        ":libstats_atom_message_protos",
        "core/proto/**/*.proto",
        "libs/incident/**/*.proto",
    ],

    data: [
        ":libprotobuf-internal-protos",
    ],

    output_extension: "proto.h",
}

// ====  nfc framework java library  ==============================
gensrcs {
    name: "framework-nfc-javastream-protos",

    tools: [
        "aprotoc",
        "protoc-gen-javastream",
        "soong_zip",
    ],

    cmd: "mkdir -p $(genDir)/$(in) " +
        "&& $(location aprotoc) " +
        "  --plugin=$(location protoc-gen-javastream) " +
        "  --javastream_out=$(genDir)/$(in) " +
        "  -Iexternal/protobuf/src " +
        "  -I . " +
        "  $(in) " +
        "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",

    srcs: [
        "core/proto/android/app/pendingintent.proto",
        "core/proto/android/content/component_name.proto",
        "core/proto/android/content/intent.proto",
        "core/proto/android/nfc/*.proto",
        "core/proto/android/os/patternmatcher.proto",
        "core/proto/android/os/persistablebundle.proto",
        "core/proto/android/privacy.proto",
    ],

    data: [
        ":libprotobuf-internal-protos",
    ],

    output_extension: "srcjar",
}

// ====  java proto host library  ==============================
java_library_host {
    name: "platformprotos",
    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_internal_protos",
        ":statsd_internal_protos",
        "cmds/am/proto/instrumentation_data.proto",
        "cmds/statsd/src/**/*.proto",
        "core/proto/**/*.proto",
        "libs/incident/proto/**/*.proto",
    ],
    proto: {
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
        type: "full",
    },
    // b/267831518: Pin tradefed and dependencies to Java 11.
    java_version: "11",
    // Protos have lots of MissingOverride and similar.
    errorprone: {
        enabled: false,
    },
}

// ====  java proto device library (for test only)  ==============================
java_library {
    name: "platformprotosnano",
    proto: {
        type: "nano",
        output_params: ["store_unknown_fields=true"],
        include_dirs: ["external/protobuf/src"],
    },
    exclude_srcs: [
        "core/proto/android/privacy.proto",
        "core/proto/android/section.proto",
        "core/proto/android/typedef.proto",
    ],
    sdk_version: "9",
    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_atom_enum_protos",
Dichen Zhang's avatar
Dichen Zhang committed
        ":libstats_atom_message_protos",
        "core/proto/**/*.proto",
        "libs/incident/proto/android/os/**/*.proto",
    ],
    // Protos have lots of MissingOverride and similar.
    errorprone: {
        enabled: false,
    },
}

// ====  java proto device library (for test only)  ==============================
java_library {
    name: "platformprotoslite",
    proto: {
        type: "lite",
        include_dirs: ["external/protobuf/src"],
    },

    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_atom_enum_protos",
Dichen Zhang's avatar
Dichen Zhang committed
        ":libstats_atom_message_protos",
        "core/proto/**/*.proto",
        "libs/incident/proto/android/os/**/*.proto",
    ],
    exclude_srcs: [
        "core/proto/android/privacy.proto",
        "core/proto/android/section.proto",
        "core/proto/android/typedef.proto",
    ],
    sdk_version: "core_current",
    // Protos have lots of MissingOverride and similar.
    errorprone: {
        enabled: false,
    },
}

// ====  c++ proto device library  ==============================
cc_defaults {
    name: "libplatformprotos-defaults",

    proto: {
        export_proto_headers: true,
        include_dirs: [
            "external/protobuf/src",
        ],
    },

    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
    ],

    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_atom_enum_protos",
Dichen Zhang's avatar
Dichen Zhang committed
        ":libstats_atom_message_protos",
        "core/proto/**/*.proto",
    ],
}

cc_library {
    name: "libplatformprotos",
    defaults: ["libplatformprotos-defaults"],
    host_supported: true,

    target: {
        host: {
            proto: {
                type: "full",
            },
        },
        android: {
            proto: {
                type: "lite",
            },
            shared_libs: [
                "libprotobuf-cpp-lite",
            ],
            shared: {
                enabled: false,
            },
        },
    },
}

// This library is meant for vendor code that needs to output protobuf. It links
// against the static version of libprotobuf-cpp-lite, for which we can not guarantee
// binary compatibility.
cc_library {
    name: "libplatformprotos-static",
    defaults: ["libplatformprotos-defaults"],
    host_supported: false,

    // This is okay because this library is only built as a static library.  The C++
    // API is not guaranteed. The proto API is guaranteed to be stable via Metrics Council,
    // but is not authorized to be used outside of debugging.
    vendor_available: true,

    target: {
        android: {
            proto: {
                type: "lite",
            },
            static_libs: [
                "libprotobuf-cpp-lite",
            ],
            shared: {
                enabled: false,
            },
        },
    },
}

// This is the full proto version of libplatformprotos. It may only
// be used by test code that is not shipped on the device.
cc_library {
    name: "libplatformprotos-test",
    defaults: ["libplatformprotos-defaults"],
    host_supported: false,

    target: {
        android: {
            proto: {
                type: "full",
            },
            shared: {
                enabled: false,
            },
        },
    },
}