blob: 9a79285b5a41908dae3ff3226c453195639c66d7 [file] [log] [blame]
// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
cc_library_headers {
name: "libtextclassifier_hash_headers",
vendor_available: true,
export_include_dirs: ["."],
apex_available: [
"//apex_available:platform",
"com.android.neuralnetworks",
"test_com.android.neuralnetworks",
],
}
cc_defaults {
name: "libtextclassifier_hash_defaults",
srcs: [
"utils/hash/farmhash.cc",
"util/hash/hash.cc",
],
cflags: [
"-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash",
"-Wall",
"-Werror",
"-Wno-unused-function",
],
}
cc_library_shared {
name: "libtextclassifier_hash",
defaults: ["libtextclassifier_hash_defaults"],
vendor_available: true,
double_loadable: true,
}
cc_library_static {
name: "libtextclassifier_hash_static",
defaults: ["libtextclassifier_hash_defaults"],
vendor_available: true,
sdk_version: "current",
stl: "libc++_static",
apex_available: [
"//apex_available:platform",
"com.android.neuralnetworks",
"test_com.android.neuralnetworks",
"com.android.extservices",
],
}
cc_defaults {
name: "libtextclassifier_defaults",
stl: "libc++_static",
sdk_version: "current",
// For debug / treemap purposes.
//strip: {
// keep_symbols: true,
//},
cflags: [
"-Wall",
"-Werror",
"-Wno-deprecated-declarations",
"-Wno-ignored-qualifiers",
"-Wno-missing-field-initializers",
"-Wno-sign-compare",
"-Wno-tautological-constant-out-of-range-compare",
"-Wno-undefined-var-template",
"-Wno-unused-function",
"-Wno-unused-parameter",
"-Wno-extern-c-compat",
"-funsigned-char",
"-fvisibility=hidden",
"-DLIBTEXTCLASSIFIER_UNILIB_ICU",
"-DZLIB_CONST",
"-DSAFTM_COMPACT_LOGGING",
"-DTC3_WITH_ACTIONS_OPS",
"-DTC3_UNILIB_JAVAICU",
"-DTC3_CALENDAR_JAVAICU",
"-DTC3_AOSP"
],
product_variables: {
debuggable: {
// Only enable debug logging in userdebug/eng builds.
cflags: ["-DTC3_DEBUG_LOGGING=1"],
},
},
generated_headers: [
"libtextclassifier_fbgen_flatbuffers",
"libtextclassifier_fbgen_tokenizer",
"libtextclassifier_fbgen_codepoint_range",
"libtextclassifier_fbgen_entity-data",
"libtextclassifier_fbgen_zlib_buffer",
"libtextclassifier_fbgen_resources_extra",
"libtextclassifier_fbgen_intent_config",
"libtextclassifier_fbgen_annotator_model",
"libtextclassifier_fbgen_annotator_experimental_model",
"libtextclassifier_fbgen_actions_model",
"libtextclassifier_fbgen_tflite_text_encoder_config",
"libtextclassifier_fbgen_lang_id_embedded_network",
"libtextclassifier_fbgen_lang_id_model",
"libtextclassifier_fbgen_actions-entity-data",
"libtextclassifier_fbgen_normalization",
"libtextclassifier_fbgen_language-tag",
"libtextclassifier_fbgen_person_name_model",
"libtextclassifier_fbgen_grammar_dates",
"libtextclassifier_fbgen_timezone_code",
"libtextclassifier_fbgen_grammar_rules"
],
header_libs: [
"tensorflow_headers",
"flatbuffer_headers",
],
shared_libs: [
"liblog",
],
static_libs: [
"liblua",
"libutf",
"libtflite_static",
"libz_current",
],
}
// -----------------
// Generate headers with FlatBuffer schema compiler.
// -----------------
genrule_defaults {
name: "fbgen",
tools: ["flatc"],
// "depfile" is used here in conjunction with flatc's -M to gather the deps
cmd: "$(location flatc) --cpp --no-union-value-namespacing --gen-object-api --keep-prefix -I external/libtextclassifier/native -M $(in) >$(depfile) && " +
"$(location flatc) --cpp --no-union-value-namespacing --gen-object-api --keep-prefix -I external/libtextclassifier/native -o $$(dirname $(out)) $(in)",
depfile: true,
}
genrule {
name: "libtextclassifier_fbgen_flatbuffers",
srcs: ["utils/flatbuffers.fbs"],
out: ["utils/flatbuffers_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_tokenizer",
srcs: ["utils/tokenizer.fbs"],
out: ["utils/tokenizer_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_codepoint_range",
srcs: ["utils/codepoint-range.fbs"],
out: ["utils/codepoint-range_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_resources_extra",
srcs: ["utils/resources.fbs"],
out: ["utils/resources_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_entity-data",
srcs: ["annotator/entity-data.fbs"],
out: ["annotator/entity-data_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_zlib_buffer",
srcs: ["utils/zlib/buffer.fbs"],
out: ["utils/zlib/buffer_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_intent_config",
srcs: ["utils/intents/intent-config.fbs"],
out: ["utils/intents/intent-config_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_annotator_model",
srcs: ["annotator/model.fbs"],
out: ["annotator/model_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_annotator_experimental_model",
srcs: ["annotator/experimental/experimental.fbs"],
out: ["annotator/experimental/experimental_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_actions_model",
srcs: ["actions/actions_model.fbs"],
out: ["actions/actions_model_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_tflite_text_encoder_config",
srcs: ["utils/tflite/text_encoder_config.fbs"],
out: ["utils/tflite/text_encoder_config_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_lang_id_embedded_network",
srcs: ["lang_id/common/flatbuffers/embedding-network.fbs"],
out: ["lang_id/common/flatbuffers/embedding-network_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_lang_id_model",
srcs: ["lang_id/common/flatbuffers/model.fbs"],
out: ["lang_id/common/flatbuffers/model_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_actions-entity-data",
srcs: ["actions/actions-entity-data.fbs"],
out: ["actions/actions-entity-data_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_normalization",
srcs: ["utils/normalization.fbs"],
out: ["utils/normalization_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_language-tag",
srcs: ["utils/i18n/language-tag.fbs"],
out: ["utils/i18n/language-tag_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_person_name_model",
srcs: ["annotator/person_name/person_name_model.fbs"],
out: ["annotator/person_name/person_name_model_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_grammar_dates",
srcs: ["annotator/grammar/dates/dates.fbs"],
out: ["annotator/grammar/dates/dates_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_timezone_code",
srcs: ["annotator/grammar/dates/timezone-code.fbs"],
out: ["annotator/grammar/dates/timezone-code_generated.h"],
defaults: ["fbgen"],
}
genrule {
name: "libtextclassifier_fbgen_grammar_rules",
srcs: ["utils/grammar/rules.fbs"],
out: ["utils/grammar/rules_generated.h"],
defaults: ["fbgen"],
}
// -----------------
// libtextclassifier
// -----------------
cc_library_shared {
name: "libtextclassifier",
defaults: ["libtextclassifier_defaults"],
srcs: ["**/*.cc"],
exclude_srcs: [
"**/*_test.cc",
"**/*-test-lib.cc",
"**/testing/*.cc",
"**/*test-util.*",
"**/*test-utils.*",
"**/*_test-include.*",
"**/*unittest.cc",
],
version_script: "jni.lds",
apex_available: [
"//apex_available:platform",
"com.android.extservices",
],
}
// -----------------------
// libtextclassifier_tests
// -----------------------
cc_test {
name: "libtextclassifier_tests",
defaults: ["libtextclassifier_defaults"],
test_suites: ["device-tests", "mts"],
data: [
"annotator/test_data/**/*",
"actions/test_data/**/*",
],
srcs: ["**/*.cc"],
static_libs: [
"libgmock_ndk",
"libgtest_ndk_c++",
],
multilib: {
lib32: {
suffix: "32",
cppflags: ["-DTC3_TEST_DATA_DIR=\"/data/nativetest/libtextclassifier_tests/test_data/\""],
},
lib64: {
suffix: "64",
cppflags: ["-DTC3_TEST_DATA_DIR=\"/data/nativetest64/libtextclassifier_tests/test_data/\""],
},
},
}
// ----------------
// Annotator models
// ----------------
prebuilt_etc {
name: "libtextclassifier_annotator_en_model",
filename: "textclassifier.en.model",
owner: "google",
src: "models/textclassifier.en.model",
sub_dir: "textclassifier",
}
prebuilt_etc {
name: "libtextclassifier_annotator_universal_model",
filename: "textclassifier.universal.model",
owner: "google",
src: "models/textclassifier.universal.model",
sub_dir: "textclassifier",
}
// ---------------------------
// Actions Suggestions models
// ---------------------------
prebuilt_etc {
name: "libtextclassifier_actions_suggestions_universal_model",
filename: "actions_suggestions.universal.model",
owner: "google",
src: "models/actions_suggestions.universal.model",
sub_dir: "textclassifier",
}
// ------------
// LangId model
// ------------
prebuilt_etc {
name: "libtextclassifier_lang_id_model",
filename: "lang_id.model",
owner: "google",
src: "models/lang_id.model",
sub_dir: "textclassifier",
}