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/types/include/nnapi/ aosp/packages/modules/NeuralNetworks/common/types/include/ aosp/packages/modules/NeuralNetworks/common/operations/ 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/tensorflow aosp/external/gemmlowp/ aosp/external/ruy/ aosp/external/eigen/ 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/posix_strerror_r.cpp aosp/system/libbase/chrono_utils.cpp aosp/system/libbase/cmsg.cpp aosp/system/libbase/file.cpp aosp/system/libbase/hex.cpp 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}) file(GLOB TYPES_CL_SOURCE_FILES aosp/packages/modules/NeuralNetworks/common/operations/*Validation.cpp ) set(neuralnetworks_types_cl_sources) list(APPEND neuralnetworks_types_cl_sources aosp/packages/modules/NeuralNetworks/common/types/src/DynamicCLDeps.cpp aosp/packages/modules/NeuralNetworks/common/types/src/SharedMemory.cpp aosp/packages/modules/NeuralNetworks/common/types/src/SharedMemoryAndroid.cpp aosp/packages/modules/NeuralNetworks/common/types/src/TypeUtils.cpp aosp/packages/modules/NeuralNetworks/common/types/src/OperationsValidationUtils.cpp aosp/packages/modules/NeuralNetworks/common/types/src/Types.cpp ${TYPES_CL_SOURCE_FILES} aosp/packages/modules/NeuralNetworks/common/types/src/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/ModelUtils.cpp aosp/packages/modules/NeuralNetworks/common/MetaModel.cpp aosp/packages/modules/NeuralNetworks/common/OperationsExecutionUtils.cpp aosp/packages/modules/NeuralNetworks/common/types/src/OperationsUtils.cpp aosp/packages/modules/NeuralNetworks/common/TokenHasher.cpp aosp/packages/modules/NeuralNetworks/common/OperationResolver.cpp aosp/packages/modules/NeuralNetworks/common/operations/ActivationExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/BatchMatmulExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/BidirectionalSequenceRNNExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/BroadcastExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ChannelShuffleExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ComparisonsExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ConcatenationExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/Conv2DExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/DepthwiseConv2DExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/DequantizeExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ElementwiseExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/EluExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/FillExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/FullyConnectedExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/GatherExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/GenerateProposalsExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/HeatmapMaxKeypointExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/InstanceNormalizationExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/L2NormalizationExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/LocalResponseNormalizationExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/LogSoftmaxExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/LogicalAndOrExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/LogicalNotExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/MirrorPadExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/NegExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/PackExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/PReluExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/PoolingExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/QLSTMExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/QuantizeExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/RankExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ReduceExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ReshapeExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ReverseExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/ResizeImageOpsExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/RoiAlignExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/RoiPoolingExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/SelectExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/SliceExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/SoftmaxExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/SqueezeExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/StridedSliceExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/TopK_V2Execution.cpp aosp/packages/modules/NeuralNetworks/common/operations/TransposeExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/TransposeConv2DExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/UnidirectionalSequenceLSTMExecution.cpp aosp/packages/modules/NeuralNetworks/common/operations/UnidirectionalSequenceRNNExecution.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/ServerFlag.cpp aosp/packages/modules/NeuralNetworks/runtime/Manager.cpp aosp/packages/modules/NeuralNetworks/runtime/Memory.cpp aosp/packages/modules/NeuralNetworks/runtime/ModelArchHasher.cpp 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 aosp/packages/modules/NeuralNetworks/runtime/Telemetry.cpp 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) ####################################################