You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
550 lines
15 KiB
550 lines
15 KiB
/*
|
|
* 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",
|
|
],
|
|
}
|