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 15# Useful environment variables that can be set on the mmma command line, as 16# <key>=<value> pairs: 17# 18# LIBTEXTCLASSIFIER_STRIP_OPTS: (optional) value for LOCAL_STRIP_MODULE (for all 19# modules we build). NOT for prod builds. Can be set to keep_symbols for 20# debug / treemap purposes. 21 22 23LOCAL_PATH := $(call my-dir) 24 25# Custom C/C++ compilation flags: 26MY_LIBTEXTCLASSIFIER_WARNING_CFLAGS := \ 27 -Wall \ 28 -Werror \ 29 -Wno-ignored-qualifiers \ 30 -Wno-missing-field-initializers \ 31 -Wno-sign-compare \ 32 -Wno-tautological-constant-out-of-range-compare \ 33 -Wno-undefined-var-template \ 34 -Wno-unused-function \ 35 -Wno-unused-parameter \ 36 37MY_LIBTEXTCLASSIFIER_CFLAGS := \ 38 $(MY_LIBTEXTCLASSIFIER_WARNING_CFLAGS) \ 39 -fvisibility=hidden \ 40 -DLIBTEXTCLASSIFIER_UNILIB_ICU \ 41 -DZLIB_CONST 42 43# Only enable debug logging in userdebug/eng builds. 44ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) 45 MY_LIBTEXTCLASSIFIER_CFLAGS += -DTC_DEBUG_LOGGING=1 46endif 47 48# ----------------- 49# flatbuffers 50# ----------------- 51 52# Empty static library so that other projects can include just the basic 53# FlatBuffers headers as a module. 54include $(CLEAR_VARS) 55LOCAL_MODULE := flatbuffers 56LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include 57LOCAL_EXPORT_CPPFLAGS := -std=c++11 -fexceptions -Wall \ 58 -DFLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE 59 60include $(BUILD_STATIC_LIBRARY) 61 62# ----------------- 63# libtextclassifier 64# ----------------- 65 66include $(CLEAR_VARS) 67LOCAL_MODULE := libtextclassifier 68 69LOCAL_CPP_EXTENSION := .cc 70LOCAL_CFLAGS += $(MY_LIBTEXTCLASSIFIER_CFLAGS) 71LOCAL_STRIP_MODULE := $(LIBTEXTCLASSIFIER_STRIP_OPTS) 72 73LOCAL_SRC_FILES := $(filter-out tests/% %_test.cc test-util.%,$(call all-subdir-cpp-files)) 74 75LOCAL_C_INCLUDES := $(TOP)/external/zlib 76LOCAL_C_INCLUDES += $(TOP)/external/tensorflow 77LOCAL_C_INCLUDES += $(TOP)/external/flatbuffers/include 78 79LOCAL_SHARED_LIBRARIES += liblog 80LOCAL_SHARED_LIBRARIES += libicuuc 81LOCAL_SHARED_LIBRARIES += libicui18n 82LOCAL_SHARED_LIBRARIES += libtflite 83LOCAL_SHARED_LIBRARIES += libz 84 85LOCAL_STATIC_LIBRARIES += flatbuffers 86 87LOCAL_REQUIRED_MODULES := textclassifier.en.model 88LOCAL_REQUIRED_MODULES += textclassifier.universal.model 89 90LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/jni.lds 91LOCAL_LDFLAGS += -Wl,-version-script=$(LOCAL_PATH)/jni.lds 92LOCAL_CPPFLAGS_32 += -DLIBTEXTCLASSIFIER_TEST_DATA_DIR="\"/data/nativetest/libtextclassifier_tests/test_data/\"" 93LOCAL_CPPFLAGS_64 += -DLIBTEXTCLASSIFIER_TEST_DATA_DIR="\"/data/nativetest64/libtextclassifier_tests/test_data/\"" 94 95include $(BUILD_SHARED_LIBRARY) 96 97# ----------------------- 98# libtextclassifier_tests 99# ----------------------- 100 101include $(CLEAR_VARS) 102 103LOCAL_MODULE := libtextclassifier_tests 104LOCAL_COMPATIBILITY_SUITE := device-tests 105LOCAL_MODULE_TAGS := tests 106 107LOCAL_CPP_EXTENSION := .cc 108LOCAL_CFLAGS += $(MY_LIBTEXTCLASSIFIER_CFLAGS) 109LOCAL_STRIP_MODULE := $(LIBTEXTCLASSIFIER_STRIP_OPTS) 110 111LOCAL_TEST_DATA := $(call find-test-data-in-subdirs, $(LOCAL_PATH), *, test_data) 112 113LOCAL_CPPFLAGS_32 += -DLIBTEXTCLASSIFIER_TEST_DATA_DIR="\"/data/nativetest/libtextclassifier_tests/test_data/\"" 114LOCAL_CPPFLAGS_64 += -DLIBTEXTCLASSIFIER_TEST_DATA_DIR="\"/data/nativetest64/libtextclassifier_tests/test_data/\"" 115 116LOCAL_SRC_FILES := $(call all-subdir-cpp-files) 117 118LOCAL_C_INCLUDES := $(TOP)/external/zlib 119LOCAL_C_INCLUDES += $(TOP)/external/tensorflow 120LOCAL_C_INCLUDES += $(TOP)/external/flatbuffers/include 121 122LOCAL_STATIC_LIBRARIES += libgmock 123LOCAL_SHARED_LIBRARIES += liblog 124LOCAL_SHARED_LIBRARIES += libicuuc 125LOCAL_SHARED_LIBRARIES += libicui18n 126LOCAL_SHARED_LIBRARIES += libtflite 127LOCAL_SHARED_LIBRARIES += libz 128 129LOCAL_STATIC_LIBRARIES += flatbuffers 130 131include $(BUILD_NATIVE_TEST) 132 133# ---------------------- 134# Smart Selection models 135# ---------------------- 136 137include $(CLEAR_VARS) 138LOCAL_MODULE := textclassifier.en.model 139LOCAL_MODULE_CLASS := ETC 140LOCAL_MODULE_OWNER := google 141LOCAL_SRC_FILES := ./models/textclassifier.en.model 142LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/textclassifier 143include $(BUILD_PREBUILT) 144 145include $(CLEAR_VARS) 146LOCAL_MODULE := textclassifier.universal.model 147LOCAL_MODULE_CLASS := ETC 148LOCAL_MODULE_OWNER := google 149LOCAL_SRC_FILES := ./models/textclassifier.universal.model 150LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/textclassifier 151include $(BUILD_PREBUILT) 152 153# ----------------------- 154# Smart Selection bundles 155# ----------------------- 156 157include $(CLEAR_VARS) 158LOCAL_MODULE := textclassifier.bundle1 159LOCAL_REQUIRED_MODULES := textclassifier.en.model 160LOCAL_CFLAGS := $(MY_LIBTEXTCLASSIFIER_WARNING_CFLAGS) 161include $(BUILD_STATIC_LIBRARY) 162