blob: edaa34a851768474d758ae1e3630601da6d5195f [file] [log] [blame]
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//common-mk/mojom_bindings_generator.gni")
import("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")
group("all") {
deps = [
":ml_cmdline",
":ml_service",
]
if (use.test) {
deps += [
":ml_cmdline_test",
":ml_service_test",
]
}
if (use.fuzzer) {
deps += [
":ml_service_impl_fuzzer",
":ml_service_load_flatbuffer_fuzzer",
]
}
}
generate_mojom_bindings("ml_mojo_bindings") {
mojo_root = "${platform2_root}"
sources = [
"mojom/graph_executor.mojom",
"mojom/handwriting_recognizer.mojom",
"mojom/machine_learning_service.mojom",
"mojom/model.mojom",
"mojom/soda.mojom",
"mojom/tensor.mojom",
"mojom/text_classifier.mojom",
"mojom/time.mojom",
]
mojo_extra_args = [
"--typemap",
rebase_path("mojom/type_mappings.json"),
]
}
source_set("ml_mojo_bindings_lib") {
sources = [ "mojom/time_mojom_traits.h" ]
public_deps = [ ":ml_mojo_bindings" ]
}
pkg_config("ml_common_pkg_deps") {
pkg_deps = [
"libbrillo",
"libchrome-${libbase_ver}",
"libmetrics",
"libmojo-${libbase_ver}",
"system_api",
"zlib",
]
}
proto_library("ml_handwriting_proto") {
proto_in_dir = "${sysroot}/usr/include/chromeos/libhandwriting/proto"
proto_out_dir = "chrome/knowledge/handwriting/"
sources = [
"${proto_in_dir}/handwriting_interface.proto",
"${proto_in_dir}/handwriting_validate.proto",
]
}
proto_library("ml_soda_proto") {
proto_in_dir = "${sysroot}/usr/include/chromeos/libsoda/proto"
proto_out_dir = "chrome/knowledge/soda/"
sources = [ "${proto_in_dir}/extended_soda_api.proto" ]
}
static_library("ml_common") {
include_dirs = [
"${sysroot}/usr/include/icu-chrome/common",
"${sysroot}/usr/include/icu-chrome/i18n",
"${sysroot}/usr/include/libtextclassifier",
"${sysroot}/usr/include/tensorflow",
]
libs = [
"icui18n-chrome",
"icuuc-chrome",
"tensorflowlite",
"textclassifier",
"utf",
]
pkg_deps = [ "protobuf" ]
deps = [ ":ml_handwriting_proto" ]
public_deps = [ ":ml_mojo_bindings_lib" ]
all_dependent_configs = [ ":ml_common_pkg_deps" ]
sources = [
"daemon.cc",
"dlcservice_client.cc",
"graph_executor_impl.cc",
"handwriting.cc",
"handwriting_proto_mojom_conversion.cc",
"handwriting_recognizer_impl.cc",
"machine_learning_service_impl.cc",
"metrics.cc",
"model_impl.cc",
"model_metadata.cc",
"request_metrics.cc",
"tensor_view.cc",
"text_classifier_impl.cc",
"util.cc",
]
if (use.ondevice_speech) {
sources += [
"soda.cc",
"soda_recognizer_impl.cc",
]
deps += [ ":ml_soda_proto" ]
} else {
sources += [ "soda_recognizer_impl_dummy.cc" ]
}
defines = [
"USE_ONDEVICE_HANDWRITING=${use.ondevice_handwriting}",
"USE_ONDEVICE_HANDWRITING_DLC=${use.ondevice_handwriting_dlc}",
"TC3_VOCAB_ANNOTATOR_DUMMY",
]
}
static_library("ml_cmdline_common") {
deps = [ ":ml_common" ]
sources = [ "simple.cc" ]
}
executable("ml_service") {
deps = [ ":ml_common" ]
sources = [ "main.cc" ]
}
executable("ml_cmdline") {
include_dirs = [ "${sysroot}/usr/include/tensorflow" ]
deps = [ ":ml_cmdline_common" ]
sources = [ "command_line.cc" ]
}
if (use.test) {
executable("ml_service_test") {
configs += [ "//common-mk:test" ]
include_dirs = [ "${sysroot}/usr/include/tensorflow" ]
deps = [
":ml_common",
":ml_handwriting_proto",
"//common-mk/testrunner:testrunner",
]
sources = [
"dlcservice_client_test.cc",
"graph_executor_impl_test.cc",
"handwriting_proto_mojom_conversion_test.cc",
"handwriting_test.cc",
"machine_learning_service_impl_test.cc",
"model_impl_test.cc",
"test_utils.cc",
"testrunner.cc",
"util_test.cc",
]
defines = [
"USE_ONDEVICE_HANDWRITING=${use.ondevice_handwriting}",
"USE_ONDEVICE_HANDWRITING_DLC=${use.ondevice_handwriting_dlc}",
]
if (use.ondevice_speech && !use.asan) {
defines += [ "USE_ONDEVICE_SPEECH" ]
sources += [ "soda_test.cc" ]
}
}
executable("ml_cmdline_test") {
configs += [ "//common-mk:test" ]
include_dirs = [ "${sysroot}/usr/include/tensorflow" ]
deps = [ ":ml_cmdline_common" ]
sources = [
"simple_test.cc",
"testrunner.cc",
]
}
}
# Fuzzer target.
if (use.fuzzer) {
executable("ml_service_impl_fuzzer") {
configs += [ "//common-mk/common_fuzzer:common_fuzzer" ]
deps = [ ":ml_common" ]
sources = [ "fuzzers/ml_service_impl_fuzzer.cc" ]
}
executable("ml_service_load_flatbuffer_fuzzer") {
configs += [ "//common-mk/common_fuzzer" ]
deps = [ ":ml_common" ]
sources = [ "fuzzers/ml_service_load_flatbuffer_fuzzer.cc" ]
}
}