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} 20 21cc_defaults { 22 name: "libtextclassifier_hash_defaults", 23 srcs: [ 24 "utils/hash/farmhash.cc", 25 "util/hash/hash.cc", 26 ], 27 cflags: [ 28 "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", 29 "-Wall", 30 "-Werror", 31 "-Wno-unused-function", 32 ], 33} 34 35cc_library_shared { 36 name: "libtextclassifier_hash", 37 defaults: ["libtextclassifier_hash_defaults"], 38 vendor_available: true, 39 double_loadable: true, 40} 41 42cc_library_static { 43 name: "libtextclassifier_hash_static", 44 defaults: ["libtextclassifier_hash_defaults"], 45 sdk_version: "current", 46 stl: "libc++_static", 47} 48 49java_library_static { 50 name: "libtextclassifier-java", 51 sdk_version: "core_current", 52 no_framework_libs: true, 53 srcs: ["java/**/*.java"], 54} 55 56cc_defaults { 57 name: "libtextclassifier_defaults", 58 59 // For debug / treemap purposes. 60 //strip: { 61 // keep_symbols: true, 62 //}, 63 64 cflags: [ 65 "-Wall", 66 "-Werror", 67 "-Wno-deprecated-declarations", 68 "-Wno-ignored-qualifiers", 69 "-Wno-missing-field-initializers", 70 "-Wno-sign-compare", 71 "-Wno-tautological-constant-out-of-range-compare", 72 "-Wno-undefined-var-template", 73 "-Wno-unused-function", 74 "-Wno-unused-parameter", 75 "-Wno-extern-c-compat", 76 77 "-funsigned-char", 78 "-fvisibility=hidden", 79 "-DLIBTEXTCLASSIFIER_UNILIB_ICU", 80 "-DZLIB_CONST", 81 "-DSAFTM_COMPACT_LOGGING", 82 "-DTC3_WITH_ACTIONS_OPS", 83 "-DTC3_UNILIB_JAVAICU", 84 "-DTC3_CALENDAR_JAVAICU", 85 "-DTC3_AOSP" 86 ], 87 88 product_variables: { 89 debuggable: { 90 // Only enable debug logging in userdebug/eng builds. 91 cflags: ["-DTC_DEBUG_LOGGING=1"], 92 }, 93 }, 94 95 generated_headers: [ 96 "libtextclassifier_fbgen_flatbuffers", 97 "libtextclassifier_fbgen_tokenizer", 98 "libtextclassifier_fbgen_codepoint_range", 99 "libtextclassifier_fbgen_entity-data", 100 "libtextclassifier_fbgen_zlib_buffer", 101 "libtextclassifier_fbgen_resources_extra", 102 "libtextclassifier_fbgen_intent_config", 103 "libtextclassifier_fbgen_annotator_model", 104 "libtextclassifier_fbgen_actions_model", 105 "libtextclassifier_fbgen_tflite_text_encoder_config", 106 "libtextclassifier_fbgen_lang_id_embedded_network", 107 "libtextclassifier_fbgen_lang_id_model", 108 "libtextclassifier_fbgen_actions-entity-data", 109 ], 110 111 header_libs: [ 112 "tensorflow_headers", 113 "flatbuffer_headers", 114 ], 115 116 shared_libs: [ 117 "liblog", 118 "libtflite", 119 "libz", 120 ], 121 122 static_libs: [ 123 "liblua", 124 "libutf", 125 ], 126} 127 128// ----------------- 129// Generate headers with FlatBuffer schema compiler. 130// ----------------- 131genrule_defaults { 132 name: "fbgen", 133 tools: ["flatc"], 134 // "depfile" is used here in conjunction with flatc's -M to gather the deps 135 cmd: "$(location flatc) --cpp --no-union-value-namespacing --gen-object-api --keep-prefix -I external/libtextclassifier -M $(in) >$(depfile) && " + 136 "$(location flatc) --cpp --no-union-value-namespacing --gen-object-api --keep-prefix -I external/libtextclassifier -o $$(dirname $(out)) $(in)", 137 depfile: true, 138} 139 140genrule { 141 name: "libtextclassifier_fbgen_flatbuffers", 142 srcs: ["utils/flatbuffers.fbs"], 143 out: ["utils/flatbuffers_generated.h"], 144 defaults: ["fbgen"], 145} 146 147genrule { 148 name: "libtextclassifier_fbgen_tokenizer", 149 srcs: ["utils/tokenizer.fbs"], 150 out: ["utils/tokenizer_generated.h"], 151 defaults: ["fbgen"], 152} 153 154genrule { 155 name: "libtextclassifier_fbgen_codepoint_range", 156 srcs: ["utils/codepoint-range.fbs"], 157 out: ["utils/codepoint-range_generated.h"], 158 defaults: ["fbgen"], 159} 160 161genrule { 162 name: "libtextclassifier_fbgen_resources_extra", 163 srcs: ["utils/resources.fbs"], 164 out: ["utils/resources_generated.h"], 165 defaults: ["fbgen"], 166} 167 168genrule { 169 name: "libtextclassifier_fbgen_entity-data", 170 srcs: ["annotator/entity-data.fbs"], 171 out: ["annotator/entity-data_generated.h"], 172 defaults: ["fbgen"], 173} 174 175genrule { 176 name: "libtextclassifier_fbgen_zlib_buffer", 177 srcs: ["utils/zlib/buffer.fbs"], 178 out: ["utils/zlib/buffer_generated.h"], 179 defaults: ["fbgen"], 180} 181 182genrule { 183 name: "libtextclassifier_fbgen_intent_config", 184 srcs: ["utils/intents/intent-config.fbs"], 185 out: ["utils/intents/intent-config_generated.h"], 186 defaults: ["fbgen"], 187} 188 189genrule { 190 name: "libtextclassifier_fbgen_annotator_model", 191 srcs: ["annotator/model.fbs"], 192 out: ["annotator/model_generated.h"], 193 defaults: ["fbgen"], 194} 195 196genrule { 197 name: "libtextclassifier_fbgen_actions_model", 198 srcs: ["actions/actions_model.fbs"], 199 out: ["actions/actions_model_generated.h"], 200 defaults: ["fbgen"], 201} 202 203genrule { 204 name: "libtextclassifier_fbgen_tflite_text_encoder_config", 205 srcs: ["utils/tflite/text_encoder_config.fbs"], 206 out: ["utils/tflite/text_encoder_config_generated.h"], 207 defaults: ["fbgen"], 208} 209 210genrule { 211 name: "libtextclassifier_fbgen_lang_id_embedded_network", 212 srcs: ["lang_id/common/flatbuffers/embedding-network.fbs"], 213 out: ["lang_id/common/flatbuffers/embedding-network_generated.h"], 214 defaults: ["fbgen"], 215} 216 217genrule { 218 name: "libtextclassifier_fbgen_lang_id_model", 219 srcs: ["lang_id/common/flatbuffers/model.fbs"], 220 out: ["lang_id/common/flatbuffers/model_generated.h"], 221 defaults: ["fbgen"], 222} 223 224genrule { 225 name: "libtextclassifier_fbgen_actions-entity-data", 226 srcs: ["actions/actions-entity-data.fbs"], 227 out: ["actions/actions-entity-data_generated.h"], 228 defaults: ["fbgen"], 229} 230 231// ----------------- 232// libtextclassifier 233// ----------------- 234cc_library_shared { 235 name: "libtextclassifier", 236 defaults: ["libtextclassifier_defaults"], 237 238 srcs: ["**/*.cc"], 239 exclude_srcs: [ 240 "**/*_test.cc", 241 "**/*-test-lib.cc", 242 "utils/testing/*.cc", 243 "test-util.*", 244 "utils/calendar/*_test-include.*", 245 "utils/utf8/*_test-include.*" 246 ], 247 248 required: [ 249 "libtextclassifier_annotator_en_model", 250 "libtextclassifier_annotator_universal_model", 251 "libtextclassifier_actions_suggestions_universal_model", 252 "libtextclassifier_lang_id_model", 253 ], 254 255 version_script: "jni.lds", 256} 257 258// ----------------------- 259// libtextclassifier_tests 260// ----------------------- 261cc_test { 262 name: "libtextclassifier_tests", 263 defaults: ["libtextclassifier_defaults"], 264 265 test_suites: ["device-tests"], 266 267 data: [ 268 "annotator/test_data/**/*", 269 "actions/test_data/**/*", 270 ], 271 272 srcs: ["**/*.cc"], 273 // TODO: Do not filter out tflite test once the dependency issue is resolved. 274 exclude_srcs: [ 275 "utils/tflite/*_test.cc", 276 "utils/flatbuffers_test.cc", 277 "utils/calendar/*_test-include.*", 278 "utils/utf8/*_test-include.*" 279 ], 280 281 static_libs: ["libgmock"], 282 283 multilib: { 284 lib32: { 285 cppflags: ["-DTC3_TEST_DATA_DIR=\"/data/nativetest/libtextclassifier_tests/test_data/\""], 286 }, 287 lib64: { 288 cppflags: ["-DTC3_TEST_DATA_DIR=\"/data/nativetest64/libtextclassifier_tests/test_data/\""], 289 }, 290 }, 291} 292 293// ---------------- 294// Annotator models 295// ---------------- 296 297prebuilt_etc { 298 name: "libtextclassifier_annotator_en_model", 299 filename: "textclassifier.en.model", 300 owner: "google", 301 src: "models/textclassifier.en.model", 302 sub_dir: "textclassifier", 303} 304 305prebuilt_etc { 306 name: "libtextclassifier_annotator_universal_model", 307 filename: "textclassifier.universal.model", 308 owner: "google", 309 src: "models/textclassifier.universal.model", 310 sub_dir: "textclassifier", 311} 312 313// --------------------------- 314// Actions Suggestions models 315// --------------------------- 316 317prebuilt_etc { 318 name: "libtextclassifier_actions_suggestions_universal_model", 319 filename: "actions_suggestions.universal.model", 320 owner: "google", 321 src: "models/actions_suggestions.universal.model", 322 sub_dir: "textclassifier", 323} 324 325// ------------ 326// LangId model 327// ------------ 328 329prebuilt_etc { 330 name: "libtextclassifier_lang_id_model", 331 filename: "lang_id.model", 332 owner: "google", 333 src: "models/lang_id.model", 334 sub_dir: "textclassifier", 335} 336