cmake_minimum_required (VERSION 3.7.0) project(armnn_support_library) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++17 -Wall -fexceptions -Werror -Wno-unused-parameter -Wno-unused-private-field -Wno-unused-variable -Wno-attributes -Wno-format-security -Wno-extern-c-compat -Wno-invalid-partial-specialization -Wno-unneeded-internal-declaration -Wno-unused-function -DNN_COMPATIBILITY_LIBRARY_BUILD -DNN_DEBUGGABLE") set(CMAKE_POSITION_INDEPENDENT_CODE ON) include(GNUInstallDirs) SET(libnnapi_support_include_directories) list(APPEND libnnapi_support_include_directories aosp/packages/modules/NeuralNetworks/common/include/nnapi aosp/packages/modules/NeuralNetworks/common/include aosp/packages/modules/NeuralNetworks/runtime/include aosp/packages/modules/NeuralNetworks/shim_and_sl/public aosp/system/logging/liblog/include aosp/system/libbase/include aosp/frameworks/native/libs/nativewindow/include aosp/system/core/libcutils/include aosp/system/core/include aosp/external/boringssl/include) include_directories(${libnnapi_support_include_directories}) link_directories( ${ARMNN_SOURCE_DIR}/shim/sl/build ) set(base_sources) list(APPEND base_sources aosp/system/libbase/abi_compatibility.cpp aosp/system/libbase/chrono_utils.cpp aosp/system/libbase/cmsg.cpp aosp/system/libbase/file.cpp # aosp/system/libbase/hex.cpp # needed in AOSP Master FL7 aosp/system/libbase/logging.cpp aosp/system/libbase/mapped_file.cpp aosp/system/libbase/parsebool.cpp aosp/system/libbase/parsenetaddress.cpp aosp/system/libbase/process.cpp aosp/system/libbase/properties.cpp aosp/system/libbase/stringprintf.cpp aosp/system/libbase/strings.cpp aosp/system/libbase/test_utils.cpp aosp/system/libbase/threads.cpp) add_library(base STATIC ${base_sources}) target_include_directories (base PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories (base PUBLIC ${libnnapi_support_include_directories}) set(neuralnetworks_types_cl_sources) list(APPEND neuralnetworks_types_cl_sources aosp/packages/modules/NeuralNetworks/common/DynamicCLDeps.cpp aosp/packages/modules/NeuralNetworks/common/SharedMemory.cpp aosp/packages/modules/NeuralNetworks/common/SharedMemoryAndroid.cpp aosp/packages/modules/NeuralNetworks/common/TypeUtils.cpp aosp/packages/modules/NeuralNetworks/common/Types.cpp aosp/packages/modules/NeuralNetworks/common/Validation.cpp) add_library(neuralnetworks_types_cl STATIC ${neuralnetworks_types_cl_sources}) target_include_directories (neuralnetworks_types_cl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories (neuralnetworks_types_cl PUBLIC ${libnnapi_support_include_directories}) set(neuralnetworks_common_cl_sources) list(APPEND neuralnetworks_common_cl_sources aosp/packages/modules/NeuralNetworks/common/BufferTracker.cpp aosp/packages/modules/NeuralNetworks/common/CpuExecutor.cpp aosp/packages/modules/NeuralNetworks/common/GraphDump.cpp aosp/packages/modules/NeuralNetworks/common/IndexedShapeWrapper.cpp aosp/packages/modules/NeuralNetworks/common/LegacyUtils.cpp aosp/packages/modules/NeuralNetworks/common/MetaModel.cpp aosp/packages/modules/NeuralNetworks/common/OperationsUtils.cpp aosp/packages/modules/NeuralNetworks/common/TokenHasher.cpp aosp/packages/modules/NeuralNetworks/common/OperationResolver.cpp aosp/packages/modules/NeuralNetworks/common/operations/Activation.cpp # aosp/packages/modules/NeuralNetworks/common/operations/BatchMatmul.cpp # needed in AOSP Master FL7 aosp/packages/modules/NeuralNetworks/common/operations/BidirectionalSequenceRNN.cpp aosp/packages/modules/NeuralNetworks/common/operations/Broadcast.cpp aosp/packages/modules/NeuralNetworks/common/operations/ChannelShuffle.cpp aosp/packages/modules/NeuralNetworks/common/operations/Comparisons.cpp aosp/packages/modules/NeuralNetworks/common/operations/Concatenation.cpp aosp/packages/modules/NeuralNetworks/common/operations/Conv2D.cpp aosp/packages/modules/NeuralNetworks/common/operations/DepthwiseConv2D.cpp aosp/packages/modules/NeuralNetworks/common/operations/Dequantize.cpp aosp/packages/modules/NeuralNetworks/common/operations/Elementwise.cpp aosp/packages/modules/NeuralNetworks/common/operations/Elu.cpp aosp/packages/modules/NeuralNetworks/common/operations/Fill.cpp aosp/packages/modules/NeuralNetworks/common/operations/FullyConnected.cpp aosp/packages/modules/NeuralNetworks/common/operations/Gather.cpp aosp/packages/modules/NeuralNetworks/common/operations/GenerateProposals.cpp aosp/packages/modules/NeuralNetworks/common/operations/HeatmapMaxKeypoint.cpp aosp/packages/modules/NeuralNetworks/common/operations/InstanceNormalization.cpp aosp/packages/modules/NeuralNetworks/common/operations/L2Normalization.cpp aosp/packages/modules/NeuralNetworks/common/operations/LocalResponseNormalization.cpp aosp/packages/modules/NeuralNetworks/common/operations/LogSoftmax.cpp aosp/packages/modules/NeuralNetworks/common/operations/LogicalAndOr.cpp aosp/packages/modules/NeuralNetworks/common/operations/LogicalNot.cpp # aosp/packages/modules/NeuralNetworks/common/operations/MirrorPad.cpp #needed in AOSP Master FL7 aosp/packages/modules/NeuralNetworks/common/operations/Neg.cpp # aosp/packages/modules/NeuralNetworks/common/operations/Pack.cpp #needed in AOSP Master FL7 aosp/packages/modules/NeuralNetworks/common/operations/PRelu.cpp aosp/packages/modules/NeuralNetworks/common/operations/Pooling.cpp aosp/packages/modules/NeuralNetworks/common/operations/QLSTM.cpp aosp/packages/modules/NeuralNetworks/common/operations/Quantize.cpp aosp/packages/modules/NeuralNetworks/common/operations/Rank.cpp aosp/packages/modules/NeuralNetworks/common/operations/Reduce.cpp # aosp/packages/modules/NeuralNetworks/common/operations/Reshape.cpp #needed in AOSP Master FL7 # aosp/packages/modules/NeuralNetworks/common/operations/Reverse.cpp #needed in AOSP Master FL7 aosp/packages/modules/NeuralNetworks/common/operations/ResizeImageOps.cpp aosp/packages/modules/NeuralNetworks/common/operations/RoiAlign.cpp aosp/packages/modules/NeuralNetworks/common/operations/RoiPooling.cpp aosp/packages/modules/NeuralNetworks/common/operations/Select.cpp aosp/packages/modules/NeuralNetworks/common/operations/Slice.cpp aosp/packages/modules/NeuralNetworks/common/operations/Softmax.cpp aosp/packages/modules/NeuralNetworks/common/operations/Squeeze.cpp aosp/packages/modules/NeuralNetworks/common/operations/StridedSlice.cpp aosp/packages/modules/NeuralNetworks/common/operations/TopK_V2.cpp aosp/packages/modules/NeuralNetworks/common/operations/Transpose.cpp aosp/packages/modules/NeuralNetworks/common/operations/TransposeConv2D.cpp aosp/packages/modules/NeuralNetworks/common/operations/UnidirectionalSequenceLSTM.cpp aosp/packages/modules/NeuralNetworks/common/operations/UnidirectionalSequenceRNN.cpp) add_library(neuralnetworks_common_cl STATIC ${neuralnetworks_common_cl_sources}) target_include_directories (neuralnetworks_common_cl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories (neuralnetworks_common_cl PUBLIC ${libnnapi_support_include_directories}) set(neuralnetworks_cl_sources) list(APPEND neuralnetworks_cl_sources aosp/packages/modules/NeuralNetworks/runtime/BurstBuilder.cpp aosp/packages/modules/NeuralNetworks/runtime/CompilationBuilder.cpp aosp/packages/modules/NeuralNetworks/runtime/ExecutionBuilder.cpp aosp/packages/modules/NeuralNetworks/runtime/ExecutionCallback.cpp aosp/packages/modules/NeuralNetworks/runtime/ExecutionPlan.cpp aosp/packages/modules/NeuralNetworks/runtime/Manager.cpp aosp/packages/modules/NeuralNetworks/runtime/Memory.cpp # aosp/packages/modules/NeuralNetworks/runtime/ModelArchHasher.cpp #needed in AOSP Master FL7 aosp/packages/modules/NeuralNetworks/runtime/ModelArgumentInfo.cpp aosp/packages/modules/NeuralNetworks/runtime/ModelBuilder.cpp aosp/packages/modules/NeuralNetworks/runtime/NeuralNetworks.cpp # aosp/packages/modules/NeuralNetworks/runtime/SupportLibraryDiagnostic.cpp #needed in AOSP Master FL7 # aosp/packages/modules/NeuralNetworks/runtime/Telemetry.cpp #needed in AOSP Master FL7 aosp/packages/modules/NeuralNetworks/runtime/TypeManager.cpp) add_library(neuralnetworks_cl OBJECT ${neuralnetworks_cl_sources}) target_include_directories (neuralnetworks_cl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories (neuralnetworks_cl PUBLIC ${libnnapi_support_include_directories}) # Add Armnn as a Dependency message(STATUS "ARMNN_SOURCE_DIR: ${ARMNN_SOURCE_DIR}") set(Armnn_DIR "${ARMNN_SOURCE_DIR}/build") if(NOT ARMNN_SUB_PROJECT) find_package(Armnn REQUIRED CONFIG HINTS ${Armnn_DIR}) endif() add_library(thirdparty_headers INTERFACE) target_include_directories(thirdparty_headers INTERFACE $ $) set(armnn_support_library_sources) list(APPEND armnn_support_library_sources canonical/ArmnnPreparedModel.cpp canonical/ArmnnPreparedModel.hpp canonical/ArmnnDevice.cpp canonical/ArmnnDevice.hpp canonical/ArmnnDriver.hpp canonical/ArmnnDriverImpl.cpp canonical/ArmnnDriverImpl.hpp canonical/CacheDataHandler.cpp canonical/CacheDataHandler.hpp canonical/CanonicalUtils.cpp canonical/CanonicalUtils.hpp canonical/ConversionUtils.cpp canonical/ConversionUtils.hpp canonical/Converter.cpp canonical/Converter.hpp canonical/DriverOptions.cpp canonical/DriverOptions.hpp canonical/ModelToINetworkTransformer.cpp canonical/ModelToINetworkTransformer.hpp canonical/SystemPropertiesUtils.hpp support_library_service.cpp) list(APPEND armnn_support_library_sources "$") list(APPEND armnn_support_library_sources "$") add_library(armnn_support_library SHARED ${armnn_support_library_sources}) target_link_libraries(armnn_support_library PUBLIC Armnn::Armnn) target_link_libraries(armnn_support_library PRIVATE thirdparty_headers) target_link_libraries(armnn_support_library PRIVATE neuralnetworks_types_cl) target_link_libraries(armnn_support_library PRIVATE neuralnetworks_common_cl) target_link_libraries(armnn_support_library PRIVATE neuralnetworks_cl) target_link_libraries(armnn_support_library PRIVATE base) target_include_directories(armnn_support_library PUBLIC ${libnnapi_support_include_directories}) target_link_libraries(armnn_support_library PUBLIC -Wl,-undefined -Wl,dynamic_lookup) # find the liblog find_library(log-lib log) target_link_libraries(armnn_support_library PUBLIC ${log-lib}) # find the libnativewindow find_library(nativewindow-lib nativewindow) target_link_libraries(armnn_support_library PUBLIC ${nativewindow-lib}) ## find the libcrypto set(CRYPTO_LIB_ROOT ${ARMNN_SOURCE_DIR}/shim/sl/aosp/prebuilts/vndk/v29) target_link_libraries(armnn_support_library PUBLIC ${CRYPTO_LIB_ROOT}/arm64/arch-arm64-armv8-a/shared/vndk-core/libcrypto.so) ####################################################