• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2017 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
15cc_library_headers {
16    name: "libtextclassifier_hash_headers",
17    vendor_available: true,
18    export_include_dirs: ["."],
19    apex_available: [
20        "//apex_available:platform",
21        "com.android.neuralnetworks",
22        "test_com.android.neuralnetworks",
23    ],
24}
25
26cc_defaults {
27    name: "libtextclassifier_hash_defaults",
28    srcs: [
29        "utils/hash/farmhash.cc",
30        "util/hash/hash.cc",
31    ],
32    cflags: [
33        "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash",
34        "-Wall",
35        "-Werror",
36        "-Wno-unused-function",
37    ],
38}
39
40cc_library_shared {
41    name: "libtextclassifier_hash",
42    defaults: ["libtextclassifier_hash_defaults"],
43    vendor_available: true,
44    double_loadable: true,
45}
46
47cc_library_static {
48    name: "libtextclassifier_hash_static",
49    defaults: ["libtextclassifier_hash_defaults"],
50    vendor_available: true,
51    sdk_version: "current",
52    stl: "libc++_static",
53    apex_available: [
54        "//apex_available:platform",
55        "com.android.neuralnetworks",
56        "test_com.android.neuralnetworks",
57        "com.android.extservices",
58    ],
59}
60
61cc_defaults {
62    name: "libtextclassifier_defaults",
63    stl: "libc++_static",
64    sdk_version: "current",
65    // For debug / treemap purposes.
66    //strip: {
67    //    keep_symbols: true,
68    //},
69
70    cflags: [
71        "-Wall",
72        "-Werror",
73        "-Wno-deprecated-declarations",
74        "-Wno-ignored-qualifiers",
75        "-Wno-missing-field-initializers",
76        "-Wno-sign-compare",
77        "-Wno-tautological-constant-out-of-range-compare",
78        "-Wno-undefined-var-template",
79        "-Wno-unused-function",
80        "-Wno-unused-parameter",
81        "-Wno-extern-c-compat",
82
83        "-funsigned-char",
84        "-fvisibility=hidden",
85        "-DLIBTEXTCLASSIFIER_UNILIB_ICU",
86        "-DZLIB_CONST",
87        "-DSAFTM_COMPACT_LOGGING",
88        "-DTC3_WITH_ACTIONS_OPS",
89        "-DTC3_UNILIB_JAVAICU",
90        "-DTC3_CALENDAR_JAVAICU",
91        "-DTC3_AOSP"
92    ],
93
94    product_variables: {
95        debuggable: {
96            // Only enable debug logging in userdebug/eng builds.
97            cflags: ["-DTC3_DEBUG_LOGGING=1"],
98        },
99    },
100
101    generated_headers: [
102        "libtextclassifier_fbgen_flatbuffers",
103        "libtextclassifier_fbgen_tokenizer",
104        "libtextclassifier_fbgen_codepoint_range",
105        "libtextclassifier_fbgen_entity-data",
106        "libtextclassifier_fbgen_zlib_buffer",
107        "libtextclassifier_fbgen_resources_extra",
108        "libtextclassifier_fbgen_intent_config",
109        "libtextclassifier_fbgen_annotator_model",
110        "libtextclassifier_fbgen_annotator_experimental_model",
111        "libtextclassifier_fbgen_actions_model",
112        "libtextclassifier_fbgen_tflite_text_encoder_config",
113        "libtextclassifier_fbgen_lang_id_embedded_network",
114        "libtextclassifier_fbgen_lang_id_model",
115        "libtextclassifier_fbgen_actions-entity-data",
116        "libtextclassifier_fbgen_normalization",
117        "libtextclassifier_fbgen_language-tag",
118        "libtextclassifier_fbgen_person_name_model",
119        "libtextclassifier_fbgen_grammar_dates",
120        "libtextclassifier_fbgen_timezone_code",
121        "libtextclassifier_fbgen_grammar_rules"
122    ],
123
124    header_libs: [
125        "tensorflow_headers",
126        "flatbuffer_headers",
127    ],
128
129    shared_libs: [
130        "liblog",
131    ],
132
133    static_libs: [
134        "liblua",
135        "libutf",
136        "libtflite_static",
137        "libz_current",
138    ],
139}
140
141// -----------------
142// Generate headers with FlatBuffer schema compiler.
143// -----------------
144genrule_defaults {
145	name: "fbgen",
146    tools: ["flatc"],
147    // "depfile" is used here in conjunction with flatc's -M to gather the deps
148    cmd: "$(location flatc) --cpp --no-union-value-namespacing --gen-object-api --keep-prefix -I external/libtextclassifier/native -M $(in) >$(depfile) && " +
149        "$(location flatc) --cpp --no-union-value-namespacing --gen-object-api --keep-prefix -I external/libtextclassifier/native -o $$(dirname $(out)) $(in)",
150    depfile: true,
151}
152
153genrule {
154    name: "libtextclassifier_fbgen_flatbuffers",
155    srcs: ["utils/flatbuffers.fbs"],
156    out: ["utils/flatbuffers_generated.h"],
157    defaults: ["fbgen"],
158}
159
160genrule {
161    name: "libtextclassifier_fbgen_tokenizer",
162    srcs: ["utils/tokenizer.fbs"],
163    out: ["utils/tokenizer_generated.h"],
164    defaults: ["fbgen"],
165}
166
167genrule {
168    name: "libtextclassifier_fbgen_codepoint_range",
169    srcs: ["utils/codepoint-range.fbs"],
170    out: ["utils/codepoint-range_generated.h"],
171    defaults: ["fbgen"],
172}
173
174genrule {
175    name: "libtextclassifier_fbgen_resources_extra",
176    srcs: ["utils/resources.fbs"],
177    out: ["utils/resources_generated.h"],
178    defaults: ["fbgen"],
179}
180
181genrule {
182    name: "libtextclassifier_fbgen_entity-data",
183    srcs: ["annotator/entity-data.fbs"],
184    out: ["annotator/entity-data_generated.h"],
185    defaults: ["fbgen"],
186}
187
188genrule {
189    name: "libtextclassifier_fbgen_zlib_buffer",
190    srcs: ["utils/zlib/buffer.fbs"],
191    out: ["utils/zlib/buffer_generated.h"],
192    defaults: ["fbgen"],
193}
194
195genrule {
196    name: "libtextclassifier_fbgen_intent_config",
197    srcs: ["utils/intents/intent-config.fbs"],
198    out: ["utils/intents/intent-config_generated.h"],
199    defaults: ["fbgen"],
200}
201
202genrule {
203    name: "libtextclassifier_fbgen_annotator_model",
204    srcs: ["annotator/model.fbs"],
205    out: ["annotator/model_generated.h"],
206    defaults: ["fbgen"],
207}
208
209genrule {
210    name: "libtextclassifier_fbgen_annotator_experimental_model",
211    srcs: ["annotator/experimental/experimental.fbs"],
212    out: ["annotator/experimental/experimental_generated.h"],
213    defaults: ["fbgen"],
214}
215
216genrule {
217    name: "libtextclassifier_fbgen_actions_model",
218    srcs: ["actions/actions_model.fbs"],
219    out: ["actions/actions_model_generated.h"],
220    defaults: ["fbgen"],
221}
222
223genrule {
224    name: "libtextclassifier_fbgen_tflite_text_encoder_config",
225    srcs: ["utils/tflite/text_encoder_config.fbs"],
226    out: ["utils/tflite/text_encoder_config_generated.h"],
227    defaults: ["fbgen"],
228}
229
230genrule {
231    name: "libtextclassifier_fbgen_lang_id_embedded_network",
232    srcs: ["lang_id/common/flatbuffers/embedding-network.fbs"],
233    out: ["lang_id/common/flatbuffers/embedding-network_generated.h"],
234    defaults: ["fbgen"],
235}
236
237genrule {
238    name: "libtextclassifier_fbgen_lang_id_model",
239    srcs: ["lang_id/common/flatbuffers/model.fbs"],
240    out: ["lang_id/common/flatbuffers/model_generated.h"],
241    defaults: ["fbgen"],
242}
243
244genrule {
245    name: "libtextclassifier_fbgen_actions-entity-data",
246    srcs: ["actions/actions-entity-data.fbs"],
247    out: ["actions/actions-entity-data_generated.h"],
248    defaults: ["fbgen"],
249}
250
251genrule {
252    name: "libtextclassifier_fbgen_normalization",
253    srcs: ["utils/normalization.fbs"],
254    out: ["utils/normalization_generated.h"],
255    defaults: ["fbgen"],
256}
257
258genrule {
259    name: "libtextclassifier_fbgen_language-tag",
260    srcs: ["utils/i18n/language-tag.fbs"],
261    out: ["utils/i18n/language-tag_generated.h"],
262    defaults: ["fbgen"],
263}
264
265genrule {
266    name: "libtextclassifier_fbgen_person_name_model",
267    srcs: ["annotator/person_name/person_name_model.fbs"],
268    out: ["annotator/person_name/person_name_model_generated.h"],
269    defaults: ["fbgen"],
270}
271
272genrule {
273    name: "libtextclassifier_fbgen_grammar_dates",
274    srcs: ["annotator/grammar/dates/dates.fbs"],
275    out: ["annotator/grammar/dates/dates_generated.h"],
276    defaults: ["fbgen"],
277}
278
279genrule {
280    name: "libtextclassifier_fbgen_timezone_code",
281    srcs: ["annotator/grammar/dates/timezone-code.fbs"],
282    out: ["annotator/grammar/dates/timezone-code_generated.h"],
283    defaults: ["fbgen"],
284}
285
286genrule {
287    name: "libtextclassifier_fbgen_grammar_rules",
288    srcs: ["utils/grammar/rules.fbs"],
289    out: ["utils/grammar/rules_generated.h"],
290    defaults: ["fbgen"],
291}
292
293// -----------------
294// libtextclassifier
295// -----------------
296cc_library_shared {
297    name: "libtextclassifier",
298    defaults: ["libtextclassifier_defaults"],
299
300    srcs: ["**/*.cc"],
301    exclude_srcs: [
302        "**/*_test.cc",
303        "**/*-test-lib.cc",
304        "**/testing/*.cc",
305        "**/*test-util.*",
306        "**/*test-utils.*",
307        "**/*_test-include.*",
308        "**/*unittest.cc",
309    ],
310
311    version_script: "jni.lds",
312
313    apex_available: [
314        "//apex_available:platform",
315        "com.android.extservices",
316    ],
317}
318
319// -----------------------
320// libtextclassifier_tests
321// -----------------------
322cc_test {
323    name: "libtextclassifier_tests",
324    defaults: ["libtextclassifier_defaults"],
325
326    test_suites: ["device-tests", "mts"],
327
328    data: [
329        "annotator/test_data/**/*",
330        "actions/test_data/**/*",
331    ],
332
333    srcs: ["**/*.cc"],
334
335    static_libs: [
336        "libgmock_ndk",
337        "libgtest_ndk_c++",
338    ],
339
340    multilib: {
341        lib32: {
342            suffix: "32",
343            cppflags: ["-DTC3_TEST_DATA_DIR=\"/data/nativetest/libtextclassifier_tests/test_data/\""],
344        },
345        lib64: {
346            suffix: "64",
347            cppflags: ["-DTC3_TEST_DATA_DIR=\"/data/nativetest64/libtextclassifier_tests/test_data/\""],
348        },
349    },
350}
351
352// ----------------
353// Annotator models
354// ----------------
355
356prebuilt_etc {
357    name: "libtextclassifier_annotator_en_model",
358    filename: "textclassifier.en.model",
359    owner: "google",
360    src: "models/textclassifier.en.model",
361    sub_dir: "textclassifier",
362}
363
364prebuilt_etc {
365    name: "libtextclassifier_annotator_universal_model",
366    filename: "textclassifier.universal.model",
367    owner: "google",
368    src: "models/textclassifier.universal.model",
369    sub_dir: "textclassifier",
370}
371
372// ---------------------------
373// Actions Suggestions models
374// ---------------------------
375
376prebuilt_etc {
377    name: "libtextclassifier_actions_suggestions_universal_model",
378    filename: "actions_suggestions.universal.model",
379    owner: "google",
380    src: "models/actions_suggestions.universal.model",
381    sub_dir: "textclassifier",
382}
383
384// ------------
385// LangId model
386// ------------
387
388prebuilt_etc {
389    name: "libtextclassifier_lang_id_model",
390    filename: "lang_id.model",
391    owner: "google",
392    src: "models/lang_id.model",
393    sub_dir: "textclassifier",
394}
395