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