| # 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", |
| ] |
| } |
| } |