/* * Copyright 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. */ package { // Inherits all licenses from parent to get Apache 2.0 and package name default_applicable_licenses: [ "packages_modules_NeuralNetworks_license", ], } cc_library_headers { name: "libneuralnetworks_common_headers", host_supported: true, export_include_dirs: ["include"], } // The following files took too much time to compile with clang-tidy. tidy_disabled_common_operations_files = [ "cpu_operations/Activation.cpp", "cpu_operations/Broadcast.cpp", "cpu_operations/Concatenation.cpp", "cpu_operations/Conv2D.cpp", "cpu_operations/FullyConnected.cpp", "cpu_operations/L2Normalization.cpp", "cpu_operations/LocalResponseNormalization.cpp", "cpu_operations/PRelu.cpp", "cpu_operations/Pooling.cpp", "cpu_operations/Reshape.cpp", "cpu_operations/SimpleMath.cpp", "cpu_operations/Softmax.cpp", "cpu_operations/Transpose.cpp", ] cc_defaults { name: "neuralnetworks_operations", host_supported: true, local_include_dirs: ["types/operations/include"], srcs: [ "OperationResolver.cpp", "cpu_operations/Activation.cpp", "cpu_operations/BatchMatmul.cpp", "cpu_operations/BidirectionalSequenceRNN.cpp", "cpu_operations/Broadcast.cpp", "cpu_operations/ChannelShuffle.cpp", "cpu_operations/Comparisons.cpp", "cpu_operations/Concatenation.cpp", "cpu_operations/Conv2D.cpp", "cpu_operations/Densify.cpp", "cpu_operations/DepthwiseConv2D.cpp", "cpu_operations/Dequantize.cpp", "cpu_operations/Elementwise.cpp", "cpu_operations/Elu.cpp", "cpu_operations/Fill.cpp", "cpu_operations/FullyConnected.cpp", "cpu_operations/Gather.cpp", "cpu_operations/GenerateProposals.cpp", "cpu_operations/HeatmapMaxKeypoint.cpp", "cpu_operations/InstanceNormalization.cpp", "cpu_operations/L2Normalization.cpp", "cpu_operations/LocalResponseNormalization.cpp", "cpu_operations/LogSoftmax.cpp", "cpu_operations/LogicalAndOr.cpp", "cpu_operations/LogicalNot.cpp", "cpu_operations/MirrorPad.cpp", "cpu_operations/Neg.cpp", "cpu_operations/PRelu.cpp", "cpu_operations/Pack.cpp", "cpu_operations/Pooling.cpp", "cpu_operations/QLSTM.cpp", "cpu_operations/Quantize.cpp", "cpu_operations/Rank.cpp", "cpu_operations/Reduce.cpp", "cpu_operations/ResizeImageOps.cpp", "cpu_operations/Reverse.cpp", "cpu_operations/RoiAlign.cpp", "cpu_operations/RoiPooling.cpp", "cpu_operations/Select.cpp", "cpu_operations/Slice.cpp", "cpu_operations/Softmax.cpp", "cpu_operations/Squeeze.cpp", "cpu_operations/StridedSlice.cpp", "cpu_operations/TopK_V2.cpp", "cpu_operations/Transpose.cpp", "cpu_operations/TransposeConv2D.cpp", "cpu_operations/UnidirectionalSequenceLSTM.cpp", "cpu_operations/UnidirectionalSequenceRNN.cpp", ], tidy_disabled_srcs: tidy_disabled_common_operations_files, } // libneuralnetworks_common* provides common utilities for the NNAPI runtime, drivers, and tests to // use. Two variants of the common library are provided: // - libneuralnetworks_common: the common library, used by NNAPI runtime and tests. // - libneuralnetworks_common_experimental: the common library with NN_EXPERIMENTAL_FEATURE flag // turned on, used by NNAPI drivers and tests for experimental features. // // Both variants of the common library also link against all versions (1.0-3) of the NNAPI HIDL // library. // cc_defaults { name: "libneuralnetworks_common_defaults", defaults: [ "neuralnetworks_defaults", "neuralnetworks_operations", ], host_supported: true, apex_available: [ "//apex_available:platform", "com.android.neuralnetworks", "test_com.android.neuralnetworks", ], vendor_available: true, // b/109953668, disable OpenMP // openmp: true, export_include_dirs: [ "include", ], srcs: [ "ActivationFunctor.cpp", "BufferTracker.cpp", "CpuExecutor.cpp", "ExecutionBurstController.cpp", "ExecutionBurstServer.cpp", "GraphDump.cpp", "HalBufferTracker.cpp", "IndexedShapeWrapper.cpp", "LegacyHalUtils.cpp", "LegacyUtils.cpp", "MemoryUtils.cpp", "MetaModel.cpp", "ModelUtils.cpp", "OperationsExecutionUtils.cpp", "QuantUtils.cpp", "TokenHasher.cpp", "ValidateHal.cpp", "cpu_operations/ArgMinMax.cpp", "cpu_operations/BidirectionalSequenceLSTM.cpp", "cpu_operations/Cast.cpp", "cpu_operations/EmbeddingLookup.cpp", "cpu_operations/ExpandDims.cpp", "cpu_operations/GroupedConv2D.cpp", "cpu_operations/HashtableLookup.cpp", "cpu_operations/LSHProjection.cpp", "cpu_operations/LSTM.cpp", "cpu_operations/MaximumMinimum.cpp", "cpu_operations/Multinomial.cpp", "cpu_operations/Pow.cpp", "cpu_operations/QuantizedLSTM.cpp", "cpu_operations/RNN.cpp", "cpu_operations/Reshape.cpp", "cpu_operations/SVDF.cpp", "cpu_operations/SimpleMath.cpp", "cpu_operations/Split.cpp", "cpu_operations/Tile.cpp", ], shared_libs: [ "android.hardware.neuralnetworks@1.0", "android.hardware.neuralnetworks@1.1", "android.hardware.neuralnetworks@1.2", "android.hardware.neuralnetworks@1.3", "android.hidl.allocator@1.0", "android.hidl.memory@1.0", "libbase", "libcutils", "libfmq", "libhidlbase", "libhidlmemory", "liblog", "libutils", ], target: { android: { shared_libs: ["libnativewindow"], }, host: { cflags: [ "-D__INTRODUCED_IN(x)=", ], }, }, header_libs: [ "gemmlowp_headers", "libeigen", "libneuralnetworks_headers", "libtextclassifier_hash_headers", "philox_random_headers", "tensorflow_headers", ], whole_static_libs: [ "libarect", "libtflite_kernel_utils", "neuralnetworks_types", "neuralnetworks_utils_hal_1_0", // TODO(b/160669116): Remove VNDK dependencies. "neuralnetworks_utils_hal_1_1", "neuralnetworks_utils_hal_1_2", "neuralnetworks_utils_hal_1_3", "neuralnetworks_utils_hal_common", "philox_random", ], static_libs: [ "libcrypto_static", "libruy_static", "libtextclassifier_hash_static", "neuralnetworks_types", ], cflags: [ "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", "-DNN_INCLUDE_CPU_IMPLEMENTATION", "-DTF_LITE_DISABLE_X86_NEON", ], } cc_library_static { name: "libneuralnetworks_common", defaults: [ "libneuralnetworks_common_defaults", ], min_sdk_version: "30", } cc_library_static { name: "libneuralnetworks_common_experimental", defaults: [ "libneuralnetworks_common_defaults", ], exclude_static_libs: [ "neuralnetworks_types", ], static_libs: [ "neuralnetworks_types_experimental", ], cflags: [ "-DNN_EXPERIMENTAL_FEATURE", ], } cc_defaults { name: "neuralnetworks_cl_defaults", host_supported: false, vendor_available: false, cpp_std: "gnu++17", stl: "libc++_static", sdk_version: "current", min_sdk_version: "29", cflags: [ "-DNN_COMPATIBILITY_LIBRARY_BUILD", ], } cc_defaults { name: "libneuralnetworks_common_cl_defaults", defaults: [ "neuralnetworks_cl_defaults", "neuralnetworks_defaults", "neuralnetworks_operations", ], host_supported: false, apex_available: [ "//apex_available:platform", "com.android.neuralnetworks", "test_com.android.neuralnetworks", ], // b/109953668, disable OpenMP // openmp: true, export_include_dirs: [ "include", ], srcs: [ "BufferTracker.cpp", "CpuExecutor.cpp", "GraphDump.cpp", "IndexedShapeWrapper.cpp", "LegacyUtils.cpp", "MetaModel.cpp", "ModelUtils.cpp", "OperationsExecutionUtils.cpp", "TokenHasher.cpp", ], header_libs: [ "libneuralnetworks_headers_ndk", ], static_libs: [ "libbase_ndk", "libcrypto_static", "neuralnetworks_types_cl", ], shared_libs: [ "libnativewindow", ], cflags: [ "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", "-DTF_LITE_DISABLE_X86_NEON", ], } cc_library_static { name: "libneuralnetworks_common_cl", defaults: ["libneuralnetworks_common_cl_defaults"], } cc_library_static { name: "libneuralnetworks_common_cl_cpu", defaults: ["libneuralnetworks_common_cl_defaults"], local_include_dirs: ["types/operations/include"], header_libs: [ "gemmlowp_headers", "libeigen", "libruy_headers", "libtextclassifier_hash_headers", "philox_random_headers", "tensorflow_headers", ], whole_static_libs: [ "philox_random_cl", ], static_libs: [ "libcrypto_static", "libtextclassifier_hash_static", ], srcs: [ "ActivationFunctor.cpp", "QuantUtils.cpp", "cpu_operations/ArgMinMax.cpp", "cpu_operations/BidirectionalSequenceLSTM.cpp", "cpu_operations/Cast.cpp", "cpu_operations/EmbeddingLookup.cpp", "cpu_operations/ExpandDims.cpp", "cpu_operations/GroupedConv2D.cpp", "cpu_operations/HashtableLookup.cpp", "cpu_operations/LSHProjection.cpp", "cpu_operations/LSTM.cpp", "cpu_operations/MaximumMinimum.cpp", "cpu_operations/Multinomial.cpp", "cpu_operations/Pow.cpp", "cpu_operations/QuantizedLSTM.cpp", "cpu_operations/RNN.cpp", "cpu_operations/Reshape.cpp", "cpu_operations/SVDF.cpp", "cpu_operations/SimpleMath.cpp", "cpu_operations/Split.cpp", "cpu_operations/Tile.cpp", ], cflags: [ "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", "-DNN_COMPATIBILITY_LIBRARY_BUILD", "-DNN_INCLUDE_CPU_IMPLEMENTATION", "-DTF_LITE_DISABLE_X86_NEON", ], } cc_defaults { name: "NeuralNetworksTest_common", defaults: [ "neuralnetworks_use_latest_utils_hal_aidl", ], host_supported: true, shared_libs: [ "android.hidl.allocator@1.0", "android.hidl.memory@1.0", "libcutils", "libhidlbase", "libhidlmemory", "libneuralnetworks", "libneuralnetworks_packageinfo", "libutils", ], static_libs: [ "android.hardware.neuralnetworks@1.0", "android.hardware.neuralnetworks@1.1", "android.hardware.neuralnetworks@1.2", "android.hardware.neuralnetworks@1.3", "libbase", "libgmock", "liblog", "libneuralnetworks_common", "neuralnetworks_types", ], target: { android: { shared_libs: [ "libnativewindow", ], }, host: { cflags: [ "-D__ANDROID_API_S__=31", "-D__INTRODUCED_IN(n)=", ], }, }, local_include_dirs: ["include"], } cc_test { name: "NeuralNetworksTest_operations", defaults: ["NeuralNetworksTest_common"], local_include_dirs: ["types/operations/include"], srcs: [ "cpu_operations/*Test.cpp", ], header_libs: [ "gemmlowp_headers", "libeigen", "philox_random_headers", "tensorflow_headers", ], test_suites: [ "general-tests", ], } cc_test { name: "NeuralNetworksTest_utils", defaults: ["NeuralNetworksTest_common"], srcs: [ "UtilsTest.cpp", ], header_libs: [ "gemmlowp_headers", "libeigen", "tensorflow_headers", ], test_suites: [ "general-tests", ], } cc_test { name: "NeuralNetworksTest_logtag", defaults: ["NeuralNetworksTest_common"], srcs: [ "LogTagTest.cpp", "LogTagTestExtra.cpp", ], }