blob: 7e3cc2739cd0a1521d664ab77264a766a401ae5f [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",
17 depfile: true,
18
19 tools: [
20 "aprotoc",
21 "protoc-gen-javastream",
22 "soong_zip",
23 ],
24
25 cmd: "mkdir -p $(genDir)/$(in) " +
26 "&& $(location aprotoc) " +
27 " --plugin=$(location protoc-gen-javastream) " +
28 " --dependency_out=$(depfile) " +
29 " --javastream_out=$(genDir)/$(in) " +
30 " -Iexternal/protobuf/src " +
31 " -I . " +
32 " $(in) " +
33 "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",
34
35 srcs: [
36 ":ipconnectivity-proto-src",
37 ":libstats_atom_enum_protos",
Dichen Zhang3e5dae92021-04-14 12:03:45 -070038 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010039 ":libtombstone_proto-src",
40 "core/proto/**/*.proto",
41 "libs/incident/**/*.proto",
42 ":service-permission-protos",
43 ],
44 output_extension: "srcjar",
45}
46
47gensrcs {
48 name: "framework-cppstream-protos",
49 depfile: true,
50
51 tools: [
52 "aprotoc",
53 "protoc-gen-cppstream",
54 ],
55
56 cmd: "mkdir -p $(genDir) " +
57 "&& $(location aprotoc) " +
58 " --plugin=$(location protoc-gen-cppstream) " +
59 " --dependency_out=$(depfile) " +
60 " --cppstream_out=$(genDir) " +
61 " -Iexternal/protobuf/src " +
62 " -I . " +
63 " $(in)",
64
65 srcs: [
66 ":ipconnectivity-proto-src",
67 ":libstats_atom_enum_protos",
Dichen Zhang3e5dae92021-04-14 12:03:45 -070068 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010069 "core/proto/**/*.proto",
70 "libs/incident/**/*.proto",
71 ":service-permission-protos",
72 ],
73
74 output_extension: "proto.h",
75}
76
77// ==== java proto host library ==============================
78java_library_host {
79 name: "platformprotos",
80 srcs: [
81 ":ipconnectivity-proto-src",
82 ":libstats_atom_enum_protos",
Dichen Zhang3e5dae92021-04-14 12:03:45 -070083 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +010084 ":libstats_internal_protos",
85 ":statsd_internal_protos",
86 "cmds/am/proto/instrumentation_data.proto",
87 "cmds/statsd/src/**/*.proto",
88 "core/proto/**/*.proto",
89 "libs/incident/proto/**/*.proto",
90 ":service-permission-protos",
91 ],
92 proto: {
93 include_dirs: [
94 "external/protobuf/src",
95 "frameworks/proto_logging/stats",
96 ],
97 type: "full",
98 },
99 // Protos have lots of MissingOverride and similar.
100 errorprone: {
101 javacflags: ["-XepDisableAllChecks"],
102 },
103}
104
105// ==== java proto device library (for test only) ==============================
106java_library {
107 name: "platformprotosnano",
108 proto: {
109 type: "nano",
110 output_params: ["store_unknown_fields=true"],
111 include_dirs: ["external/protobuf/src"],
112 },
113 exclude_srcs: [
114 "core/proto/android/privacy.proto",
115 "core/proto/android/section.proto",
116 "core/proto/android/typedef.proto",
117 ],
118 sdk_version: "9",
119 srcs: [
120 ":ipconnectivity-proto-src",
121 ":libstats_atom_enum_protos",
Dichen Zhang3e5dae92021-04-14 12:03:45 -0700122 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100123 "core/proto/**/*.proto",
124 "libs/incident/proto/android/os/**/*.proto",
125 ":service-permission-protos",
126 ],
127}
128
129// ==== java proto device library (for test only) ==============================
130java_library {
131 name: "platformprotoslite",
132 proto: {
133 type: "lite",
134 include_dirs: ["external/protobuf/src"],
135 },
136
137 srcs: [
138 ":ipconnectivity-proto-src",
139 ":libstats_atom_enum_protos",
Dichen Zhang3e5dae92021-04-14 12:03:45 -0700140 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100141 "core/proto/**/*.proto",
142 "libs/incident/proto/android/os/**/*.proto",
143 ":service-permission-protos",
144 ],
145 exclude_srcs: [
146 "core/proto/android/privacy.proto",
147 "core/proto/android/section.proto",
148 "core/proto/android/typedef.proto",
149 ],
150 sdk_version: "core_current",
151 // Protos have lots of MissingOverride and similar.
152 errorprone: {
153 javacflags: ["-XepDisableAllChecks"],
154 },
155}
156
157// ==== c++ proto device library ==============================
158cc_defaults {
159 name: "libplatformprotos-defaults",
160
161 proto: {
162 export_proto_headers: true,
163 include_dirs: [
164 "external/protobuf/src",
165 ],
166 },
167
168 cflags: [
169 "-Wall",
170 "-Werror",
171 "-Wno-unused-parameter",
172 ],
173
174 srcs: [
175 ":ipconnectivity-proto-src",
176 ":libstats_atom_enum_protos",
Dichen Zhang3e5dae92021-04-14 12:03:45 -0700177 ":libstats_atom_message_protos",
Anton Hansson31fb58b2021-04-12 18:03:12 +0100178 "core/proto/**/*.proto",
179 ":service-permission-protos",
180 ],
181}
182
183cc_library {
184 name: "libplatformprotos",
185 defaults: ["libplatformprotos-defaults"],
186 host_supported: true,
187
188 target: {
189 host: {
190 proto: {
191 type: "full",
192 },
193 },
194 android: {
195 proto: {
196 type: "lite",
197 },
198 shared_libs: [
199 "libprotobuf-cpp-lite",
200 ],
201 shared: {
202 enabled: false,
203 },
204 },
205 },
206}
207
208// This library is meant for vendor code that needs to output protobuf. It links
209// against the static version of libprotobuf-cpp-lite, for which we can not guarantee
210// binary compatibility.
211cc_library {
212 name: "libplatformprotos-static",
213 defaults: ["libplatformprotos-defaults"],
214 host_supported: false,
215
216 // This is okay because this library is only built as a static library. The C++
217 // API is not guaranteed. The proto API is guaranteed to be stable via Metrics Council,
218 // but is not authorized to be used outside of debugging.
219 vendor_available: true,
220
221 target: {
222 android: {
223 proto: {
224 type: "lite",
225 },
226 static_libs: [
227 "libprotobuf-cpp-lite",
228 ],
229 shared: {
230 enabled: false,
231 },
232 },
233 },
234}
235
236// This is the full proto version of libplatformprotos. It may only
237// be used by test code that is not shipped on the device.
238cc_library {
239 name: "libplatformprotos-test",
240 defaults: ["libplatformprotos-defaults"],
241 host_supported: false,
242
243 target: {
244 android: {
245 proto: {
246 type: "full",
247 },
248 shared: {
249 enabled: false,
250 },
251 },
252 },
253}