xref: /aosp_15_r20/external/protobuf/Android.bp (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1// Copyright (C) 2009 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
15package {
16    default_applicable_licenses: ["external_protobuf_license"],
17}
18
19// Protobuf itself is BSD. Android build scripts are Apache 2.0.
20// Code in third_party/utf8_range and conformance/third_party/jsoncpp
21// is MIT licensed, which is covered by their separate Android.bp files.
22license {
23    name: "external_protobuf_license",
24    visibility: [":__subpackages__"],
25    license_kinds: [
26        "SPDX-license-identifier-Apache-2.0",
27        "SPDX-license-identifier-BSD",
28    ],
29    license_text: [
30        "LICENSE",
31    ],
32}
33
34// Applies only to java/core/src/stubs/sun/misc/Unsafe.java, which is copied
35// from GNU Classpath to work around a compilation issue.
36license {
37    name: "external_protobuf_libcore_private_stubs_license",
38    visibility: [":__subpackages__"],
39    license_kinds: [
40        "SPDX-license-identifier-GPL-2.0-with-classpath-exception",
41    ],
42}
43
44cc_defaults {
45    name: "protobuf-cflags-defaults",
46
47    cflags: [
48        "-Wall",
49        "-Werror",
50        "-Wno-missing-field-initializers",
51        "-Wno-unused-function",
52        "-Wno-unused-parameter",
53        "-Wno-error=user-defined-warnings",
54    ],
55
56    target: {
57        windows: {
58            cflags: ["-Wno-macro-redefined"],
59        },
60    },
61}
62
63cc_defaults {
64    name: "libprotobuf-cpp-lite-defaults",
65    defaults: ["protobuf-cflags-defaults"],
66    srcs: [
67        "src/google/protobuf/any_lite.cc",
68        "src/google/protobuf/arena.cc",
69        "src/google/protobuf/arenastring.cc",
70        "src/google/protobuf/arenaz_sampler.cc",
71        "src/google/protobuf/extension_set.cc",
72        "src/google/protobuf/generated_enum_util.cc",
73        "src/google/protobuf/generated_message_tctable_lite.cc",
74        "src/google/protobuf/generated_message_util.cc",
75        "src/google/protobuf/implicit_weak_message.cc",
76        "src/google/protobuf/inlined_string_field.cc",
77        "src/google/protobuf/io/coded_stream.cc",
78        "src/google/protobuf/io/io_win32.cc",
79        "src/google/protobuf/io/strtod.cc",
80        "src/google/protobuf/io/zero_copy_stream.cc",
81        "src/google/protobuf/io/zero_copy_stream_impl.cc",
82        "src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
83        "src/google/protobuf/map.cc",
84        "src/google/protobuf/message_lite.cc",
85        "src/google/protobuf/parse_context.cc",
86        "src/google/protobuf/repeated_field.cc",
87        "src/google/protobuf/repeated_ptr_field.cc",
88        "src/google/protobuf/stubs/bytestream.cc",
89        "src/google/protobuf/stubs/common.cc",
90        "src/google/protobuf/stubs/int128.cc",
91        "src/google/protobuf/stubs/status.cc",
92        "src/google/protobuf/stubs/statusor.cc",
93        "src/google/protobuf/stubs/stringpiece.cc",
94        "src/google/protobuf/stubs/stringprintf.cc",
95        "src/google/protobuf/stubs/structurally_valid.cc",
96        "src/google/protobuf/stubs/strutil.cc",
97        "src/google/protobuf/stubs/time.cc",
98        "src/google/protobuf/wire_format_lite.cc",
99    ],
100
101    local_include_dirs: [
102        "android",
103        "src",
104    ],
105    export_include_dirs: ["src"],
106
107    target: {
108        android: {
109            shared_libs: ["liblog"],
110        },
111        host: {
112            rtti: true,
113        },
114
115        // This suffix for vendor and product must be updated
116        // when a new version is imported.
117        vendor: {
118            suffix: "-21.12",
119        },
120        product: {
121            suffix: "-21.12",
122        },
123    },
124}
125
126// C++ lite library for the NDK.
127// =======================================================
128cc_library_static {
129    name: "libprotobuf-cpp-lite-ndk",
130    defaults: ["libprotobuf-cpp-lite-defaults"],
131
132    sdk_version: "9",
133
134    stl: "c++_static",
135    apex_available: [
136        "//apex_available:platform",
137        "com.android.adservices",
138        "com.android.extservices",
139        "com.android.ondevicepersonalization",
140    ],
141    min_sdk_version: "30",
142}
143
144// C++ lite library for the platform and host.
145// =======================================================
146cc_library {
147    name: "libprotobuf-cpp-lite",
148    host_supported: true,
149    ramdisk_available: true,
150    recovery_available: true,
151    vendor_available: true,
152    vendor_ramdisk_available: true,
153    product_available: true,
154    double_loadable: true,
155    defaults: ["libprotobuf-cpp-lite-defaults"],
156
157    target: {
158        windows: {
159            enabled: true,
160        },
161    },
162    apex_available: [
163        "//apex_available:platform",
164        "//apex_available:anyapex",
165    ],
166    min_sdk_version: "29",
167}
168
169// C++ full library
170// =======================================================
171cc_defaults {
172    name: "libprotobuf-cpp-full-defaults",
173    defaults: ["libprotobuf-cpp-lite-defaults"],
174
175    srcs: [
176        "src/google/protobuf/any.cc",
177        "src/google/protobuf/any.pb.cc",
178        "src/google/protobuf/api.pb.cc",
179        "src/google/protobuf/compiler/importer.cc",
180        "src/google/protobuf/compiler/parser.cc",
181        "src/google/protobuf/descriptor.cc",
182        "src/google/protobuf/descriptor.pb.cc",
183        "src/google/protobuf/descriptor_database.cc",
184        "src/google/protobuf/duration.pb.cc",
185        "src/google/protobuf/dynamic_message.cc",
186        "src/google/protobuf/empty.pb.cc",
187        "src/google/protobuf/extension_set_heavy.cc",
188        "src/google/protobuf/field_mask.pb.cc",
189        "src/google/protobuf/generated_message_bases.cc",
190        "src/google/protobuf/generated_message_reflection.cc",
191        "src/google/protobuf/generated_message_tctable_full.cc",
192        "src/google/protobuf/io/gzip_stream.cc",
193        "src/google/protobuf/io/printer.cc",
194        "src/google/protobuf/io/tokenizer.cc",
195        "src/google/protobuf/map_field.cc",
196        "src/google/protobuf/message.cc",
197        "src/google/protobuf/reflection_ops.cc",
198        "src/google/protobuf/service.cc",
199        "src/google/protobuf/source_context.pb.cc",
200        "src/google/protobuf/struct.pb.cc",
201        "src/google/protobuf/stubs/substitute.cc",
202        "src/google/protobuf/text_format.cc",
203        "src/google/protobuf/timestamp.pb.cc",
204        "src/google/protobuf/type.pb.cc",
205        "src/google/protobuf/unknown_field_set.cc",
206        "src/google/protobuf/util/delimited_message_util.cc",
207        "src/google/protobuf/util/field_comparator.cc",
208        "src/google/protobuf/util/field_mask_util.cc",
209        "src/google/protobuf/util/internal/datapiece.cc",
210        "src/google/protobuf/util/internal/default_value_objectwriter.cc",
211        "src/google/protobuf/util/internal/error_listener.cc",
212        "src/google/protobuf/util/internal/field_mask_utility.cc",
213        "src/google/protobuf/util/internal/json_escaping.cc",
214        "src/google/protobuf/util/internal/json_objectwriter.cc",
215        "src/google/protobuf/util/internal/json_stream_parser.cc",
216        "src/google/protobuf/util/internal/object_writer.cc",
217        "src/google/protobuf/util/internal/proto_writer.cc",
218        "src/google/protobuf/util/internal/protostream_objectsource.cc",
219        "src/google/protobuf/util/internal/protostream_objectwriter.cc",
220        "src/google/protobuf/util/internal/type_info.cc",
221        "src/google/protobuf/util/internal/utility.cc",
222        "src/google/protobuf/util/json_util.cc",
223        "src/google/protobuf/util/message_differencer.cc",
224        "src/google/protobuf/util/time_util.cc",
225        "src/google/protobuf/util/type_resolver_util.cc",
226        "src/google/protobuf/wire_format.cc",
227        "src/google/protobuf/wrappers.pb.cc",
228    ],
229
230    cflags: ["-DHAVE_ZLIB=1"],
231    shared_libs: ["libz"],
232}
233
234// C++ full library for the NDK.
235// =======================================================
236cc_library_static {
237    name: "libprotobuf-cpp-full-ndk",
238    defaults: ["libprotobuf-cpp-full-defaults"],
239
240    sdk_version: "9",
241
242    stl: "c++_static",
243}
244
245// C++ full library for the platform and host
246// =======================================================
247cc_library {
248    name: "libprotobuf-cpp-full",
249    defaults: ["libprotobuf-cpp-full-defaults"],
250    host_supported: true,
251    vendor_available: true,
252    product_available: true,
253    // TODO(b/153609531): remove when no longer needed.
254    native_bridge_supported: true,
255    target: {
256        android: {
257            static: {
258                enabled: false,
259            },
260        },
261        windows: {
262            enabled: true,
263        },
264    },
265    apex_available: [
266        "//apex_available:platform",
267        "com.android.appsearch",
268        "com.android.virt",
269    ],
270    min_sdk_version: "29",
271}
272
273cc_test_library {
274    name: "libprotobuf-cpp-full-test",
275    defaults: ["libprotobuf-cpp-full-defaults"],
276    host_supported: true,
277    apex_available: [
278        "//apex_available:platform",
279        "com.android.os.statsd",
280        "test_com.android.os.statsd",
281    ],
282    min_sdk_version: "29",
283}
284
285// Compiler library for the host
286// =======================================================
287cc_library {
288    name: "libprotoc",
289    host_supported: true,
290    device_supported: false,
291    defaults: ["libprotobuf-cpp-full-defaults"],
292
293    srcs: [
294        "src/google/protobuf/compiler/code_generator.cc",
295        "src/google/protobuf/compiler/command_line_interface.cc",
296        "src/google/protobuf/compiler/cpp/enum.cc",
297        "src/google/protobuf/compiler/cpp/enum_field.cc",
298        "src/google/protobuf/compiler/cpp/extension.cc",
299        "src/google/protobuf/compiler/cpp/field.cc",
300        "src/google/protobuf/compiler/cpp/file.cc",
301        "src/google/protobuf/compiler/cpp/generator.cc",
302        "src/google/protobuf/compiler/cpp/helpers.cc",
303        "src/google/protobuf/compiler/cpp/map_field.cc",
304        "src/google/protobuf/compiler/cpp/message.cc",
305        "src/google/protobuf/compiler/cpp/message_field.cc",
306        "src/google/protobuf/compiler/cpp/padding_optimizer.cc",
307        "src/google/protobuf/compiler/cpp/parse_function_generator.cc",
308        "src/google/protobuf/compiler/cpp/primitive_field.cc",
309        "src/google/protobuf/compiler/cpp/service.cc",
310        "src/google/protobuf/compiler/cpp/string_field.cc",
311        "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc",
312        "src/google/protobuf/compiler/csharp/csharp_enum.cc",
313        "src/google/protobuf/compiler/csharp/csharp_enum_field.cc",
314        "src/google/protobuf/compiler/csharp/csharp_field_base.cc",
315        "src/google/protobuf/compiler/csharp/csharp_generator.cc",
316        "src/google/protobuf/compiler/csharp/csharp_helpers.cc",
317        "src/google/protobuf/compiler/csharp/csharp_map_field.cc",
318        "src/google/protobuf/compiler/csharp/csharp_message.cc",
319        "src/google/protobuf/compiler/csharp/csharp_message_field.cc",
320        "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
321        "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc",
322        "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc",
323        "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc",
324        "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc",
325        "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc",
326        "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc",
327        "src/google/protobuf/compiler/java/context.cc",
328        "src/google/protobuf/compiler/java/doc_comment.cc",
329        "src/google/protobuf/compiler/java/enum.cc",
330        "src/google/protobuf/compiler/java/enum_field.cc",
331        "src/google/protobuf/compiler/java/enum_field_lite.cc",
332        "src/google/protobuf/compiler/java/enum_lite.cc",
333        "src/google/protobuf/compiler/java/extension.cc",
334        "src/google/protobuf/compiler/java/extension_lite.cc",
335        "src/google/protobuf/compiler/java/field.cc",
336        "src/google/protobuf/compiler/java/file.cc",
337        "src/google/protobuf/compiler/java/generator.cc",
338        "src/google/protobuf/compiler/java/generator_factory.cc",
339        "src/google/protobuf/compiler/java/helpers.cc",
340        "src/google/protobuf/compiler/java/kotlin_generator.cc",
341        "src/google/protobuf/compiler/java/map_field.cc",
342        "src/google/protobuf/compiler/java/map_field_lite.cc",
343        "src/google/protobuf/compiler/java/message.cc",
344        "src/google/protobuf/compiler/java/message_builder.cc",
345        "src/google/protobuf/compiler/java/message_builder_lite.cc",
346        "src/google/protobuf/compiler/java/message_field.cc",
347        "src/google/protobuf/compiler/java/message_field_lite.cc",
348        "src/google/protobuf/compiler/java/message_lite.cc",
349        "src/google/protobuf/compiler/java/name_resolver.cc",
350        "src/google/protobuf/compiler/java/primitive_field.cc",
351        "src/google/protobuf/compiler/java/primitive_field_lite.cc",
352        "src/google/protobuf/compiler/java/service.cc",
353        "src/google/protobuf/compiler/java/shared_code_generator.cc",
354        "src/google/protobuf/compiler/java/string_field.cc",
355        "src/google/protobuf/compiler/java/string_field_lite.cc",
356        "src/google/protobuf/compiler/objectivec/objectivec_enum.cc",
357        "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc",
358        "src/google/protobuf/compiler/objectivec/objectivec_extension.cc",
359        "src/google/protobuf/compiler/objectivec/objectivec_field.cc",
360        "src/google/protobuf/compiler/objectivec/objectivec_file.cc",
361        "src/google/protobuf/compiler/objectivec/objectivec_generator.cc",
362        "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc",
363        "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc",
364        "src/google/protobuf/compiler/objectivec/objectivec_message.cc",
365        "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc",
366        "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc",
367        "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc",
368        "src/google/protobuf/compiler/php/php_generator.cc",
369        "src/google/protobuf/compiler/plugin.cc",
370        "src/google/protobuf/compiler/plugin.pb.cc",
371        "src/google/protobuf/compiler/python/generator.cc",
372        "src/google/protobuf/compiler/python/helpers.cc",
373        "src/google/protobuf/compiler/python/pyi_generator.cc",
374        "src/google/protobuf/compiler/ruby/ruby_generator.cc",
375        "src/google/protobuf/compiler/subprocess.cc",
376        "src/google/protobuf/compiler/zip_writer.cc",
377    ],
378
379    export_include_dirs: [
380        "android",
381        "src",
382        "config",
383    ],
384    cflags: [
385        "-Wno-unused-private-field",
386    ],
387
388    target: {
389        windows: {
390            enabled: true,
391            // defined by the global cflags, but redefined by protobuf
392            cflags: ["-UWIN32_LEAN_AND_MEAN"],
393        },
394    },
395}
396
397// Android Protocol buffer compiler, aprotoc (host executable)
398// used by the build systems as $(PROTOC) defined in
399// build/core/config.mk
400// =======================================================
401cc_binary_host {
402    name: "aprotoc",
403    defaults: ["protobuf-cflags-defaults"],
404
405    target: {
406        windows: {
407            enabled: true,
408            // defined by the global cflags, but redefined by protobuf
409            cflags: ["-UWIN32_LEAN_AND_MEAN"],
410        },
411    },
412
413    // Statically link libc++ because we copy aprotoc to unbundled projects where
414    // libc++.so may not be available.
415    stl: "libc++_static",
416
417    srcs: [
418        "src/google/protobuf/compiler/main.cc",
419    ],
420
421    static_libs: [
422        "libprotoc",
423        "libz",
424    ],
425
426    cflags: [
427        "-DHAVE_ZLIB=1",
428    ],
429
430    rtti: true,
431}
432
433cc_test {
434    name: "libprotobuf_vendor_suffix_test",
435    vendor: true,
436    srcs: ["vendor_suffix_test.cpp"],
437    shared_libs: [
438        "libprotobuf-cpp-lite",
439        "libprotobuf-cpp-full",
440    ],
441    static_libs: ["libbase"],
442    stl: "libc++",
443    test_suites: ["general-tests"],
444    test_config: "vendor_suffix_test.config",
445}
446
447java_defaults {
448    name: "libprotobuf_errorprone_defaults",
449    errorprone: {
450        javacflags: [
451            "-Xep:MissingOverride:OFF", // b/73499927
452            "-Xep:IgnoredPureGetter:WARN",
453        ],
454    },
455}
456
457// Java nano library
458// =======================================================
459java_library_static {
460    name: "libprotobuf-java-nano",
461    defaults: ["libprotobuf_errorprone_defaults"],
462    host_supported: true,
463
464    sdk_version: "9",
465
466    srcs: [
467        "javanano/src/main/java/com/google/protobuf/nano/**/*.java",
468    ],
469
470    target: {
471        android: {
472            srcs: ["javanano/src/device/main/java/com/google/protobuf/nano/**/*.java"],
473        },
474    },
475
476    java_version: "1.7",
477
478    apex_available: [
479        "//apex_available:platform",
480        "com.android.tethering",
481        "com.android.wifi",
482        "com.android.neuralnetworks",
483    ],
484}
485
486// Java micro library
487// =======================================================
488java_library_static {
489    name: "libprotobuf-java-micro",
490    defaults: ["libprotobuf_errorprone_defaults"],
491    host_supported: true,
492
493    sdk_version: "8",
494
495    srcs: ["javamicro/src/main/java/com/google/protobuf/micro/**/*.java"],
496
497    apex_available: [
498        "//apex_available:platform",
499        "com.android.btservices",
500    ],
501}
502
503// Java lite library
504// =======================================================
505java_library_static {
506    name: "libprotobuf-java-lite",
507    host_supported: true,
508    sdk_version: "core_current",
509    defaults: ["libprotobuf_errorprone_defaults"],
510
511    srcs: [
512        "java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java",
513        "java/core/src/main/java/com/google/protobuf/AbstractParser.java",
514        "java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java",
515        "java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java",
516        "java/core/src/main/java/com/google/protobuf/Android.java",
517        "java/core/src/main/java/com/google/protobuf/ArrayDecoders.java",
518        "java/core/src/main/java/com/google/protobuf/BinaryReader.java",
519        "java/core/src/main/java/com/google/protobuf/BinaryWriter.java",
520        "java/core/src/main/java/com/google/protobuf/BooleanArrayList.java",
521        "java/core/src/main/java/com/google/protobuf/BufferAllocator.java",
522        "java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java",
523        "java/core/src/main/java/com/google/protobuf/ByteOutput.java",
524        "java/core/src/main/java/com/google/protobuf/ByteString.java",
525        "java/core/src/main/java/com/google/protobuf/CanIgnoreReturnValue.java",
526        "java/core/src/main/java/com/google/protobuf/CheckReturnValue.java",
527        "java/core/src/main/java/com/google/protobuf/CodedInputStream.java",
528        "java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java",
529        "java/core/src/main/java/com/google/protobuf/CodedOutputStream.java",
530        "java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java",
531        "java/core/src/main/java/com/google/protobuf/CompileTimeConstant.java",
532        "java/core/src/main/java/com/google/protobuf/DoubleArrayList.java",
533        "java/core/src/main/java/com/google/protobuf/ExperimentalApi.java",
534        "java/core/src/main/java/com/google/protobuf/ExtensionLite.java",
535        "java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java",
536        "java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java",
537        "java/core/src/main/java/com/google/protobuf/ExtensionSchema.java",
538        "java/core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java",
539        "java/core/src/main/java/com/google/protobuf/ExtensionSchemas.java",
540        "java/core/src/main/java/com/google/protobuf/FieldInfo.java",
541        "java/core/src/main/java/com/google/protobuf/FieldSet.java",
542        "java/core/src/main/java/com/google/protobuf/FieldType.java",
543        "java/core/src/main/java/com/google/protobuf/FloatArrayList.java",
544        "java/core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java",
545        "java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java",
546        "java/core/src/main/java/com/google/protobuf/InlineMe.java",
547        "java/core/src/main/java/com/google/protobuf/IntArrayList.java",
548        "java/core/src/main/java/com/google/protobuf/Internal.java",
549        "java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java",
550        "java/core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java",
551        "java/core/src/main/java/com/google/protobuf/JavaType.java",
552        "java/core/src/main/java/com/google/protobuf/LazyField.java",
553        "java/core/src/main/java/com/google/protobuf/LazyFieldLite.java",
554        "java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java",
555        "java/core/src/main/java/com/google/protobuf/LazyStringList.java",
556        "java/core/src/main/java/com/google/protobuf/ListFieldSchema.java",
557        "java/core/src/main/java/com/google/protobuf/LongArrayList.java",
558        "java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java",
559        "java/core/src/main/java/com/google/protobuf/MapEntryLite.java",
560        "java/core/src/main/java/com/google/protobuf/MapFieldLite.java",
561        "java/core/src/main/java/com/google/protobuf/MapFieldSchema.java",
562        "java/core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java",
563        "java/core/src/main/java/com/google/protobuf/MapFieldSchemas.java",
564        "java/core/src/main/java/com/google/protobuf/MessageInfo.java",
565        "java/core/src/main/java/com/google/protobuf/MessageInfoFactory.java",
566        "java/core/src/main/java/com/google/protobuf/MessageLite.java",
567        "java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java",
568        "java/core/src/main/java/com/google/protobuf/MessageLiteToString.java",
569        "java/core/src/main/java/com/google/protobuf/MessageSchema.java",
570        "java/core/src/main/java/com/google/protobuf/MessageSetSchema.java",
571        "java/core/src/main/java/com/google/protobuf/MutabilityOracle.java",
572        "java/core/src/main/java/com/google/protobuf/NewInstanceSchema.java",
573        "java/core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java",
574        "java/core/src/main/java/com/google/protobuf/NewInstanceSchemas.java",
575        "java/core/src/main/java/com/google/protobuf/NioByteString.java",
576        "java/core/src/main/java/com/google/protobuf/OneofInfo.java",
577        "java/core/src/main/java/com/google/protobuf/Parser.java",
578        "java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java",
579        "java/core/src/main/java/com/google/protobuf/ProtoSyntax.java",
580        "java/core/src/main/java/com/google/protobuf/Protobuf.java",
581        "java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java",
582        "java/core/src/main/java/com/google/protobuf/ProtobufLists.java",
583        "java/core/src/main/java/com/google/protobuf/ProtocolStringList.java",
584        "java/core/src/main/java/com/google/protobuf/RawMessageInfo.java",
585        "java/core/src/main/java/com/google/protobuf/Reader.java",
586        "java/core/src/main/java/com/google/protobuf/RopeByteString.java",
587        "java/core/src/main/java/com/google/protobuf/Schema.java",
588        "java/core/src/main/java/com/google/protobuf/SchemaFactory.java",
589        "java/core/src/main/java/com/google/protobuf/SchemaUtil.java",
590        "java/core/src/main/java/com/google/protobuf/SmallSortedMap.java",
591        "java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java",
592        "java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java",
593        "java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java",
594        "java/core/src/main/java/com/google/protobuf/UnknownFieldSchema.java",
595        "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java",
596        "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java",
597        "java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java",
598        "java/core/src/main/java/com/google/protobuf/UnsafeByteOperations.java",
599        "java/core/src/main/java/com/google/protobuf/UnsafeUtil.java",
600        "java/core/src/main/java/com/google/protobuf/Utf8.java",
601        "java/core/src/main/java/com/google/protobuf/WireFormat.java",
602        "java/core/src/main/java/com/google/protobuf/Writer.java",
603    ],
604
605    target: {
606        android: {
607            libs: ["libcore_private.stubs"],
608        },
609        windows: {
610            enabled: true,
611        },
612    },
613
614    java_version: "1.7",
615
616    apex_available: [
617        "//apex_available:platform",
618        "//apex_available:anyapex",
619    ],
620
621    optimize: {
622        proguard_flags_files: ["java/lite/proguard.pgcfg"],
623    },
624}
625
626// Java lite library (compatibility for old host-side users)
627// =======================================================
628java_library_host {
629    name: "host-libprotobuf-java-lite",
630    static_libs: ["libprotobuf-java-lite"],
631}
632
633// Java full library (for host-side users)
634// =======================================================
635java_library_host {
636    name: "libprotobuf-java-full",
637    defaults: ["libprotobuf_errorprone_defaults"],
638
639    srcs: [
640        "java/core/src/main/java/**/*.java",
641        ":libprotobuf-internal-protos",
642    ],
643
644    proto: {
645        type: "full",
646        local_include_dirs: [
647            "src",
648        ],
649        canonical_path_from_root: false,
650    },
651
652    java_version: "1.7",
653    target: {
654        windows: {
655            enabled: true,
656        },
657    },
658}
659
660java_library_host {
661    name: "libprotobuf-java-util-full",
662    defaults: ["libprotobuf_errorprone_defaults"],
663    srcs: [
664        "java/util/src/main/java/com/google/protobuf/util/*.java",
665    ],
666    static_libs: [
667        "error_prone_annotations",
668        "gson",
669        "guava",
670        "guava-android-annotation-stubs",
671        "libprotobuf-java-full",
672    ],
673    // b/267831518: Pin tradefed and dependencies to Java 11.
674    java_version: "11",
675    target: {
676        windows: {
677            enabled: true,
678        },
679    },
680}
681
682// Java full library (compatibility for old host-side users)
683// =======================================================
684java_library_host {
685    name: "host-libprotobuf-java-full",
686    static_libs: ["libprotobuf-java-full"],
687}
688
689// Stubs library for using hidden APIs in core-oj and core-libart
690// =======================================================
691java_library {
692    name: "libcore_private.stubs",
693    srcs: ["java/core/src/stubs/**/*.java"],
694    sdk_version: "core_current",
695    installable: false,
696    licenses: ["external_protobuf_libcore_private_stubs_license"],
697    is_stubs_module: true,
698}
699
700// Python library
701// =======================================================
702python_library {
703    name: "libprotobuf-python",
704    srcs: [
705        ":libprotobuf-internal-python-srcs",
706        ":libprotobuf-internal-protos",
707    ],
708    libs: [
709        "py-six",
710    ],
711    proto: {
712        local_include_dirs: [
713            "src",
714        ],
715        canonical_path_from_root: false,
716    },
717    host_supported: true,
718}
719
720filegroup {
721    name: "libprotobuf-internal-python-srcs",
722    srcs: ["python/google/**/*.py"],
723    path: "python",
724}
725
726filegroup {
727    name: "libprotobuf-internal-java-full-srcs",
728    srcs: ["java/core/src/main/java/**/*.java"],
729    path: "java",
730}
731
732filegroup {
733    name: "libprotobuf-internal-protos",
734    srcs: [
735        "src/google/protobuf/descriptor.proto",
736        "src/google/protobuf/any.proto",
737        "src/google/protobuf/source_context.proto",
738        "src/google/protobuf/type.proto",
739        "src/google/protobuf/compiler/plugin.proto",
740        "src/google/protobuf/api.proto",
741        "src/google/protobuf/duration.proto",
742        "src/google/protobuf/empty.proto",
743        "src/google/protobuf/field_mask.proto",
744        "src/google/protobuf/struct.proto",
745        "src/google/protobuf/timestamp.proto",
746        "src/google/protobuf/wrappers.proto",
747    ],
748    path: "src",
749}
750
751filegroup {
752    name: "libprotobuf-internal-descriptor-proto",
753    srcs: [
754        "src/google/protobuf/descriptor.proto",
755    ],
756    path: "src",
757}
758
759filegroup {
760    name: "libprotobuf-internal-any-proto",
761    srcs: [
762        "src/google/protobuf/any.proto",
763    ],
764    path: "src",
765}
766
767// Unit tests
768// =======================================================
769cc_defaults {
770    name: "libprotobuf-test-defaults",
771    host_supported: true,
772    compile_multilib: "64",
773    proto: {
774        local_include_dirs: ["src"],
775        canonical_path_from_root: false,
776    },
777    shared_libs: ["liblog"],
778}
779
780filegroup {
781    name: "libprotobuf-test-protos-lite",
782    srcs: [
783        "src/google/protobuf/map_lite_unittest.proto",
784        "src/google/protobuf/unittest_import.proto",
785        "src/google/protobuf/unittest_import_lite.proto",
786        "src/google/protobuf/unittest_import_public.proto",
787        "src/google/protobuf/unittest_import_public_lite.proto",
788        "src/google/protobuf/unittest_lite.proto",
789        "src/google/protobuf/unittest_proto3.proto",
790        "src/google/protobuf/unittest_proto3_arena.proto",
791    ],
792    path: "src",
793}
794
795// Full test protos include some lite protos, because they are used in
796// unknown_field_set_unittest.cc, which mixes full and lite protos.
797// Full protos are a strict superset of lite protos, so this shouldn't
798// matter for the test.
799filegroup {
800    name: "libprotobuf-test-protos-full",
801    srcs: [
802        "src/google/protobuf/any_test.proto",
803        "src/google/protobuf/map_unittest.proto",
804        "src/google/protobuf/map_proto2_unittest.proto",
805        "src/google/protobuf/test_messages_proto2.proto",
806        "src/google/protobuf/test_messages_proto3.proto",
807        "src/google/protobuf/unittest.proto",
808        "src/google/protobuf/unittest_arena.proto",
809        "src/google/protobuf/unittest_custom_options.proto",
810        "src/google/protobuf/unittest_drop_unknown_fields.proto",
811        "src/google/protobuf/unittest_embed_optimize_for.proto",
812        "src/google/protobuf/unittest_empty.proto",
813        "src/google/protobuf/unittest_enormous_descriptor.proto",
814        "src/google/protobuf/unittest_import.proto",
815        "src/google/protobuf/unittest_import_lite.proto",
816        "src/google/protobuf/unittest_import_public.proto",
817        "src/google/protobuf/unittest_import_public_lite.proto",
818        "src/google/protobuf/unittest_lazy_dependencies.proto",
819        "src/google/protobuf/unittest_lazy_dependencies_custom_option.proto",
820        "src/google/protobuf/unittest_lazy_dependencies_enum.proto",
821        "src/google/protobuf/unittest_lite.proto",
822        "src/google/protobuf/unittest_mset_wire_format.proto",
823        "src/google/protobuf/unittest_mset.proto",
824        "src/google/protobuf/unittest_no_field_presence.proto",
825        "src/google/protobuf/unittest_no_generic_services.proto",
826        "src/google/protobuf/unittest_optimize_for.proto",
827        "src/google/protobuf/unittest_preserve_unknown_enum.proto",
828        "src/google/protobuf/unittest_preserve_unknown_enum2.proto",
829        "src/google/protobuf/unittest_proto3_arena.proto",
830        "src/google/protobuf/unittest_proto3_optional.proto",
831        "src/google/protobuf/unittest_proto3.proto",
832        "src/google/protobuf/unittest_well_known_types.proto",
833        "src/google/protobuf/util/internal/testdata/anys.proto",
834        "src/google/protobuf/util/internal/testdata/books.proto",
835        "src/google/protobuf/util/internal/testdata/default_value.proto",
836        "src/google/protobuf/util/internal/testdata/default_value_test.proto",
837        "src/google/protobuf/util/internal/testdata/field_mask.proto",
838        "src/google/protobuf/util/internal/testdata/maps.proto",
839        "src/google/protobuf/util/internal/testdata/oneofs.proto",
840        "src/google/protobuf/util/internal/testdata/proto3.proto",
841        "src/google/protobuf/util/internal/testdata/struct.proto",
842        "src/google/protobuf/util/internal/testdata/timestamp_duration.proto",
843        "src/google/protobuf/util/internal/testdata/wrappers.proto",
844        "src/google/protobuf/util/json_format.proto",
845        "src/google/protobuf/util/json_format_proto3.proto",
846        "src/google/protobuf/util/message_differencer_unittest.proto",
847    ],
848    path: "src",
849}
850
851cc_test {
852    name: "libprotobuf-lite-test",
853    defaults: ["libprotobuf-test-defaults"],
854    srcs: [
855        "src/google/protobuf/arena_test_util.cc",
856        "src/google/protobuf/generated_message_tctable_lite_test.cc",
857        "src/google/protobuf/lite_arena_unittest.cc",
858        "src/google/protobuf/lite_unittest.cc",
859        "src/google/protobuf/map_lite_test_util.cc",
860        "src/google/protobuf/proto3_arena_lite_unittest.cc",
861        "src/google/protobuf/proto3_lite_unittest.cc",
862        "src/google/protobuf/test_util_lite.cc",
863        ":libprotobuf-test-protos-lite",
864    ],
865    cflags: [
866        // Occurs in generated_message_tctable_lite_test.cc
867        "-Wno-missing-field-initializers",
868    ],
869    proto: {
870        type: "lite",
871    },
872    static_libs: [
873        "libgmock",
874        "libprotobuf-cpp-lite",
875    ],
876}
877
878cc_test {
879    name: "libprotobuf-full-test",
880    defaults: ["libprotobuf-test-defaults"],
881    srcs: [
882        "src/google/protobuf/any_test.cc",
883        "src/google/protobuf/arena_test_util.cc",
884        "src/google/protobuf/arena_unittest.cc",
885        "src/google/protobuf/arenastring_unittest.cc",
886        "src/google/protobuf/arenaz_sampler_test.cc",
887        "src/google/protobuf/descriptor_database_unittest.cc",
888        "src/google/protobuf/descriptor_unittest.cc",
889        "src/google/protobuf/drop_unknown_fields_test.cc",
890        "src/google/protobuf/dynamic_message_unittest.cc",
891        "src/google/protobuf/extension_set_unittest.cc",
892        "src/google/protobuf/generated_message_reflection_unittest.cc",
893        "src/google/protobuf/inlined_string_field_unittest.cc",
894        "src/google/protobuf/io/coded_stream_unittest.cc",
895        "src/google/protobuf/io/io_win32_unittest.cc",
896        "src/google/protobuf/io/printer_unittest.cc",
897        "src/google/protobuf/io/tokenizer_unittest.cc",
898        "src/google/protobuf/io/zero_copy_stream_unittest.cc",
899        "src/google/protobuf/map_field_test.cc",
900        "src/google/protobuf/map_test.cc",
901        "src/google/protobuf/message_unittest.cc",
902        "src/google/protobuf/no_field_presence_test.cc",
903        "src/google/protobuf/preserve_unknown_enum_test.cc",
904        "src/google/protobuf/proto3_arena_unittest.cc",
905        "src/google/protobuf/reflection_ops_unittest.cc",
906        "src/google/protobuf/reflection_tester.cc",
907        "src/google/protobuf/repeated_field_reflection_unittest.cc",
908        "src/google/protobuf/repeated_field_unittest.cc",
909        "src/google/protobuf/testing/googletest.cc",
910        "src/google/protobuf/testing/file.cc",
911        "src/google/protobuf/test_util.cc",
912        "src/google/protobuf/text_format_unittest.cc",
913        "src/google/protobuf/unknown_field_set_unittest.cc",
914        "src/google/protobuf/util/delimited_message_util_test.cc",
915        "src/google/protobuf/util/field_comparator_test.cc",
916        "src/google/protobuf/util/field_mask_util_test.cc",
917        "src/google/protobuf/util/internal/default_value_objectwriter_test.cc",
918        "src/google/protobuf/util/internal/json_objectwriter_test.cc",
919        "src/google/protobuf/util/internal/json_stream_parser_test.cc",
920        "src/google/protobuf/util/internal/protostream_objectsource_test.cc",
921        "src/google/protobuf/util/internal/protostream_objectwriter_test.cc",
922        "src/google/protobuf/util/internal/type_info_test_helper.cc",
923        "src/google/protobuf/util/json_util_test.cc",
924        "src/google/protobuf/util/message_differencer_unittest.cc",
925        "src/google/protobuf/util/time_util_test.cc",
926        "src/google/protobuf/util/type_resolver_util_test.cc",
927        "src/google/protobuf/well_known_types_unittest.cc",
928        "src/google/protobuf/wire_format_unittest.cc",
929        ":libprotobuf-test-protos-full",
930    ],
931    data: [
932        "src/google/protobuf/testdata/*",
933    ],
934    cflags: ["-Wno-unused-parameter"],
935    proto: {
936        type: "full",
937    },
938    static_libs: [
939        "libbase",
940        "libgmock",
941    ],
942    shared_libs: ["libprotobuf-cpp-full"],
943}
944
945cc_test {
946    name: "libprotobuf-stubs-test",
947    defaults: ["libprotobuf-test-defaults"],
948    srcs: [
949        "src/google/protobuf/stubs/bytestream_unittest.cc",
950        "src/google/protobuf/stubs/common_unittest.cc",
951        "src/google/protobuf/stubs/int128_unittest.cc",
952        "src/google/protobuf/stubs/status_test.cc",
953        "src/google/protobuf/stubs/statusor_test.cc",
954        "src/google/protobuf/stubs/stringpiece_unittest.cc",
955        "src/google/protobuf/stubs/stringprintf_unittest.cc",
956        "src/google/protobuf/stubs/structurally_valid_unittest.cc",
957        "src/google/protobuf/stubs/strutil_unittest.cc",
958        "src/google/protobuf/stubs/template_util_unittest.cc",
959        "src/google/protobuf/stubs/time_test.cc",
960        "src/google/protobuf/testing/googletest.cc",
961        "src/google/protobuf/testing/file.cc",
962    ],
963    cflags: ["-Wno-unused-parameter"],
964    static_libs: [
965        "libbase",
966        "libgmock",
967    ],
968    shared_libs: ["libprotobuf-cpp-full"],
969}
970
971// To test java proto params build rules.
972// =======================================================
973java_test {
974    name: "aprotoc-test-nano-params",
975    sdk_version: "current",
976    proto: {
977        type: "nano",
978        local_include_dirs: ["src"],
979        output_params: [
980            "java_package=javanano/src/test/java/com/google/protobuf/nano/unittest_import_nano.proto\\|com.google.protobuf.nano",
981            "java_outer_classname=javanano/src/test/java/com/google/protobuf/nano/unittest_import_nano.proto\\|UnittestImportNano",
982        ],
983    },
984    srcs: [
985        "javanano/src/test/java/com/google/protobuf/nano/unittest_import_nano.proto",
986        "javanano/src/test/java/com/google/protobuf/nano/unittest_simple_nano.proto",
987        "javanano/src/test/java/com/google/protobuf/nano/unittest_stringutf8_nano.proto",
988        "javanano/src/test/java/com/google/protobuf/nano/unittest_recursive_nano.proto",
989    ],
990    java_version: "1.7",
991}
992
993// To test Android-specific nanoproto features.
994// =======================================================
995java_test {
996    // Parcelable messages
997    name: "android-nano-test-parcelable",
998    sdk_version: "current",
999    // Only needed at compile-time.
1000    libs: ["android-support-annotations"],
1001    proto: {
1002        type: "nano",
1003        local_include_dirs: ["src"],
1004        output_params: [
1005            "parcelable_messages=true",
1006            "generate_intdefs=true",
1007        ],
1008    },
1009    srcs: ["javanano/src/test/java/com/google/protobuf/nano/unittest_simple_nano.proto"],
1010}
1011
1012java_test {
1013    // Parcelable and extendable messages
1014    name: "android-nano-test-parcelable-extendable",
1015    sdk_version: "current",
1016    // Only needed at compile-time.
1017    libs: ["android-support-annotations"],
1018    proto: {
1019        type: "nano",
1020        local_include_dirs: ["src"],
1021        output_params: [
1022            "parcelable_messages=true",
1023            "generate_intdefs=true",
1024            "store_unknown_fields=true",
1025        ],
1026    },
1027    srcs: ["javanano/src/test/java/com/google/protobuf/nano/unittest_extension_nano.proto"],
1028    java_version: "1.7",
1029}
1030
1031android_test {
1032    // Test APK
1033    name: "NanoAndroidTest",
1034    sdk_version: "8",
1035    srcs: ["javanano/src/device/test/java/com/google/protobuf/nano/**/*.java"],
1036    manifest: "javanano/src/device/test/AndroidManifest.xml",
1037    static_libs: [
1038        "libprotobuf-java-nano",
1039        "android-nano-test-parcelable",
1040        "android-nano-test-parcelable-extendable",
1041    ],
1042    dex_preopt: {
1043        enabled: false,
1044    },
1045}
1046
1047// Java micro generator plugin
1048// =======================================================
1049cc_binary_host {
1050    name: "protoc-gen-javamicro",
1051    defaults: ["protobuf-cflags-defaults"],
1052    srcs: [
1053        "src/google/protobuf/compiler/javamicro/javamicro_enum.cc",
1054        "src/google/protobuf/compiler/javamicro/javamicro_enum_field.cc",
1055        "src/google/protobuf/compiler/javamicro/javamicro_field.cc",
1056        "src/google/protobuf/compiler/javamicro/javamicro_file.cc",
1057        "src/google/protobuf/compiler/javamicro/javamicro_generator.cc",
1058        "src/google/protobuf/compiler/javamicro/javamicro_helpers.cc",
1059        "src/google/protobuf/compiler/javamicro/javamicro_main.cc",
1060        "src/google/protobuf/compiler/javamicro/javamicro_message.cc",
1061        "src/google/protobuf/compiler/javamicro/javamicro_message_field.cc",
1062        "src/google/protobuf/compiler/javamicro/javamicro_primitive_field.cc",
1063    ],
1064    cflags: [
1065        "-Wno-unused-private-field",
1066    ],
1067    local_include_dirs: ["src"],
1068    static_libs: [
1069        "libprotoc",
1070        "libz",
1071    ],
1072    stl: "libc++_static",
1073}
1074
1075// Java nano generator plugin
1076// =======================================================
1077cc_binary_host {
1078    name: "protoc-gen-javanano",
1079    defaults: ["protobuf-cflags-defaults"],
1080    srcs: [
1081        "src/google/protobuf/compiler/javanano/javanano_enum.cc",
1082        "src/google/protobuf/compiler/javanano/javanano_enum_field.cc",
1083        "src/google/protobuf/compiler/javanano/javanano_extension.cc",
1084        "src/google/protobuf/compiler/javanano/javanano_field.cc",
1085        "src/google/protobuf/compiler/javanano/javanano_file.cc",
1086        "src/google/protobuf/compiler/javanano/javanano_generator.cc",
1087        "src/google/protobuf/compiler/javanano/javanano_helpers.cc",
1088        "src/google/protobuf/compiler/javanano/javanano_main.cc",
1089        "src/google/protobuf/compiler/javanano/javanano_map_field.cc",
1090        "src/google/protobuf/compiler/javanano/javanano_message.cc",
1091        "src/google/protobuf/compiler/javanano/javanano_message_field.cc",
1092        "src/google/protobuf/compiler/javanano/javanano_primitive_field.cc",
1093    ],
1094    cflags: [
1095        "-Wno-unused-private-field",
1096    ],
1097    local_include_dirs: ["src"],
1098    static_libs: [
1099        "libprotoc",
1100        "libz",
1101    ],
1102    stl: "libc++_static",
1103}
1104