/* * 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 { default_applicable_licenses: ["Android-Apache-2.0"], } cc_library_headers { name: "libneuralnetworks_common_headers", host_supported: false, export_include_dirs: ["include"], } cc_defaults { name: "neuralnetworks_operations", srcs: [ "OperationResolver.cpp", "operations/Activation.cpp", "operations/BidirectionalSequenceRNN.cpp", "operations/Broadcast.cpp", "operations/ChannelShuffle.cpp", "operations/Comparisons.cpp", "operations/Concatenation.cpp", "operations/Conv2D.cpp", "operations/DepthwiseConv2D.cpp", "operations/Dequantize.cpp", "operations/Elementwise.cpp", "operations/Elu.cpp", "operations/Fill.cpp", "operations/FullyConnected.cpp", "operations/Gather.cpp", "operations/GenerateProposals.cpp", "operations/HeatmapMaxKeypoint.cpp", "operations/InstanceNormalization.cpp", "operations/L2Normalization.cpp", "operations/LocalResponseNormalization.cpp", "operations/LogSoftmax.cpp", "operations/LogicalAndOr.cpp", "operations/LogicalNot.cpp", "operations/Neg.cpp", "operations/PRelu.cpp", "operations/Pooling.cpp", "operations/QLSTM.cpp", "operations/Quantize.cpp", "operations/Rank.cpp", "operations/Reduce.cpp", "operations/ResizeImageOps.cpp", "operations/RoiAlign.cpp", "operations/RoiPooling.cpp", "operations/Select.cpp", "operations/Slice.cpp", "operations/Softmax.cpp", "operations/Squeeze.cpp", "operations/StridedSlice.cpp", "operations/TopK_V2.cpp", "operations/Transpose.cpp", "operations/TransposeConv2D.cpp", "operations/UnidirectionalSequenceLSTM.cpp", "operations/UnidirectionalSequenceRNN.cpp", ], } cc_library_static { name: "libneuralnetworks_utils", defaults: [ "neuralnetworks_defaults", "neuralnetworks_operations", ], host_supported: false, vendor_available: true, apex_available: [ "//apex_available:platform", "com.android.neuralnetworks", "test_com.android.neuralnetworks", ], export_include_dirs: ["include"], srcs: [ "AidlHalUtils.cpp", "ExecutionBurstController.cpp", "ExecutionBurstServer.cpp", "LegacyHalUtils.cpp", "LegacyUtils.cpp", "MemoryUtils.cpp", ], header_libs: [ "gemmlowp_headers", "libeigen", "libneuralnetworks_headers", "libruy_headers", "tensorflow_headers", ], shared_libs: [ "android.hardware.neuralnetworks-V1-ndk_platform", "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", "libfmq", "libhidlbase", "libhidlmemory", "libnativewindow", ], whole_static_libs: [ "libarect", "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_aidl", "neuralnetworks_utils_hal_common", ], cflags: [ "-DTF_LITE_DISABLE_X86_NEON", "-Wall", "-Werror", "-Wextra", "-Wno-extern-c-compat", "-Wno-invalid-partial-specialization", "-Wno-sign-compare", "-Wno-unused-local-typedef", "-Wno-unused-parameter", "-Wno-unused-private-field", "-Wno-unused-variable", ], } cc_library_static { name: "libneuralnetworks_common", defaults: [ "neuralnetworks_defaults", "neuralnetworks_operations", ], apex_available: [ "//apex_available:platform", "com.android.neuralnetworks", "test_com.android.neuralnetworks", ], host_supported: false, vendor_available: true, // b/109953668, disable OpenMP // openmp: true, export_include_dirs: [ "include", ], srcs: [ "AidlBufferTracker.cpp", "AidlHalUtils.cpp", "AidlValidateHal.cpp", "BufferTracker.cpp", "CpuExecutor.cpp", "ExecutionBurstController.cpp", "ExecutionBurstServer.cpp", "GraphDump.cpp", "HalBufferTracker.cpp", "IndexedShapeWrapper.cpp", "LegacyHalUtils.cpp", "LegacyUtils.cpp", "MemoryUtils.cpp", "MetaModel.cpp", "OperationsUtils.cpp", "QuantUtils.cpp", "TokenHasher.cpp", "ValidateHal.cpp", "operations/ArgMinMax.cpp", "operations/BidirectionalSequenceLSTM.cpp", "operations/Cast.cpp", "operations/EmbeddingLookup.cpp", "operations/ExpandDims.cpp", "operations/GroupedConv2D.cpp", "operations/HashtableLookup.cpp", "operations/LSHProjection.cpp", "operations/LSTM.cpp", "operations/MaximumMinimum.cpp", "operations/Multinomial.cpp", "operations/Pow.cpp", "operations/QuantizedLSTM.cpp", "operations/RNN.cpp", "operations/Reshape.cpp", "operations/SVDF.cpp", "operations/SimpleMath.cpp", "operations/Split.cpp", "operations/Tile.cpp", ], shared_libs: [ "android.hardware.neuralnetworks-V1-ndk_platform", "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", "libnativewindow", "libutils", ], 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_aidl", "neuralnetworks_utils_hal_common", "neuralnetworks_utils_hal_service", "philox_random", ], static_libs: [ "libcrypto_static", "libruy_static", "libtextclassifier_hash_static", ], cflags: [ "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", "-DNN_INCLUDE_CPU_IMPLEMENTATION", "-DTF_LITE_DISABLE_X86_NEON", "-Wall", "-Werror", "-Wextra", "-Wno-array-bounds", "-Wno-extern-c-compat", "-Wno-invalid-partial-specialization", "-Wno-sign-compare", "-Wno-unused-local-typedef", "-Wno-unused-parameter", "-Wno-unused-private-field", "-Wno-unused-variable", ], } cc_defaults { name: "neuralnetworks_cl_defaults", host_supported: false, vendor_available: false, 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", ], 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", "OperationsUtils.cpp", "TokenHasher.cpp", ], header_libs: [ "libneuralnetworks_headers_ndk", ], static_libs: [ "libbase_ndk", "libcrypto_static", ], shared_libs: [ "libnativewindow", ], cflags: [ "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", "-DTF_LITE_DISABLE_X86_NEON", "-Wall", "-Werror", "-Wextra", "-Wno-array-bounds", "-Wno-extern-c-compat", "-Wno-invalid-partial-specialization", "-Wno-sign-compare", "-Wno-unused-local-typedef", "-Wno-unused-parameter", "-Wno-unused-private-field", "-Wno-unused-variable", ], } 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"], sdk_version: "", // Override neuralnetworks_cl_defaults min_sdk_version: "", header_libs: [ "gemmlowp_headers", "libeigen", "libruy_headers", "libtextclassifier_hash_headers", "philox_random_headers", "tensorflow_headers", ], whole_static_libs: [ "libarect", "libtflite_kernel_utils", "neuralnetworks_types_cl", "philox_random", ], static_libs: [ "libcrypto_static", "libtextclassifier_hash_static", ], srcs: [ "QuantUtils.cpp", "operations/ArgMinMax.cpp", "operations/BidirectionalSequenceLSTM.cpp", "operations/Cast.cpp", "operations/EmbeddingLookup.cpp", "operations/ExpandDims.cpp", "operations/GroupedConv2D.cpp", "operations/HashtableLookup.cpp", "operations/LSHProjection.cpp", "operations/LSTM.cpp", "operations/MaximumMinimum.cpp", "operations/Multinomial.cpp", "operations/Pow.cpp", "operations/QuantizedLSTM.cpp", "operations/RNN.cpp", "operations/Reshape.cpp", "operations/SVDF.cpp", "operations/SimpleMath.cpp", "operations/Split.cpp", "operations/Tile.cpp", ], cflags: [ "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", "-DNN_COMPATIBILITY_LIBRARY_BUILD", "-DNN_INCLUDE_CPU_IMPLEMENTATION", "-DTF_LITE_DISABLE_X86_NEON", "-Wno-array-bounds", "-Wno-extern-c-compat", "-Wno-invalid-partial-specialization", "-Wno-sign-compare", "-Wno-unused-local-typedef", "-Wno-unused-parameter", "-Wno-unused-private-field", "-Wno-unused-variable", ], } cc_defaults { name: "neuralnetworks_utils_defaults", // b/146324523, NNAPI host build capability host_supported: false, vendor_available: true, apex_available: [ "//apex_available:platform", "com.android.neuralnetworks", "test_com.android.neuralnetworks", ], min_sdk_version: "30", cflags: [ "-Wall", "-Werror", "-Wextra", ], } cc_library_static { name: "neuralnetworks_types", defaults: ["neuralnetworks_utils_defaults"], srcs: [ "SharedMemory.cpp", "TypeUtils.cpp", "Types.cpp", "Validation.cpp", ], target: { android: { srcs: ["SharedMemoryAndroid.cpp"], shared_libs: [ "android.hidl.allocator@1.0", "android.hidl.memory@1.0", "libhidlbase", "libhidlmemory", "libnativewindow", ], static_libs: ["libarect"], }, }, local_include_dirs: ["include/nnapi"], export_include_dirs: ["include"], shared_libs: [ "libbase", "libcutils", "libutils", ], export_shared_lib_headers: [ "libbase", "libcutils", "libutils", ], } cc_library_static { name: "neuralnetworks_types_cl", defaults: [ "neuralnetworks_cl_defaults", "neuralnetworks_utils_defaults", ], srcs: [ "DynamicCLDeps.cpp", "SharedMemory.cpp", "SharedMemoryAndroid.cpp", "TypeUtils.cpp", "Types.cpp", "Validation.cpp", ], local_include_dirs: ["include/nnapi"], export_include_dirs: ["include"], static_libs: [ "libbase_ndk", ], export_static_lib_headers: [ "libbase_ndk", ], shared_libs: [ "libandroid", ], } cc_defaults { name: "NeuralNetworksTest_common", defaults: ["neuralnetworks_float16"], shared_libs: [ "android.hidl.allocator@1.0", "android.hidl.memory@1.0", "libhidlbase", "libhidlmemory", "libnativewindow", "libneuralnetworks", "libneuralnetworks_packageinfo", "libutils", ], static_libs: [ "android.hardware.neuralnetworks-V1-ndk_platform", "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", ], cflags: [ "-Wno-extern-c-compat", ], local_include_dirs: ["include"], } cc_test { name: "NeuralNetworksTest_operations", defaults: ["NeuralNetworksTest_common"], srcs: [ "operations/*Test.cpp", ], header_libs: [ "gemmlowp_headers", "libeigen", "philox_random_headers", "tensorflow_headers", ], cflags: [ "-Wno-invalid-partial-specialization", "-Wno-unused-parameter", ], } cc_test { name: "NeuralNetworksTest_utils", defaults: ["NeuralNetworksTest_common"], srcs: [ "UtilsTest.cpp", ], header_libs: [ "gemmlowp_headers", "libeigen", "tensorflow_headers", ], cflags: [ "-Wno-unused-parameter", "-Wno-unused-variable", ], test_suites: [ "general-tests", ], } cc_test { name: "NeuralNetworksTest_logtag", defaults: ["NeuralNetworksTest_common"], srcs: [ "LogTagTest.cpp", "LogTagTestExtra.cpp", ], }