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