blob: 67acfad3bfdd0f5ab51777a5832c1dd089dae5ec [file] [log] [blame]
Anton Hansson31fb58b2021-04-12 18:03:12 +01001// Copyright (C) 2021 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15gensrcs {
16 name: "framework-javastream-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010017
18 tools: [
19 "aprotoc",
20 "protoc-gen-javastream",
21 "soong_zip",
22 ],
23
Vinh Tran61e69fa2022-06-14 16:45:19 -040024 tool_files: [
25 ":libprotobuf-internal-protos",
26 ],
27
Anton Hansson31fb58b2021-04-12 18:03:12 +010028 cmd: "mkdir -p $(genDir)/$(in) " +
29 "&& $(location aprotoc) " +
30 " --plugin=$(location protoc-gen-javastream) " +
Anton Hansson31fb58b2021-04-12 18:03:12 +010031 " --javastream_out=$(genDir)/$(in) " +
32 " -Iexternal/protobuf/src " +
33 " -I . " +
34 " $(in) " +
35 "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",
36
37 srcs: [
Aaron Huangd87c9cb2022-02-14 21:26:44 +080038 ":framework-connectivity-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010039 ":ipconnectivity-proto-src",
40 ":libstats_atom_enum_protos",
Dichen Zhangc2ae00b2021-04-13 15:24:22 -070041 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010042 ":libtombstone_proto-src",
43 "core/proto/**/*.proto",
44 "libs/incident/**/*.proto",
Tyler Dewey4c5d89e2022-03-01 16:12:56 +000045 ":service-permission-streaming-proto-sources",
Anton Hansson31fb58b2021-04-12 18:03:12 +010046 ],
47 output_extension: "srcjar",
48}
49
50gensrcs {
51 name: "framework-cppstream-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010052
53 tools: [
54 "aprotoc",
55 "protoc-gen-cppstream",
56 ],
57
Vinh Tran61e69fa2022-06-14 16:45:19 -040058 tool_files: [
59 ":libprotobuf-internal-protos",
60 ],
61
Anton Hansson31fb58b2021-04-12 18:03:12 +010062 cmd: "mkdir -p $(genDir) " +
63 "&& $(location aprotoc) " +
64 " --plugin=$(location protoc-gen-cppstream) " +
Anton Hansson31fb58b2021-04-12 18:03:12 +010065 " --cppstream_out=$(genDir) " +
66 " -Iexternal/protobuf/src " +
67 " -I . " +
68 " $(in)",
69
70 srcs: [
Aaron Huangd87c9cb2022-02-14 21:26:44 +080071 ":framework-connectivity-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010072 ":ipconnectivity-proto-src",
73 ":libstats_atom_enum_protos",
Dichen Zhangc2ae00b2021-04-13 15:24:22 -070074 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010075 "core/proto/**/*.proto",
76 "libs/incident/**/*.proto",
Tyler Dewey4c5d89e2022-03-01 16:12:56 +000077 ":service-permission-streaming-proto-sources",
Anton Hansson31fb58b2021-04-12 18:03:12 +010078 ],
79
80 output_extension: "proto.h",
81}
82
83// ==== java proto host library ==============================
84java_library_host {
85 name: "platformprotos",
86 srcs: [
Aaron Huangd87c9cb2022-02-14 21:26:44 +080087 ":framework-connectivity-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010088 ":ipconnectivity-proto-src",
89 ":libstats_atom_enum_protos",
Dichen Zhangc2ae00b2021-04-13 15:24:22 -070090 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010091 ":libstats_internal_protos",
92 ":statsd_internal_protos",
93 "cmds/am/proto/instrumentation_data.proto",
94 "cmds/statsd/src/**/*.proto",
95 "core/proto/**/*.proto",
96 "libs/incident/proto/**/*.proto",
Tyler Dewey4c5d89e2022-03-01 16:12:56 +000097 ":service-permission-streaming-proto-sources",
Anton Hansson31fb58b2021-04-12 18:03:12 +010098 ],
99 proto: {
100 include_dirs: [
101 "external/protobuf/src",
102 "frameworks/proto_logging/stats",
103 ],
104 type: "full",
105 },
106 // Protos have lots of MissingOverride and similar.
107 errorprone: {
Cole Faust2fd661b2021-06-19 00:54:23 +0000108 enabled: false,
Anton Hansson31fb58b2021-04-12 18:03:12 +0100109 },
110}
111
112// ==== java proto device library (for test only) ==============================
113java_library {
114 name: "platformprotosnano",
115 proto: {
116 type: "nano",
117 output_params: ["store_unknown_fields=true"],
118 include_dirs: ["external/protobuf/src"],
119 },
120 exclude_srcs: [
121 "core/proto/android/privacy.proto",
122 "core/proto/android/section.proto",
123 "core/proto/android/typedef.proto",
124 ],
125 sdk_version: "9",
126 srcs: [
Aaron Huangd87c9cb2022-02-14 21:26:44 +0800127 ":framework-connectivity-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100128 ":ipconnectivity-proto-src",
129 ":libstats_atom_enum_protos",
Dichen Zhangc2ae00b2021-04-13 15:24:22 -0700130 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100131 "core/proto/**/*.proto",
132 "libs/incident/proto/android/os/**/*.proto",
Tyler Dewey4c5d89e2022-03-01 16:12:56 +0000133 ":service-permission-streaming-proto-sources",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100134 ],
Cole Faust2fd661b2021-06-19 00:54:23 +0000135 // Protos have lots of MissingOverride and similar.
136 errorprone: {
137 enabled: false,
138 },
Anton Hansson31fb58b2021-04-12 18:03:12 +0100139}
140
141// ==== java proto device library (for test only) ==============================
142java_library {
143 name: "platformprotoslite",
144 proto: {
145 type: "lite",
146 include_dirs: ["external/protobuf/src"],
147 },
148
149 srcs: [
Aaron Huangd87c9cb2022-02-14 21:26:44 +0800150 ":framework-connectivity-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100151 ":ipconnectivity-proto-src",
152 ":libstats_atom_enum_protos",
Dichen Zhangc2ae00b2021-04-13 15:24:22 -0700153 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100154 "core/proto/**/*.proto",
155 "libs/incident/proto/android/os/**/*.proto",
Tyler Dewey4c5d89e2022-03-01 16:12:56 +0000156 ":service-permission-streaming-proto-sources",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100157 ],
158 exclude_srcs: [
159 "core/proto/android/privacy.proto",
160 "core/proto/android/section.proto",
161 "core/proto/android/typedef.proto",
162 ],
163 sdk_version: "core_current",
164 // Protos have lots of MissingOverride and similar.
165 errorprone: {
Cole Faust2fd661b2021-06-19 00:54:23 +0000166 enabled: false,
Anton Hansson31fb58b2021-04-12 18:03:12 +0100167 },
168}
169
170// ==== c++ proto device library ==============================
171cc_defaults {
172 name: "libplatformprotos-defaults",
173
174 proto: {
175 export_proto_headers: true,
176 include_dirs: [
177 "external/protobuf/src",
178 ],
179 },
180
181 cflags: [
182 "-Wall",
183 "-Werror",
184 "-Wno-unused-parameter",
185 ],
186
187 srcs: [
Aaron Huangd87c9cb2022-02-14 21:26:44 +0800188 ":framework-connectivity-protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100189 ":ipconnectivity-proto-src",
190 ":libstats_atom_enum_protos",
Dichen Zhangc2ae00b2021-04-13 15:24:22 -0700191 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100192 "core/proto/**/*.proto",
Tyler Dewey4c5d89e2022-03-01 16:12:56 +0000193 ":service-permission-streaming-proto-sources",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100194 ],
195}
196
197cc_library {
198 name: "libplatformprotos",
199 defaults: ["libplatformprotos-defaults"],
200 host_supported: true,
201
202 target: {
203 host: {
204 proto: {
205 type: "full",
206 },
207 },
208 android: {
209 proto: {
210 type: "lite",
211 },
212 shared_libs: [
213 "libprotobuf-cpp-lite",
214 ],
215 shared: {
216 enabled: false,
217 },
218 },
219 },
220}
221
222// This library is meant for vendor code that needs to output protobuf. It links
223// against the static version of libprotobuf-cpp-lite, for which we can not guarantee
224// binary compatibility.
225cc_library {
226 name: "libplatformprotos-static",
227 defaults: ["libplatformprotos-defaults"],
228 host_supported: false,
229
230 // This is okay because this library is only built as a static library. The C++
231 // API is not guaranteed. The proto API is guaranteed to be stable via Metrics Council,
232 // but is not authorized to be used outside of debugging.
233 vendor_available: true,
234
235 target: {
236 android: {
237 proto: {
238 type: "lite",
239 },
240 static_libs: [
241 "libprotobuf-cpp-lite",
242 ],
243 shared: {
244 enabled: false,
245 },
246 },
247 },
248}
249
250// This is the full proto version of libplatformprotos. It may only
251// be used by test code that is not shipped on the device.
252cc_library {
253 name: "libplatformprotos-test",
254 defaults: ["libplatformprotos-defaults"],
255 host_supported: false,
256
257 target: {
258 android: {
259 proto: {
260 type: "full",
261 },
262 shared: {
263 enabled: false,
264 },
265 },
266 },
267}