diff options
author | Anton Hansson <hansson@google.com> | 2021-04-12 18:05:56 +0100 |
---|---|---|
committer | Anton Hansson <hansson@google.com> | 2021-04-12 18:38:42 +0100 |
commit | 92b6c725b0022931ea0f3641b60f070ddcfb1413 (patch) | |
tree | 197c03cc78328251005844dd1dbb86df4dd306ea | |
parent | 702aa95096f6864b0016f00b75ec2d97f2267241 (diff) | |
download | base-92b6c725b0022931ea0f3641b60f070ddcfb1413.tar.gz |
Move framework proto build rules to separate file
The proto build rules are quite large and makes the top-level Android.bp
file difficult to navigate. Move them to a separate file.
Bug: 185128417
Test: m
Merged-In: I5719ba0fa8e03dcfca0cc32dc30db3f87ea4e3cd
Change-Id: I5719ba0fa8e03dcfca0cc32dc30db3f87ea4e3cd
-rw-r--r-- | Android.bp | 226 | ||||
-rw-r--r-- | OWNERS | 1 | ||||
-rw-r--r-- | ProtoLibraries.bp | 238 |
3 files changed, 240 insertions, 225 deletions
diff --git a/Android.bp b/Android.bp index 12c2b3a59032..1415b6a78136 100644 --- a/Android.bp +++ b/Android.bp @@ -345,64 +345,6 @@ platform_compat_config { src: ":framework-minus-apex", } -gensrcs { - name: "framework-javastream-protos", - depfile: true, - - tools: [ - "aprotoc", - "protoc-gen-javastream", - "soong_zip", - ], - - cmd: "mkdir -p $(genDir)/$(in) " + - "&& $(location aprotoc) " + - " --plugin=$(location protoc-gen-javastream) " + - " --dependency_out=$(depfile) " + - " --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", - ":libtombstone_proto-src", - "core/proto/**/*.proto", - "libs/incident/**/*.proto", - ], - output_extension: "srcjar", -} - -gensrcs { - name: "framework-cppstream-protos", - depfile: true, - - tools: [ - "aprotoc", - "protoc-gen-cppstream", - ], - - cmd: "mkdir -p $(genDir) " + - "&& $(location aprotoc) " + - " --plugin=$(location protoc-gen-cppstream) " + - " --dependency_out=$(depfile) " + - " --cppstream_out=$(genDir) " + - " -Iexternal/protobuf/src " + - " -I . " + - " $(in)", - - srcs: [ - ":ipconnectivity-proto-src", - ":libstats_atom_enum_protos", - "core/proto/**/*.proto", - "libs/incident/**/*.proto", - ], - - output_extension: "proto.h", -} - filegroup { name: "framework-annotations", srcs: [ @@ -491,173 +433,6 @@ java_library { dxflags: ["--core-library"], } -// ==== java proto host library ============================== -java_library_host { - name: "platformprotos", - srcs: [ - ":ipconnectivity-proto-src", - ":libstats_atom_enum_protos", - ":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", - }, - errorprone: { - javacflags: ["-Xep:MissingOverride:OFF"], // b/72714520 - }, -} - -// ==== 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", - ], - sdk_version: "9", - srcs: [ - ":ipconnectivity-proto-src", - ":libstats_atom_enum_protos", - "core/proto/**/*.proto", - "libs/incident/proto/android/os/**/*.proto", - ], -} - -// ==== 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", - "core/proto/**/*.proto", - "libs/incident/proto/android/os/**/*.proto", - ], - exclude_srcs: [ - "core/proto/android/privacy.proto", - "core/proto/android/section.proto", - ], - sdk_version: "core_current", - // Protos have lots of MissingOverride and similar. - errorprone: { - javacflags: ["-XepDisableAllChecks"], - }, -} - -// ==== 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", - "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, - }, - }, - }, -} - // utility classes statically linked into framework-wifi and dynamically linked // into wifi-service java_library { @@ -719,4 +494,5 @@ filegroup { build = [ "StubLibraries.bp", "ApiDocs.bp", + "ProtoLibraries.bp", ] @@ -30,3 +30,4 @@ per-file Android.bp = file:platform/build/soong:/OWNERS per-file Android.mk = file:platform/build/soong:/OWNERS per-file ApiDocs.bp = file:platform/build/soong:/OWNERS per-file StubLibraries.bp = file:platform/build/soong:/OWNERS +per-file ProtoLibraries.bp = file:platform/build/soong:/OWNERS diff --git a/ProtoLibraries.bp b/ProtoLibraries.bp new file mode 100644 index 000000000000..c127449fce37 --- /dev/null +++ b/ProtoLibraries.bp @@ -0,0 +1,238 @@ +// 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", + depfile: true, + + tools: [ + "aprotoc", + "protoc-gen-javastream", + "soong_zip", + ], + + cmd: "mkdir -p $(genDir)/$(in) " + + "&& $(location aprotoc) " + + " --plugin=$(location protoc-gen-javastream) " + + " --dependency_out=$(depfile) " + + " --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", + ":libtombstone_proto-src", + "core/proto/**/*.proto", + "libs/incident/**/*.proto", + ], + output_extension: "srcjar", +} + +gensrcs { + name: "framework-cppstream-protos", + depfile: true, + + tools: [ + "aprotoc", + "protoc-gen-cppstream", + ], + + cmd: "mkdir -p $(genDir) " + + "&& $(location aprotoc) " + + " --plugin=$(location protoc-gen-cppstream) " + + " --dependency_out=$(depfile) " + + " --cppstream_out=$(genDir) " + + " -Iexternal/protobuf/src " + + " -I . " + + " $(in)", + + srcs: [ + ":ipconnectivity-proto-src", + ":libstats_atom_enum_protos", + "core/proto/**/*.proto", + "libs/incident/**/*.proto", + ], + + output_extension: "proto.h", +} + +// ==== java proto host library ============================== +java_library_host { + name: "platformprotos", + srcs: [ + ":ipconnectivity-proto-src", + ":libstats_atom_enum_protos", + ":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", + }, + errorprone: { + javacflags: ["-Xep:MissingOverride:OFF"], // b/72714520 + }, +} + +// ==== 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", + ], + sdk_version: "9", + srcs: [ + ":ipconnectivity-proto-src", + ":libstats_atom_enum_protos", + "core/proto/**/*.proto", + "libs/incident/proto/android/os/**/*.proto", + ], +} + +// ==== 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", + "core/proto/**/*.proto", + "libs/incident/proto/android/os/**/*.proto", + ], + exclude_srcs: [ + "core/proto/android/privacy.proto", + "core/proto/android/section.proto", + ], + sdk_version: "core_current", + // Protos have lots of MissingOverride and similar. + errorprone: { + javacflags: ["-XepDisableAllChecks"], + }, +} + +// ==== 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", + "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, + }, + }, + }, +} |