xref: /aosp_15_r20/external/tflite-support/Android.bp (revision b16991f985baa50654c05c5adbb3c8bbcfb40082)
1package {
2    default_applicable_licenses: ["external_tflite-support_license"],
3}
4
5// Added automatically by a large-scale-change that took the approach of
6// 'apply every license found to every target'. While this makes sure we respect
7// every license restriction, it may not be entirely correct.
8//
9// e.g. GPL in an MIT project might only apply to the contrib/ directory.
10//
11// Please consider splitting the single license below into multiple licenses,
12// taking care not to lose any license_kind information, and overriding the
13// default license using the 'licenses: [...]' property on targets as needed.
14//
15// For unused files, consider creating a 'fileGroup' with "//visibility:private"
16// to attach the license to, and including a comment whether the files may be
17// used in the current project.
18// See: http://go/android-license-faq
19
20// TODO (ag/17748161): Split into smaller localized build files as necessary.
21
22license {
23    name: "external_tflite-support_license",
24    visibility: [":__subpackages__"],
25    license_kinds: [
26        "SPDX-license-identifier-Apache-2.0",
27        "SPDX-license-identifier-BSD",
28        "SPDX-license-identifier-MIT",
29    ],
30    license_text: [
31        "LICENSE",
32    ],
33}
34
35cc_defaults {
36    name: "tflite_support_defaults",
37    cflags: [
38        "-Wno-ignored-qualifiers",
39        "-Wno-missing-field-initializers",
40        "-Wno-unused-parameter",
41        "-Wno-unused-variable",
42    ],
43}
44
45cc_library_static {
46    name: "tflite_support",
47    sdk_version: "current",
48    min_sdk_version: "30",
49    stl: "libc++_static",
50    export_include_dirs: ["."],
51    srcs: [
52        "tensorflow_lite_support/cc/utils/common_utils.cc",
53        "tensorflow_lite_support/custom_ops/kernel/sentencepiece/sentencepiece_tokenizer_tflite.cc",
54        "tensorflow_lite_support/custom_ops/kernel/sentencepiece/optimized_encoder.cc",
55        "tensorflow_lite_support/custom_ops/kernel/ragged/ragged_range_tflite.cc",
56        "tensorflow_lite_support/custom_ops/kernel/ragged/ragged_tensor_to_tensor_tflite.cc",
57    ],
58    cflags: [
59        "-Werror",
60        "-Wall",
61        "-O2",
62        "-Wno-missing-field-initializers",
63        "-Wno-unused-parameter",
64        "-Wno-unused-variable",
65    ],
66    generated_headers: [
67        "tflite_support_spm_config",
68        "tflite_support_spm_encoder_config",
69    ],
70    header_libs: [
71        "tensorflow_headers",
72        "flatbuffer_headers",
73    ],
74    static_libs: [
75        "libabsl",
76        "libtflite_static",
77    ],
78    apex_available: [
79        "//apex_available:platform",
80        "com.android.adservices",
81        "com.android.extservices",
82    ],
83
84    visibility: ["//external/libtextclassifier:__subpackages__"],
85}
86
87java_library {
88    name: "tflite_support_java",
89    sdk_version: "current",
90    min_sdk_version: "30",
91    srcs: [
92        "tensorflow_lite_support/java/src/java/org/tensorflow/lite/support/**/*.java",
93    ],
94    libs: [
95        "guava-android-annotation-stubs",
96    ],
97    static_libs: [
98        "tensorflowlite_java",
99    ],
100    apex_available: [
101        "//apex_available:platform",
102        "com.android.adservices",
103        "com.android.extservices",
104    ],
105}
106
107cc_library_static {
108    name: "tflite_support_tokenizers",
109    srcs: [
110        "tensorflow_lite_support/cc/task/core/task_utils.cc",
111        "tensorflow_lite_support/cc/text/tokenizers/regex_tokenizer.cc",
112        "tensorflow_lite_support/cc/text/tokenizers/tokenizer_utils.cc",
113        "tensorflow_lite_support/cc/utils/common_utils.cc",
114    ],
115    defaults: ["tflite_support_defaults"],
116    stl: "libc++_static",
117    sdk_version: "current",
118    min_sdk_version: "30",
119    export_include_dirs: ["."],
120    header_libs: [
121        // TODO (ag/17748161): Create target for just TFLite headers and use here.
122        "tensorflow_headers",
123        "flatbuffer_headers",
124        "libtextclassifier_flatbuffer_headers",
125    ],
126    generated_headers: ["tflite_support_metadata_schema"],
127    static_libs: [
128        "libabsl",
129        "libtextclassifier_bert_tokenizer",
130        "libtflite_static",
131    ],
132    apex_available: [
133        "//apex_available:platform",
134        "com.android.adservices",
135        "com.android.extservices",
136    ],
137}
138
139cc_test {
140    name: "tflite_support_tokenizer_tests",
141    srcs: [
142        "tensorflow_lite_support/cc/test/text/regex_tokenizer_test.cc",
143    ],
144    defaults: ["tflite_support_defaults"],
145    data: ["tensorflow_lite_support/cc/test/testdata/task/text/**/*.txt"],
146    stl: "libc++_static",
147    sdk_version: "current",
148    min_sdk_version: "30",
149    static_libs: [
150        "libabsl",
151        "libbase_ndk",
152        "libgmock_ndk",
153        "tflite_support_tokenizers",
154    ],
155    header_libs: [
156        // TODO (ag/17748161): Create target for just TFLite headers and use here.
157        "tensorflow_headers",
158        "flatbuffer_headers",
159    ],
160    generated_headers: ["tflite_support_metadata_schema"],
161}
162
163cc_library_static {
164    name: "tflite_support_classifiers",
165    srcs: [
166        "tensorflow_lite_support/cc/task/text/nlclassifier/**/*.cc",
167        "tensorflow_lite_support/cc/common.cc",
168        "tensorflow_lite_support/cc/port/default/tflite_wrapper.cc",
169        "tensorflow_lite_support/cc/port/default/statusor.cc",
170    ],
171    defaults: ["tflite_support_defaults"],
172    stl: "libc++_static",
173    sdk_version: "current",
174    min_sdk_version: "30",
175    export_include_dirs: ["."],
176    header_libs: [
177        // TODO (ag/17748161): Create target for just TFLite headers and use here.
178        "tensorflow_headers",
179        "flatbuffer_headers",
180    ],
181    generated_headers: ["tflite_support_metadata_schema"],
182    static_libs: [
183        "libabsl",
184        "libtflite_static",
185        "tflite_configuration_proto",
186        "tflite_support_task_core_proto",
187        "tflite_support_tokenizers",
188        "tflite_support_metadata_extractor",
189    ],
190    apex_available: [
191        "//apex_available:platform",
192        "com.android.adservices",
193        "com.android.extservices",
194    ],
195}
196
197java_library {
198    name: "tflite_support_classifiers_java",
199    sdk_version: "current",
200    min_sdk_version: "30",
201    srcs: [
202        "tensorflow_lite_support/java/src/java/org/tensorflow/lite/task/text/nlclassifier/**/*.java",
203    ],
204    static_libs: [
205        "auto_value_annotations",
206        "tflite_support_java",
207        "tflite_support_base_task_api_java",
208    ],
209    plugins: [
210        "auto_value_plugin",
211    ],
212    apex_available: [
213        "//apex_available:platform",
214        "com.android.adservices",
215        "com.android.extservices",
216    ],
217}
218
219cc_library_shared {
220    name: "libtflite_support_classifiers_native",
221    srcs: [
222        "tensorflow_lite_support/java/src/native/task/text/nlclassifier/bert_nlclassifier/bert_nl_classifier_jni.cc",
223        "tensorflow_lite_support/java/src/native/task/text/nlclassifier/nl_classifier_jni.cc",
224        "tensorflow_lite_support/java/src/native/task/text/nlclassifier/nl_classifier_jni_utils.cc",
225        "tensorflow_lite_support/java/src/native/task/core/rbtml_op_resolver.cc",
226        "tensorflow_lite_support/custom_ops/kernel/unsorted_segment.cc",
227        "tensorflow_lite_support/cc/utils/jni_utils.cc",
228    ],
229    version_script: "tensorflow_lite_support/java/tflite_version_script.lds",
230    shared_libs: [
231        "liblog",
232        "libz",
233    ],
234    static_libs: [
235        "libabsl",
236        "libprotobuf-cpp-lite-ndk",
237        "libtextclassifier_bert_tokenizer",
238        "libtflite_static",
239        "tflite_configuration_proto",
240        "tflite_support_classifiers",
241        "tflite_support_libz",
242        "tflite_support_metadata_extractor",
243        "tflite_support_task_core",
244        "tflite_support_task_core_proto",
245        "tflite_support_tokenizers",
246    ],
247    header_libs: [
248        // TODO (ag/17748161): Create target for just TFLite headers and use here.
249        "tensorflow_headers",
250        "flatbuffer_headers",
251        "jni_headers",
252        "libtextclassifier_flatbuffer_headers",
253    ],
254    generated_headers: [
255        "libtflite_mutable_schema",
256        "tflite_support_metadata_schema",
257    ],
258    defaults: ["tflite_support_defaults"],
259    stl: "libc++_static",
260    sdk_version: "current",
261    min_sdk_version: "30",
262    export_include_dirs: ["."],
263    apex_available: [
264        "//apex_available:platform",
265        "com.android.adservices",
266        "com.android.extservices",
267    ],
268}
269
270java_library {
271    name: "tflite_support_base_task_api_java",
272    sdk_version: "current",
273    min_sdk_version: "30",
274    srcs: [
275        "tensorflow_lite_support/java/src/java/org/tensorflow/lite/task/core/*.java",
276    ],
277    optimize: {
278        proguard_flags_files: ["proguard.flags"],
279    },
280    apex_available: [
281        "//apex_available:platform",
282        "com.android.adservices",
283        "com.android.extservices",
284    ],
285}
286
287cc_library_static {
288    name: "tflite_support_metadata_extractor",
289    srcs: [
290        "tensorflow_lite_support/metadata/cc/metadata_extractor.cc",
291        "tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc",
292    ],
293    defaults: ["tflite_support_defaults"],
294    stl: "libc++_static",
295    sdk_version: "current",
296    min_sdk_version: "30",
297    export_include_dirs: ["."],
298    header_libs: [
299        // TODO (ag/17748161): Create target for just TFLite headers and use here.
300        "tensorflow_headers",
301        "flatbuffer_headers",
302        "libtextclassifier_flatbuffer_headers",
303    ],
304    generated_headers: [
305        "libtflite_mutable_schema",
306        "tflite_support_metadata_schema",
307    ],
308    static_libs: [
309        "libabsl",
310        "tflite_support_libz",
311    ],
312    apex_available: [
313        "//apex_available:platform",
314        "com.android.adservices",
315        "com.android.extservices",
316    ],
317}
318
319cc_library_static {
320    name: "tflite_support_task_core",
321    srcs: ["tensorflow_lite_support/cc/task/core/**/*.cc"],
322    defaults: ["tflite_support_defaults"],
323    stl: "libc++_static",
324    sdk_version: "current",
325    min_sdk_version: "30",
326    export_include_dirs: ["."],
327    header_libs: [
328        // TODO (ag/17748161): Create target for just TFLite headers and use here.
329        "tensorflow_headers",
330        "flatbuffer_headers",
331    ],
332    generated_headers: [
333        "libtflite_mutable_schema",
334        "tflite_support_metadata_schema",
335    ],
336    static_libs: [
337        "libabsl",
338        "tflite_configuration_proto",
339        "tflite_support_task_core_proto",
340    ],
341    apex_available: [
342        "//apex_available:platform",
343        "com.android.adservices",
344        "com.android.extservices",
345    ],
346}
347
348cc_test {
349    name: "tflite_support_classifier_tests",
350    srcs: [
351        "tensorflow_lite_support/cc/test/task/text/bert_nl_classifier_test.cc",
352    ],
353    data: ["tensorflow_lite_support/cc/test/testdata/task/text/**/*.tflite"],
354    defaults: [
355        "tflite_support_defaults",
356    ],
357    stl: "libc++_static",
358    sdk_version: "current",
359    min_sdk_version: "30",
360    shared_libs: [
361        "liblog",
362        "libz",
363    ],
364    static_libs: [
365        "libabsl",
366        "libbase_ndk",
367        "libgmock_ndk",
368        "libprotobuf-cpp-lite-ndk",
369        "libtextclassifier_bert_tokenizer",
370        "libtflite_static",
371        "tflite_configuration_proto",
372        "tflite_support_classifiers",
373        "tflite_support_libz",
374        "tflite_support_metadata_extractor",
375        "tflite_support_task_core_proto",
376        "tflite_support_task_core",
377        "tflite_support_tokenizers",
378    ],
379    header_libs: [
380        // TODO (ag/17748161): Create target for just TFLite headers and use here.
381        "tensorflow_headers",
382        "flatbuffer_headers",
383        "liblog_headers",
384        "libtextclassifier_flatbuffer_headers",
385    ],
386    generated_headers: [
387        "libtflite_mutable_schema",
388        "tflite_support_metadata_schema",
389    ],
390}
391
392android_test {
393    name: "TfliteSupportClassifierTests",
394    srcs: [
395        "tensorflow_lite_support/java/src/javatests/org/tensorflow/lite/task/text/nlclassifier/BertNLClassifierTest.java",
396    ],
397    asset_dirs: [
398        "tensorflow_lite_support/java/src/javatests/testdata/task/text",
399    ],
400    defaults: ["modules-utils-testable-device-config-defaults"],
401    manifest: "tensorflow_lite_support/java/AndroidManifest.xml",
402    sdk_version: "module_current",
403    min_sdk_version: "30",
404    static_libs: [
405        "androidx.test.core",
406        "tensorflowlite_java",
407        "truth",
408        "tflite_support_classifiers_java",
409        "tflite_support_test_utils_java",
410    ],
411    libs: [
412        "android.test.base.stubs.system",
413        "android.test.mock.stubs",
414    ],
415    test_suites: [
416        "general-tests",
417    ],
418    jni_libs: [
419        "libtflite_support_classifiers_native",
420    ],
421    aaptflags: [
422        // Avoid compression on tflite files as the Interpreter
423        // can not load compressed flat buffer formats.
424        // (*appt compresses all assets into the apk by default)
425        // See https://elinux.org/Android_aapt for more detail.
426        "-0 .tflite",
427    ],
428}
429
430java_library_static {
431    name: "tflite_support_test_utils_java",
432    sdk_version: "module_current",
433    min_sdk_version: "30",
434    srcs: [
435        "tensorflow_lite_support/java/src/javatests/org/tensorflow/lite/task/core/TestUtils.java",
436    ],
437    static_libs: [
438        "apache-commons-compress",
439        "guava",
440    ],
441}
442
443cc_library_static {
444    name: "tflite_support_task_core_proto",
445    proto: {
446        type: "lite",
447        canonical_path_from_root: false,
448        export_proto_headers: true,
449    },
450    stl: "libc++",
451    srcs: ["tensorflow_lite_support/cc/task/core/proto/**/*.proto"],
452    sdk_version: "current",
453    min_sdk_version: "30",
454    apex_available: [
455        "//apex_available:platform",
456        "com.android.adservices",
457        "com.android.extservices",
458    ],
459}
460
461// -----------------
462// Generate headers with FlatBuffer schema compiler.
463// -----------------
464
465FLATC_ARGS = "$(location flatc) --cpp --no-union-value-namespacing --gen-object-api --keep-prefix -I external/tflite-support -o $$(dirname $(out)) "
466
467genrule {
468    name: "tflite_support_metadata_schema",
469    tools: ["flatc"],
470    srcs: ["tensorflow_lite_support/metadata/metadata_schema.fbs"],
471    cmd: FLATC_ARGS + " $(in)",
472    out: ["tensorflow_lite_support/metadata/metadata_schema_generated.h"],
473}
474
475genrule {
476    name: "tflite_support_spm_config",
477    tools: ["flatc"],
478    srcs: ["tensorflow_lite_support/custom_ops/kernel/sentencepiece/config.fbs"],
479    cmd: FLATC_ARGS + " $(in)",
480    out: ["tensorflow_lite_support/custom_ops/kernel/sentencepiece/config_generated.h"],
481}
482
483genrule {
484    name: "tflite_support_spm_encoder_config",
485    tools: ["flatc"],
486    srcs: [
487        "tensorflow_lite_support/custom_ops/kernel/sentencepiece/config.fbs",
488        "tensorflow_lite_support/custom_ops/kernel/sentencepiece/encoder_config.fbs",
489    ],
490    cmd: FLATC_ARGS + " $(location tensorflow_lite_support/custom_ops/kernel/sentencepiece/encoder_config.fbs)",
491    out: ["tensorflow_lite_support/custom_ops/kernel/sentencepiece/encoder_config_generated.h"],
492}
493