blob: 5d26605ce37804cb590d20ebf755871ad16a7fcc [file] [log] [blame]
# Copyright 2020 The ChromiumOS Authors
# 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 = [
":libneuralnetworks",
]
if (use.test) {
deps += [
":chromeos_testrunner",
":common_testrunner",
":runtime_testrunner",
":runtime_generated_testrunner",
]
}
if (use.fuzzer) {
deps += [
":nnapi_runtime_fuzzer",
":nnapi_driver_fuzzer",
]
}
}
shared_library("libneuralnetworks") {
configs += [
":target_defaults",
]
cflags_cc = [
# libchrome/base/stl_util.h:95:33: error: unused parameter 'array'
"-Wno-unused-parameter",
]
deps = [
":ipc-nn-hal",
":nn-common",
":runtime",
":vendor-nn-hal",
]
sources = [
"chromeos/startup.cpp",
"chromeos/logger.cpp",
]
libs = [
"pthread",
]
}
pkg_config("target_defaults") {
cflags = [
"-Wall",
"-Werror",
"-Wextra",
# Enabled by default in C++20 and is triggered in tensorflow-2.12 when
# building on ARM platform. Since we're going to deprecate NNAPI eventually,
# temporarily ignore this warning to unblock the build for testing.
"-Wno-deprecated-anon-enum-enum-conversion",
]
cflags_cc = [
"-std=c++20",
# All of the HIDL generated interfaces are missing override directives.
"-Wno-inconsistent-missing-override",
# gemmlowp library has many signed with unsigned compares.
"-Wno-sign-compare",
# TODO(crbug.com/1082873): Remove use of deprecated protocol buffers.
"-Wno-deprecated-declarations",
]
ldflags = [
"-Wl,--no-as-needed",
"-Wl,--no-undefined",
]
include_dirs = [ "${sysroot}/usr/include/aosp" ]
defines = [
"__ANDROID_API__=30", # Android R
"__ANDROID_API_O_MR1__=27",
"__ANDROID_API_P__=28",
"__ANDROID_API_Q__=29",
"__ANDROID_API_R__=30",
"__ANDROID_API_S__=31",
"__ANDROID_API_FUTURE__=10000",
"NNAPI_CHROMEOS",
"NN_AIDL_V4_OR_ABOVE",
]
if (use.test) {
defines += [ "NN_DEBUGGABLE" ]
}
pkg_deps = [
"libnnapi-support",
"openssl",
"libbrillo",
"libchrome",
"libsession_manager-client",
]
}
pkg_config("common_defaults") {
configs = [
":target_defaults",
]
include_dirs = [
"chromeos/includes",
"common",
"common/include",
"common/include/nnapi",
"common/types/include",
"common/types/include/nnapi",
"common/random",
"shim_and_sl/public/",
"${sysroot}/usr/include/tensorflow",
"${sysroot}/usr/include/tensorflow/nnapi/include",
"${sysroot}/usr/include/tensorflow/nnapi/include/external/gemmlowp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/include/",
"//aosp/hardware/interfaces/neuralnetworks/1.1/utils/include/",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/include/",
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/include/",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/include/",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/include/nnapi/hal",
]
defines = [
"NN_INCLUDE_CPU_IMPLEMENTATION",
"TF_LITE_DISABLE_X86_NEON",
]
cflags_cc = [
# Many files miss field inits
"-Wno-missing-field-initializers",
# Many files have incorrect format specifiers
"-Wno-format",
]
pkg_deps = [ "libnnapi-support", "libmojo", "libminijail", ]
}
# Tests cannot be build with the NDEBUG flag set,
# but we want to allow NDEBUG for the main lib.
# Specifically, forcing NDEBUG to be always off
# will cause issues in libchrome:
# b/174605330#comment13
# Using pkg_config forces the cflags to be put at
# the end of the options string, which will allow it
# to unset the NDEBUG flag setup by the global
# cros-debug eclass. Just setting this in the
# cflags of the executable() will put this before
# the flags set by the ebuild, which will have no
# effect.
# See b/186996014 for the history on this issue.
pkg_config("disable_ndebug") {
cflags_cc = [
"-UNDEBUG",
]
pkg_deps = [ "libnnapi-support" ]
}
generate_mojom_bindings("nnapi-mojo-bindings-lib") {
mojo_root = "${platform2_root}"
use_pic = true
configs = [
":common_defaults",
]
cflags_cc = [
# Several of the libchrome headers that get pulled in require
# this warning to be squashed.
# e.g. base/scoped_generic.h (TrackAcquire)
"-Wno-unused-parameter",
]
sources = [
"chromeos/mojo_driver/mojom/nnapi_hal.mojom",
]
include_dirs = [
"chromeos/mojo_driver/mojom",
"common/include",
]
mojo_extra_args = [
"--typemap",
rebase_path("chromeos/mojo_driver/mojom/type_mappings.json"),
]
}
generate_mojom_bindings("nnapi-mojo-canonical-bindings-lib") {
mojo_root = "${platform2_root}"
use_pic = true
configs = [
":common_defaults",
]
cflags_cc = [
# Several of the libchrome headers that get pulled in require
# this warning to be squashed.
# e.g. base/scoped_generic.h (TrackAcquire)
"-Wno-unused-parameter",
]
sources = [
"chromeos/mojo_driver_canonical/mojom/IBurst.mojom",
"chromeos/mojo_driver_canonical/mojom/IDevice.mojom",
"chromeos/mojo_driver_canonical/mojom/IExecution.mojom",
"chromeos/mojo_driver_canonical/mojom/IPreparedModel.mojom",
"chromeos/mojo_driver_canonical/mojom/Types.mojom",
]
include_dirs = [
"chromeos/mojo_driver_canonical/mojom",
"common/include",
]
mojo_extra_args = [
"--typemap",
rebase_path("chromeos/mojo_driver_canonical/mojom/type_mappings.json"),
]
}
static_library("runtime") {
configs += [
":common_defaults",
":target_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
cflags_cc = [
# Stubbed out functions have unused parameters
"-Wno-unused-parameter",
"-Wno-unused-function",
]
libs = [
"dl",
]
include_dirs = [
"chromeos/config",
"common/types/include",
"common/include",
"driver/sample",
"runtime",
"runtime/include",
]
sources = [
"chromeos/compilation_caching.cpp",
"chromeos/daemon_store.cpp",
"chromeos/driver_loader/driver_loader.cpp",
"chromeos/driver_loader/driver_loader_utils.cpp",
"chromeos/config/chromeos_config_portal.cpp",
"runtime/BurstBuilder.cpp",
"runtime/CompilationBuilder.cpp",
"runtime/ExecutionBuilder.cpp",
"runtime/ExecutionCallback.cpp",
"runtime/ExecutionPlan.cpp",
"runtime/Manager.cpp",
"runtime/Memory.cpp",
"runtime/ModelArgumentInfo.cpp",
"runtime/NeuralNetworks.cpp",
"runtime/TypeManager.cpp",
"runtime/ModelArchHasher.cpp",
"common/ModelUtils.cpp",
"runtime/ModelBuilder.cpp",
]
pkg_deps = [ "libcros_config" ]
}
shared_library("nn-common") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
# Many functions ignore some parameters
"-Wno-unused-local-typedef",
"-Wno-unused-parameter",
"-Wno-unused-variable",
"-Wno-deprecated-copy",
"-Wno-unreachable-code-return",
]
deps = [
":utils_1_0",
":utils_1_1",
":utils_1_2",
":utils_1_3",
]
include_dirs = [
"driver/cache/BlobCache",
"driver/cache/nNCache",
"runtime/include",
"${sysroot}/usr/include/libtextclassifier",
]
libs = [
"dl",
"pthread",
"rt",
"tensorflowlite",
"textclassifier", # For Farmhash.
]
sources = [
"common/BufferTracker.cpp",
"common/CpuExecutor.cpp",
"common/ExecutionBurstController.cpp",
"common/ExecutionBurstServer.cpp",
"common/GraphDump.cpp",
"common/HalBufferTracker.cpp",
"common/IndexedShapeWrapper.cpp",
"common/LegacyHalUtils.cpp",
"common/LegacyUtils.cpp",
"common/MemoryUtils.cpp",
"common/MetaModel.cpp",
"common/OperationResolver.cpp",
"common/OperationsExecutionUtils.cpp",
"common/types/src/OperationsUtils.cpp",
"common/QuantUtils.cpp",
"common/types/src/SharedMemoryAndroid.cpp",
"common/TokenHasher.cpp",
"common/types/src/TypeUtils.cpp",
"common/types/src/Types.cpp",
"common/ValidateHal.cpp",
"common/types/src/Validation.cpp",
"common/operations/LogSoftmaxValidation.cpp",
"common/operations/HashtableLookupValidation.cpp",
"common/operations/ConcatenationValidation.cpp",
"common/operations/Conv2DValidation.cpp",
"common/operations/UnidirectionalSequenceLSTMValidation.cpp",
"common/operations/L2NormalizationValidation.cpp",
"common/operations/HeatmapMaxKeypointValidation.cpp",
"common/operations/SimpleMathValidation.cpp",
"common/operations/SelectValidation.cpp",
"common/operations/RankValidation.cpp",
"common/operations/RoiAlignValidation.cpp",
"common/operations/TileValidation.cpp",
"common/operations/MultinomialValidation.cpp",
"common/operations/PowValidation.cpp",
"common/operations/LogicalNotValidation.cpp",
"common/operations/SqueezeValidation.cpp",
"common/operations/TopK_V2Validation.cpp",
"common/operations/BatchMatmulValidation.cpp",
"common/operations/ExpandDimsValidation.cpp",
"common/operations/StridedSliceValidation.cpp",
"common/operations/UnidirectionalSequenceRNNValidation.cpp",
"common/operations/LSTMValidation.cpp",
"common/operations/LocalResponseNormalizationValidation.cpp",
"common/operations/DepthwiseConv2DValidation.cpp",
"common/operations/ResizeImageOpsValidation.cpp",
"common/operations/DequantizeValidation.cpp",
"common/operations/QLSTMValidation.cpp",
"common/operations/BroadcastValidation.cpp",
"common/operations/LSHProjectionValidation.cpp",
"common/operations/ReverseValidation.cpp",
"common/operations/TransposeValidation.cpp",
"common/operations/SliceValidation.cpp",
"common/operations/EmbeddingLookupValidation.cpp",
"common/operations/LogicalAndOrValidation.cpp",
"common/operations/SVDFValidation.cpp",
"common/operations/GatherValidation.cpp",
"common/operations/PoolingValidation.cpp",
"common/operations/DensifyValidation.cpp",
"common/operations/RNNValidation.cpp",
"common/operations/CastValidation.cpp",
"common/operations/ActivationValidation.cpp",
"common/operations/FillValidation.cpp",
"common/operations/ComparisonsValidation.cpp",
"common/operations/ChannelShuffleValidation.cpp",
"common/operations/ArgMinMaxValidation.cpp",
"common/operations/MirrorPadValidation.cpp",
"common/operations/SoftmaxValidation.cpp",
"common/operations/ElementwiseValidation.cpp",
"common/operations/PReluValidation.cpp",
"common/operations/SplitValidation.cpp",
"common/operations/NegValidation.cpp",
"common/operations/TransposeConv2DValidation.cpp",
"common/operations/GroupedConv2DValidation.cpp",
"common/operations/QuantizedLSTMValidation.cpp",
"common/operations/GenerateProposalsValidation.cpp",
"common/operations/InstanceNormalizationValidation.cpp",
"common/operations/ReduceValidation.cpp",
"common/operations/EluValidation.cpp",
"common/operations/QuantizeValidation.cpp",
"common/operations/BidirectionalSequenceRNNValidation.cpp",
"common/operations/MaximumMinimumValidation.cpp",
"common/operations/BidirectionalSequenceLSTMValidation.cpp",
"common/operations/RoiPoolingValidation.cpp",
"common/operations/PackValidation.cpp",
"common/operations/FullyConnectedValidation.cpp",
"common/operations/ReshapeValidation.cpp",
"common/operations/ActivationExecution.cpp",
"common/operations/ArgMinMaxExecution.cpp",
"common/operations/BatchMatmulExecution.cpp",
"common/operations/BidirectionalSequenceLSTMExecution.cpp",
"common/operations/BidirectionalSequenceRNNExecution.cpp",
"common/operations/BroadcastExecution.cpp",
"common/operations/CastExecution.cpp",
"common/operations/ChannelShuffleExecution.cpp",
"common/operations/ComparisonsExecution.cpp",
"common/operations/ConcatenationExecution.cpp",
"common/operations/Conv2DExecution.cpp",
"common/operations/DensifyExecution.cpp",
"common/operations/DepthwiseConv2DExecution.cpp",
"common/operations/DequantizeExecution.cpp",
"common/operations/ElementwiseExecution.cpp",
"common/operations/EluExecution.cpp",
"common/operations/EmbeddingLookupExecution.cpp",
"common/operations/ExpandDimsExecution.cpp",
"common/operations/FillExecution.cpp",
"common/operations/FullyConnectedExecution.cpp",
"common/operations/GatherExecution.cpp",
"common/operations/GenerateProposalsExecution.cpp",
"common/operations/GroupedConv2DExecution.cpp",
"common/operations/HashtableLookupExecution.cpp",
"common/operations/HeatmapMaxKeypointExecution.cpp",
"common/operations/InstanceNormalizationExecution.cpp",
"common/operations/L2NormalizationExecution.cpp",
"common/operations/LocalResponseNormalizationExecution.cpp",
"common/operations/LogicalAndOrExecution.cpp",
"common/operations/LogicalNotExecution.cpp",
"common/operations/LogSoftmaxExecution.cpp",
"common/operations/LSHProjectionExecution.cpp",
"common/operations/LSTMExecution.cpp",
"common/operations/MaximumMinimumExecution.cpp",
"common/operations/MirrorPadExecution.cpp",
"common/operations/MultinomialExecution.cpp",
"common/operations/NegExecution.cpp",
"common/operations/PackExecution.cpp",
"common/operations/PoolingExecution.cpp",
"common/operations/PowExecution.cpp",
"common/operations/PReluExecution.cpp",
"common/operations/QLSTMExecution.cpp",
"common/operations/QuantizeExecution.cpp",
"common/operations/QuantizedLSTMExecution.cpp",
"common/operations/RankExecution.cpp",
"common/operations/ReduceExecution.cpp",
"common/operations/ReshapeExecution.cpp",
"common/operations/ResizeImageOpsExecution.cpp",
"common/operations/ReverseExecution.cpp",
"common/operations/RNNExecution.cpp",
"common/operations/RoiAlignExecution.cpp",
"common/operations/RoiPoolingExecution.cpp",
"common/operations/SelectExecution.cpp",
"common/operations/SimpleMathExecution.cpp",
"common/operations/SliceExecution.cpp",
"common/operations/SoftmaxExecution.cpp",
"common/operations/SplitExecution.cpp",
"common/operations/SqueezeExecution.cpp",
"common/operations/StridedSliceExecution.cpp",
"common/operations/SVDFExecution.cpp",
"common/operations/TileExecution.cpp",
"common/operations/TopK_V2Execution.cpp",
"common/operations/TransposeConv2DExecution.cpp",
"common/operations/TransposeExecution.cpp",
"common/operations/UnidirectionalSequenceLSTMExecution.cpp",
"common/operations/UnidirectionalSequenceRNNExecution.cpp",
"common/random/guarded_philox_random.cc",
"common/random/random.cc",
"common/random/simple_philox.cc",
"common/types/src/OperationsValidationUtils.cpp",
"driver/cache/BlobCache/BlobCache.cpp",
"driver/cache/nnCache/nnCache.cpp",
]
}
static_library("utils_common") {
configs += [
":common_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-function"
]
include_dirs = [
"//aosp/hardware/interfaces/neuralnetworks/utils/common/include/nnapi/hal",
]
sources = [
"common/types/src/SharedMemory.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/CommonUtils.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/InvalidBuffer.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/InvalidBurst.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/InvalidDevice.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/InvalidExecution.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/InvalidPreparedModel.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/ResilientBuffer.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/ResilientBurst.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/ResilientDevice.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/ResilientExecution.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/common/src/ResilientPreparedModel.cpp",
]
}
static_library("utils_1_0") {
configs += [
":common_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
deps = [
":utils_common",
]
include_dirs = [
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/include/nnapi/hal/1.0",
]
sources = [
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/Assertions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/Burst.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/Callbacks.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/Conversions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/Device.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/Execution.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/PreparedModel.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.0/utils/src/ProtectCallback.cpp",
]
}
static_library("utils_1_1") {
configs += [
":common_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
deps = [
":utils_common",
]
include_dirs = [
"//aosp/hardware/interfaces/neuralnetworks/1.1/utils/include/nnapi/hal/1.1",
]
sources = [
"//aosp/hardware/interfaces/neuralnetworks/1.1/utils/src/Assertions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.1/utils/src/Conversions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.1/utils/src/Device.cpp",
]
}
static_library("utils_1_2") {
configs += [
":common_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
deps = [
":utils_common",
]
include_dirs = [
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/include/nnapi/hal/1.2",
]
sources = [
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/Assertions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/Callbacks.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/Conversions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/Device.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/Execution.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/Burst.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/BurstUtils.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.2/utils/src/PreparedModel.cpp",
]
}
static_library("utils_1_3") {
configs += [
":common_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
deps = [
":utils_common",
]
include_dirs = [
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/include/nnapi/hal/1.3",
]
sources = [
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/src/Assertions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/src/Buffer.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/src/Callbacks.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/src/Conversions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/src/Device.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/src/Execution.cpp",
"//aosp/hardware/interfaces/neuralnetworks/1.3/utils/src/PreparedModel.cpp",
]
}
static_library("utils_aidl") {
configs += [
":common_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
deps = [
":utils_common",
]
include_dirs = [
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/include",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/include/nnapi/hal/aidl",
]
sources = [
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Assertions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Buffer.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/BufferTracker.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Burst.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Callbacks.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Conversions.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Device.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Execution.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/HalUtils.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/InvalidDevice.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/PreparedModel.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/ProtectCallback.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/Utils.cpp",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/src/ValidateHal.cpp",
]
}
shared_library("vendor-nn-hal") {
configs += [
":common_defaults",
":target_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
]
deps = [
":full-driver",
":nn-common",
]
include_dirs = [
"chromeos/config",
"driver/sample",
"driver/sample_hidl",
"runtime/include",
]
libs = [
"pthread",
"rt",
"tensorflowlite",
"textclassifier", # For Farmhash.
]
sources = [
"chromeos/config/chromeos_config_portal.cpp",
"chromeos/driver_provider/sample_driver_provider.cpp",
"chromeos/driver_provider/sample_driver_provider_hidl.cpp",
"chromeos/driver_provider/sample_driver_provider_util.cpp",
]
pkg_deps = [ "libcros_config" ]
}
shared_library("ipc-nn-hal") {
configs += [
":common_defaults",
":target_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
]
deps = [
":full-driver",
#":mojo-driver",
":mojo-driver-canonical",
":nn-common",
":vendor-nn-hal",
]
include_dirs = [
"chromeos/config",
"chromeos/driver_loader",
"chromeos/mojo_driver_canonical",
"runtime/include",
]
libs = [
"pthread",
"rt",
"tensorflowlite",
"textclassifier", # For Farmhash.
]
sources = [
"chromeos/config/chromeos_config_portal.cpp",
"chromeos/driver_provider/ipc_driver_provider.cpp",
]
pkg_deps = [ "libcros_config" ]
}
shared_library("full-driver") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
"-Wno-unused-lambda-capture",
"-Wno-unused-function"
]
deps = [
":nn-common",
]
include_dirs = [
"driver/sample",
"driver/sample_hidl",
"runtime/include",
]
sources = [
"driver/sample_hidl/SampleDriver.cpp",
"driver/sample_hidl/SampleDriverFull.cpp",
"driver/sample_hidl/SampleDriverPartial.cpp",
"driver/sample_hidl/SampleDriverUtils.cpp",
]
libs = [
"pthread",
]
}
shared_library("canonical-driver") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
"-Wno-unused-lambda-capture",
"-Wno-unused-function"
]
deps = [
":nn-common",
]
include_dirs = [
"driver/sample",
"runtime/include",
]
sources = [
"driver/sample/CanonicalBuffer.cpp",
"driver/sample/CanonicalBurst.cpp",
"driver/sample/CanonicalDevice.cpp",
"driver/sample/CanonicalPreparedModel.cpp",
"driver/sample/LimitedSupportDevice.cpp",
"driver/sample/SampleDriverSL.cpp",
]
libs = [
"pthread",
]
}
static_library("utils_adapter") {
configs += [
":common_defaults",
"//common-mk:pic",
"//common-mk:visibility_default",
]
deps = [
":utils_common",
]
include_dirs = [
"//aosp/hardware/interfaces/neuralnetworks/utils/adapter/aidl/include/nnapi/hal/aidl",
"//aosp/hardware/interfaces/neuralnetworks/utils/adapter/aidl/include",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/include",
"//aosp/hardware/interfaces/neuralnetworks/aidl/utils/include/nnapi/hal/aidl",
]
sources = [
"//aosp/hardware/interfaces/neuralnetworks/utils/adapter/aidl/src/Adapter.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/adapter/aidl/src/Buffer.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/adapter/aidl/src/Burst.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/adapter/aidl/src/Device.cpp",
"//aosp/hardware/interfaces/neuralnetworks/utils/adapter/aidl/src/PreparedModel.cpp",
]
}
shared_library("mojo-driver") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
"-Wno-unused-lambda-capture",
"-Wno-unused-function"
]
deps = [
":full-driver", # TODO: Remove once dependency on SampleDriverFull is removed
":nn-common",
":nnapi_worker",
":nnapi-mojo-bindings-lib",
]
include_dirs = [
"driver/sample_hidl",
"runtime/include",
]
sources = [
"chromeos/mojo_driver/ipc_driver.cpp",
"chromeos/mojo_driver/ipc_driver_support.cpp",
"chromeos/mojo_driver/mojo_controller.cpp",
"chromeos/mojo_driver/nnapi_hal_impl.cpp",
"chromeos/mojo_driver/nnapi_stubs.cpp",
"chromeos/mojo_driver/sample_driver.cpp",
]
libs = [
"pthread",
]
}
shared_library("mojo-driver-canonical") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
"-Wno-unused-lambda-capture",
"-Wno-unused-function"
]
deps = [
":nn-common",
":nnapi_worker_canonical",
":nnapi-mojo-canonical-bindings-lib",
":vendor-nn-hal",
]
include_dirs = [
"runtime/include",
"chromeos",
"chromeos/driver_loader",
]
sources = [
"chromeos/mojo_driver_canonical/ipc_driver_canonical.cpp",
"chromeos/mojo_driver_canonical/mojo_controller_canonical.cpp",
"chromeos/mojo_driver_canonical/prepared_model_stub.cpp",
"chromeos/mojo_driver_canonical/burst_stub.cpp",
"chromeos/mojo_driver_canonical/execution_stub.cpp",
"chromeos/mojo_driver_canonical/callbacks_stub.cpp",
]
libs = [
"pthread",
]
}
executable("nnapi_worker") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
"-Wno-unused-lambda-capture",
"-Wno-unused-function"
]
deps = [
":full-driver", # TODO: Remove once dependency on SampleDriverFull is removed
":nn-common",
":nnapi-mojo-bindings-lib",
":vendor-nn-hal",
]
include_dirs = [
"driver/sample_hidl",
"runtime/include",
]
sources = [
"chromeos/mojo_driver/nnapi_hal_impl.cpp",
"chromeos/mojo_driver/nnapi_stubs.cpp",
"chromeos/mojo_driver/sample_driver.cpp",
"chromeos/mojo_driver/worker.cpp",
"chromeos/mojo_driver/worker_main.cpp",
"chromeos/logger.cpp",
]
libs = [
"pthread",
]
}
executable("nnapi_worker_canonical") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
"-Wno-unused-lambda-capture",
"-Wno-unused-function"
]
deps = [
":nn-common",
":nnapi-mojo-canonical-bindings-lib",
":vendor-nn-hal",
]
include_dirs = [
"runtime/include",
"chromeos",
"chromeos/driver_loader",
]
sources = [
"chromeos/logger.cpp",
"chromeos/mojo_driver_canonical/nnapi_iburst_impl.cpp",
"chromeos/mojo_driver_canonical/nnapi_idevice_impl.cpp",
"chromeos/mojo_driver_canonical/nnapi_iexecution_impl.cpp",
"chromeos/mojo_driver_canonical/nnapi_iprepared_model_impl.cpp",
"chromeos/mojo_driver_canonical/worker_canonical.cpp",
"chromeos/mojo_driver_canonical/worker_main_canonical.cpp",
]
libs = [
"pthread",
]
}
shared_library("xnn-driver") {
configs += [
":common_defaults",
"//common-mk:visibility_default",
]
cflags_cc = [
"-Wno-unused-parameter",
"-Wno-unused-lambda-capture",
"-Wno-unused-function"
]
deps = [
":nn-common",
]
include_dirs = [
"driver/sample",
"driver/sample_hidl",
"runtime/include",
"${sysroot}/usr/include/tensorflow/xnnpack",
]
sources = [
"driver/sample_hidl/SampleDriver.cpp",
"driver/sample_hidl/SampleDriverFloatXNNPACK.cpp",
"driver/sample_hidl/SampleDriverPartial.cpp",
"driver/sample_hidl/SampleDriverUtils.cpp",
]
# XNNPACK Libs
xnnpack_libs = [
"clog",
"cpuinfo_impl.pic",
"pthreadpool",
"xnnpack_for_tflite",
"scalar_prod_microkernels",
"indirection",
"memory_planner",
"operators",
"operator_run",
"packing",
"tables"
]
# platform specific libs
if (current_cpu == "arm" || current_cpu == "arm64") {
xnnpack_libs += [
"neon_prod_microkernels",
"neondot_prod_microkernels",
"neonfma_prod_microkernels",
"neonv8_prod_microkernels",
"asm_microkernels",
]
} else if (current_cpu == "x64" || current_cpu == "x86") {
xnnpack_libs += [
"avx_prod_microkernels",
"avx2_prod_microkernels",
"avx512f_prod_microkernels",
"avx512skx_prod_microkernels",
"fma3_prod_microkernels",
"sse2_prod_microkernels",
"ssse3_prod_microkernels",
"sse41_prod_microkernels",
]
}
libs = [
"pthread"
] + xnnpack_libs
}
if (use.test) {
static_library("generated_test_harness") {
include_dirs = [
"tools/test_generator/test_harness/include",
]
configs += [
":target_defaults",
"//common-mk:test",
]
sources = [
"tools/test_generator/test_harness/TestHarness.cpp",
]
}
static_library("nn_testrunner") {
configs += [
"//common-mk:test",
":target_defaults",
]
cflags_cc = [
"-Wno-unused-parameter",
]
deps = []
sources = [
"chromeos/logger.cpp",
"chromeos/testrunner.cpp",
"chromeos/testrunner_messageloop.cpp",
]
}
executable("runtime_testrunner") {
include_dirs = [
"driver/sample",
"driver/sample_hidl",
"runtime",
"chromeos",
"runtime/include",
"tools/test_generator/test_harness/include",
]
cflags_cc = [
# TestPartitioning moving local object in return statements
"-Wno-pessimizing-move",
"-Wno-unused-function"
]
configs += [
":disable_ndebug",
":target_defaults",
":common_defaults",
"//common-mk:test",
]
deps = [
":full-driver",
":generated_test_harness",
":ipc-nn-hal",
":nn-common",
":nn_testrunner",
":runtime",
":vendor-nn-hal",
"chromeos/tests/runtime/generated:all",
]
libs = [
"rt", # For shm_*
"dl",
"textclassifier", # For Farmhash.
"tensorflowlite",
]
sources = [
# "chromeos/tests/runtime/sampledriver_test.cc",
"runtime/test/GeneratedTestUtils.cpp",
"runtime/test/PreparedModelCallback.cpp",
"runtime/test/RequireDebug.cpp",
"runtime/test/TestAssertions.cpp",
"runtime/test/TestCompilationCaching.cpp",
"runtime/test/TestCompliance.cpp",
"runtime/test/TestControlFlow.cpp",
"runtime/test/TestExecution.cpp",
# "runtime/test/TestExtensions.cpp", # Not supported on ChromeOS
"runtime/test/TestFailingDriver.cpp",
"runtime/test/TestFree.cpp",
"runtime/test/TestIntrospectionControl.cpp",
"runtime/test/TestMemory.cpp",
"runtime/test/TestMemoryDomain.cpp",
"runtime/test/TestMemoryInternal.cpp",
"runtime/test/TestNeuralNetworksWrapper.cpp",
# "runtime/test/TestOpenmpSettings.cpp", # not needed
"runtime/test/TestOperandExtraParams.cpp",
"runtime/test/TestPartitioning.cpp",
"runtime/test/TestPartitioningRandom.cpp",
"runtime/test/TestRemoveDefaultArguments.cpp",
"runtime/test/TestTrivialModel.cpp",
"runtime/test/TestUnknownDimensions.cpp",
"runtime/test/TestUnspecifiedDimensions.cpp",
"runtime/test/TestValidateModel.cpp",
"runtime/test/TestValidateOperations.cpp",
"runtime/test/TestValidation.cpp",
"runtime/test/TestWrapper.cpp",
]
}
executable("runtime_xnn_testrunner") {
include_dirs = [
"driver/sample",
"runtime",
"chromeos",
"runtime/include",
"tools/test_generator/test_harness/include",
"${sysroot}/usr/include/tensorflow/xnnpack",
]
cflags_cc = [
# TestPartitioning moving local object in return statements
"-Wno-pessimizing-move",
]
configs += [
":disable_ndebug",
":target_defaults",
":common_defaults",
"//common-mk:test",
]
deps = [
":generated_test_harness",
":ipc-nn-hal",
":nn-common",
":nn_testrunner",
":runtime",
":vendor-nn-hal",
":xnn-driver"
]
sources = [
"chromeos/tests/runtime/sampledriver_xnn_test.cc"
]
}
executable("runtime_generated_testrunner") {
include_dirs = [
"driver/sample",
"runtime",
"runtime/include",
"shim_and_sl/include",
"tools/test_generator/test_harness/include",
]
configs += [
":target_defaults",
":common_defaults",
"//common-mk:test",
]
deps = [
":nn-common",
":generated_test_harness",
":ipc-nn-hal",
":nn_testrunner",
":runtime",
":vendor-nn-hal",
"chromeos/tests/runtime/generated:all",
]
libs = [
"rt", # For shm_*
"dl",
"textclassifier", # For Farmhash.
"tensorflowlite",
]
sources = [
"chromeos/tests/runtime/generated_test_loader_V1_0.cc",
"chromeos/tests/runtime/generated_test_loader_V1_1.cc",
"chromeos/tests/runtime/generated_test_loader_V1_2.cc",
"chromeos/tests/runtime/generated_test_loader_V1_3.cc",
"chromeos/tests/runtime/generated_test_loader_V1_3_cts.cc",
"runtime/test/GeneratedTestUtils.cpp",
"runtime/test/TestNeuralNetworksWrapper.cpp",
"runtime/test/TestGenerated.cpp",
]
}
executable("chromeos_testrunner") {
include_dirs = [
"chromeos",
"chromeos/config",
"common/random",
]
configs += [
":common_defaults",
"//common-mk:test",
]
cflags_cc = [
# Eigen functions have unused parameters in release builds.
"-Wno-unused-parameter",
]
deps = [
":nn-common",
":nn_testrunner",
":runtime",
]
sources = [
"chromeos/tests/common/daemon_store_test.cc",
"chromeos/tests/common/includes_test.cc",
"chromeos/tests/common/logger_enum_test.cc",
"chromeos/tests/common/random_test.cc",
"chromeos/tests/common/chromeos_config_portal_test.cc",
]
}
executable("common_testrunner") {
include_dirs = [
"driver/cache/BlobCache",
"driver/cache/nNCache",
"runtime/include",
]
configs += [
":common_defaults",
"//common-mk:test",
]
deps = [
":ipc-nn-hal",
":nn-common",
":nn_testrunner",
":runtime",
":vendor-nn-hal",
]
libs = [
"rt",
"dl",
"tensorflowlite",
"textclassifier", # For Farmhash.
]
cflags_cc = [
# UtilsTest.cpp transitively incl lite/experimental/ruy/check_macros.h:30
"-Wno-unused-parameter",
]
sources = [
"common/LogTagTest.cpp",
"common/LogTagTestExtra.cpp",
"common/UtilsTest.cpp",
"common/operations/EmbeddingLookupTest.cpp",
"common/operations/HashtableLookupTest.cpp",
"common/operations/LayerNormLSTMTest.cpp",
"common/operations/LSHProjectionTest.cpp",
"common/operations/LSTMTest.cpp",
"common/operations/MultinomialTest.cpp",
"common/operations/QuantizedLSTMTest.cpp",
"common/operations/RNNTest.cpp",
"common/operations/SVDFTest.cpp",
"driver/cache/BlobCache/BlobCache_test.cpp",
"driver/cache/nnCache/nnCache_test.cpp",
]
}
}
if (use.fuzzer) {
pkg_config("fuzzer_defaults") {
include_dirs = [
"common/include",
"runtime/include",
"common/types/include",
"driver/sample",
"tools/test_generator/test_harness/include",
"tools/test_generator/test_harness/include_legacy",
]
pkg_deps = [
"libprotobuf-mutator",
"protobuf",
]
}
proto_library("fuzzer_proto") {
proto_in_dir = "runtime/test/android_fuzzing"
proto_out_dir = "include"
sources = [ "${proto_in_dir}/Model.proto" ]
}
static_library("fuzzer_lib") {
configs += [
":fuzzer_defaults",
":target_defaults",
]
sources = [
"runtime/test/android_fuzzing/Converter.cpp",
"runtime/test/android_fuzzing/FuzzHarness.cpp",
"runtime/test/android_fuzzing/StaticAssert.cpp",
]
deps = [
":fuzzer_proto"
]
}
executable("nnapi_runtime_fuzzer") {
configs += [
"//common-mk/common_fuzzer",
":fuzzer_defaults",
":target_defaults",
]
deps = [
":fuzzer_lib",
":libneuralnetworks",
":nn-common",
]
sources = [
"runtime/test/android_fuzzing/FuzzTest.cpp",
]
}
executable("nnapi_driver_fuzzer") {
configs += [
"//common-mk/common_fuzzer",
":fuzzer_defaults",
":target_defaults",
]
deps = [
":fuzzer_lib",
":libneuralnetworks",
":nn-common",
]
sources = [
"runtime/test/android_fuzzing/DriverFuzzTest.cpp",
"driver/sample/CanonicalDevice.cpp",
"driver/sample/CanonicalPreparedModel.cpp",
"driver/sample/CanonicalBuffer.cpp",
"driver/sample/CanonicalBurst.cpp",
"tools/test_generator/test_harness/TestUtils.cpp",
]
}
}