1*89c4ff92SAndroid Build Coastguard Worker# 2*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker# 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Workercmake_minimum_required (VERSION 3.7.0) 7*89c4ff92SAndroid Build Coastguard Workerproject(armnnDelegate) 8*89c4ff92SAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD 17) 9*89c4ff92SAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD_REQUIRED ON) 10*89c4ff92SAndroid Build Coastguard Workerset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wextra -Werror -Wold-style-cast -Wno-missing-braces -Wconversion -Wsign-conversion -Wno-comment") 11*89c4ff92SAndroid Build Coastguard Workerset(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/") 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Workeroption(BUILD_UNIT_TESTS "Build unit tests" ON) 14*89c4ff92SAndroid Build Coastguard Workeroption(BUILD_CLASSIC_DELEGATE "Build classic delegate" ON) 15*89c4ff92SAndroid Build Coastguard Workeroption(BUILD_OPAQUE_DELEGATE "Build opaque delegate" OFF) 16*89c4ff92SAndroid Build Coastguard Workeroption(BUILD_SHARED_LIBS "Build share libs" ON) 17*89c4ff92SAndroid Build Coastguard Workeroption(BUILD_DELEGATE_JNI_INTERFACE "Builds a library to allow accessing the Arm NN delegate from Java code. 18*89c4ff92SAndroid Build Coastguard Worker This is an experimental feature." ON) 19*89c4ff92SAndroid Build Coastguard Worker 20*89c4ff92SAndroid Build Coastguard Workerset(armnnDelegate_sources) 21*89c4ff92SAndroid Build Coastguard Workerlist(APPEND armnnDelegate_sources 22*89c4ff92SAndroid Build Coastguard Worker common/include/DelegateOptions.hpp 23*89c4ff92SAndroid Build Coastguard Worker common/src/DelegateOptions.cpp 24*89c4ff92SAndroid Build Coastguard Worker common/src/DelegateUtils.hpp) 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker## Add Armnn as a Dependency 27*89c4ff92SAndroid Build Coastguard Workerif(NOT ARMNN_SUB_PROJECT) 28*89c4ff92SAndroid Build Coastguard Worker find_package(Armnn REQUIRED CONFIG HINTS ${Armnn_DIR}) 29*89c4ff92SAndroid Build Coastguard Workerendif() 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Workerif (BUILD_CLASSIC_DELEGATE) 32*89c4ff92SAndroid Build Coastguard Worker add_subdirectory(classic) 33*89c4ff92SAndroid Build Coastguard Worker add_library(armnnDelegate ${armnnDelegate_sources}) 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnDelegate 36*89c4ff92SAndroid Build Coastguard Worker PUBLIC 37*89c4ff92SAndroid Build Coastguard Worker $<INSTALL_INTERFACE:include> 38*89c4ff92SAndroid Build Coastguard Worker $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/common/include> 39*89c4ff92SAndroid Build Coastguard Worker PRIVATE 40*89c4ff92SAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/common/src) 41*89c4ff92SAndroid Build Coastguard Workerendif() 42*89c4ff92SAndroid Build Coastguard Workerif (BUILD_OPAQUE_DELEGATE) 43*89c4ff92SAndroid Build Coastguard Worker add_subdirectory(opaque) 44*89c4ff92SAndroid Build Coastguard Worker add_library(armnnOpaqueDelegate ${armnnDelegate_sources}) 45*89c4ff92SAndroid Build Coastguard Worker 46*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnOpaqueDelegate 47*89c4ff92SAndroid Build Coastguard Worker PUBLIC 48*89c4ff92SAndroid Build Coastguard Worker $<INSTALL_INTERFACE:include> 49*89c4ff92SAndroid Build Coastguard Worker $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/common/include> 50*89c4ff92SAndroid Build Coastguard Worker PRIVATE 51*89c4ff92SAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/common/src) 52*89c4ff92SAndroid Build Coastguard Workerendif() 53*89c4ff92SAndroid Build Coastguard Worker 54*89c4ff92SAndroid Build Coastguard Workerinclude(GNUInstallDirs) 55*89c4ff92SAndroid Build Coastguard Worker 56*89c4ff92SAndroid Build Coastguard Workerif (BUILD_CLASSIC_DELEGATE) 57*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC Armnn::Armnn) 58*89c4ff92SAndroid Build Coastguard Worker 59*89c4ff92SAndroid Build Coastguard Worker ## Add armnnClassicDelegateObject as a Dependency 60*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC armnnClassicDelegateObject) 61*89c4ff92SAndroid Build Coastguard Workerendif() 62*89c4ff92SAndroid Build Coastguard Workerif (BUILD_OPAQUE_DELEGATE) 63*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC Armnn::Armnn) 64*89c4ff92SAndroid Build Coastguard Worker 65*89c4ff92SAndroid Build Coastguard Worker ## Add armnnOpaqueDelegateObject as a Dependency 66*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC armnnOpaqueDelegateObject) 67*89c4ff92SAndroid Build Coastguard Workerendif() 68*89c4ff92SAndroid Build Coastguard Worker 69*89c4ff92SAndroid Build Coastguard Worker## Add TfLite dependency 70*89c4ff92SAndroid Build Coastguard Workerfind_package(TfLiteSrc REQUIRED MODULE) 71*89c4ff92SAndroid Build Coastguard Workerfind_package(TfLite REQUIRED MODULE) 72*89c4ff92SAndroid Build Coastguard Workerif (BUILD_CLASSIC_DELEGATE) 73*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC ${TfLite_LIB}) 74*89c4ff92SAndroid Build Coastguard Worker 75*89c4ff92SAndroid Build Coastguard Worker # lpthread and ldl are not required for Android 76*89c4ff92SAndroid Build Coastguard Worker if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL Android) 77*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC -lpthread) 78*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC -ldl) 79*89c4ff92SAndroid Build Coastguard Worker endif() 80*89c4ff92SAndroid Build Coastguard Workerendif() 81*89c4ff92SAndroid Build Coastguard Workerif (BUILD_OPAQUE_DELEGATE) 82*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC ${TfLite_LIB}) 83*89c4ff92SAndroid Build Coastguard Worker 84*89c4ff92SAndroid Build Coastguard Worker # lpthread and ldl are not required for Android 85*89c4ff92SAndroid Build Coastguard Worker if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL Android) 86*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC -lpthread) 87*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC -ldl) 88*89c4ff92SAndroid Build Coastguard Worker endif() 89*89c4ff92SAndroid Build Coastguard Workerendif() 90*89c4ff92SAndroid Build Coastguard Worker 91*89c4ff92SAndroid Build Coastguard Worker# Add libraries from armnn third-party libraries 92*89c4ff92SAndroid Build Coastguard Worker# Third-party header files are not warning clean 93*89c4ff92SAndroid Build Coastguard Worker# We can't change compilation flags on header files directly, so we need to add them to an interface library first 94*89c4ff92SAndroid Build Coastguard Workeradd_library(thirdparty_headers INTERFACE) 95*89c4ff92SAndroid Build Coastguard Workertarget_include_directories(thirdparty_headers INTERFACE $<BUILD_INTERFACE:${ARMNN_SOURCE_DIR}/third-party> 96*89c4ff92SAndroid Build Coastguard Worker $<INSTALL_INTERFACE:include/thirdparty_headers>) 97*89c4ff92SAndroid Build Coastguard Worker 98*89c4ff92SAndroid Build Coastguard Workertarget_compile_options(thirdparty_headers INTERFACE -Wno-old-style-cast) 99*89c4ff92SAndroid Build Coastguard Workerif (BUILD_CLASSIC_DELEGATE) 100*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC thirdparty_headers) 101*89c4ff92SAndroid Build Coastguard Workerendif() 102*89c4ff92SAndroid Build Coastguard Workerif (BUILD_OPAQUE_DELEGATE) 103*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC thirdparty_headers) 104*89c4ff92SAndroid Build Coastguard Workerendif() 105*89c4ff92SAndroid Build Coastguard Worker 106*89c4ff92SAndroid Build Coastguard Workeradd_library(profiling_library_headers INTERFACE) 107*89c4ff92SAndroid Build Coastguard Workertarget_include_directories(profiling_library_headers INTERFACE $<BUILD_INTERFACE:${ARMNN_SOURCE_DIR}/profiling> 108*89c4ff92SAndroid Build Coastguard Worker $<INSTALL_INTERFACE:include/profiling_library_headers>) 109*89c4ff92SAndroid Build Coastguard Worker 110*89c4ff92SAndroid Build Coastguard Workerif (BUILD_CLASSIC_DELEGATE) 111*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC profiling_library_headers) 112*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDelegate PUBLIC Armnn::armnnUtils) 113*89c4ff92SAndroid Build Coastguard Worker 114*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnDelegate PROPERTIES VERSION ${DELEGATE_LIB_VERSION} SOVERSION ${DELEGATE_LIB_SOVERSION}) 115*89c4ff92SAndroid Build Coastguard Workerendif() 116*89c4ff92SAndroid Build Coastguard Workerif (BUILD_OPAQUE_DELEGATE) 117*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC profiling_library_headers) 118*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnOpaqueDelegate PUBLIC Armnn::armnnUtils) 119*89c4ff92SAndroid Build Coastguard Worker 120*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnOpaqueDelegate PROPERTIES VERSION ${OPAQUE_DELEGATE_LIB_VERSION} SOVERSION ${OPAQUE_DELEGATE_LIB_SOVERSION}) 121*89c4ff92SAndroid Build Coastguard Workerendif() 122*89c4ff92SAndroid Build Coastguard Worker 123*89c4ff92SAndroid Build Coastguard Workerif(BUILD_UNIT_TESTS) 124*89c4ff92SAndroid Build Coastguard Worker set(commonDelegate_unittest_sources) 125*89c4ff92SAndroid Build Coastguard Worker list(APPEND commonDelegate_unittest_sources 126*89c4ff92SAndroid Build Coastguard Worker common/src/test/DelegateTestInterpreter.hpp 127*89c4ff92SAndroid Build Coastguard Worker common/src/test/DelegateTestInterpreterUtils.hpp 128*89c4ff92SAndroid Build Coastguard Worker test/ActivationTest.cpp 129*89c4ff92SAndroid Build Coastguard Worker test/ActivationTestHelper.hpp 130*89c4ff92SAndroid Build Coastguard Worker test/ArgMinMaxTest.cpp 131*89c4ff92SAndroid Build Coastguard Worker test/ArgMinMaxTestHelper.hpp 132*89c4ff92SAndroid Build Coastguard Worker test/BatchMatMulTest.cpp 133*89c4ff92SAndroid Build Coastguard Worker test/BatchMatMulTestHelper.hpp 134*89c4ff92SAndroid Build Coastguard Worker test/BatchSpaceTest.cpp 135*89c4ff92SAndroid Build Coastguard Worker test/BatchSpaceTestHelper.hpp 136*89c4ff92SAndroid Build Coastguard Worker test/CastTest.cpp 137*89c4ff92SAndroid Build Coastguard Worker test/CastTestHelper.hpp 138*89c4ff92SAndroid Build Coastguard Worker test/ComparisonTest.cpp 139*89c4ff92SAndroid Build Coastguard Worker test/ComparisonTestHelper.hpp 140*89c4ff92SAndroid Build Coastguard Worker test/ControlTest.cpp 141*89c4ff92SAndroid Build Coastguard Worker test/ControlTestHelper.hpp 142*89c4ff92SAndroid Build Coastguard Worker test/Convolution2dTest.cpp 143*89c4ff92SAndroid Build Coastguard Worker test/Convolution3dTest.cpp 144*89c4ff92SAndroid Build Coastguard Worker test/ConvolutionTestHelper.hpp 145*89c4ff92SAndroid Build Coastguard Worker test/DelegateOptionsTest.cpp 146*89c4ff92SAndroid Build Coastguard Worker test/DelegateOptionsTestHelper.hpp 147*89c4ff92SAndroid Build Coastguard Worker test/DepthwiseConvolution2dTest.cpp 148*89c4ff92SAndroid Build Coastguard Worker test/ElementwiseBinaryTest.cpp 149*89c4ff92SAndroid Build Coastguard Worker test/ElementwiseBinaryTestHelper.hpp 150*89c4ff92SAndroid Build Coastguard Worker test/ElementwiseUnaryTest.cpp 151*89c4ff92SAndroid Build Coastguard Worker test/ElementwiseUnaryTestHelper.hpp 152*89c4ff92SAndroid Build Coastguard Worker test/FillTest.cpp 153*89c4ff92SAndroid Build Coastguard Worker test/FillTestHelper.hpp 154*89c4ff92SAndroid Build Coastguard Worker test/FullyConnectedTest.cpp 155*89c4ff92SAndroid Build Coastguard Worker test/FullyConnectedTestHelper.hpp 156*89c4ff92SAndroid Build Coastguard Worker test/GatherTest.cpp 157*89c4ff92SAndroid Build Coastguard Worker test/GatherTestHelper.hpp 158*89c4ff92SAndroid Build Coastguard Worker test/GatherNdTest.cpp 159*89c4ff92SAndroid Build Coastguard Worker test/GatherNdTestHelper.hpp 160*89c4ff92SAndroid Build Coastguard Worker test/LogicalTest.cpp 161*89c4ff92SAndroid Build Coastguard Worker test/LogicalTestHelper.hpp 162*89c4ff92SAndroid Build Coastguard Worker test/LstmTest.cpp 163*89c4ff92SAndroid Build Coastguard Worker test/LstmTestHelper.hpp 164*89c4ff92SAndroid Build Coastguard Worker test/MirrorPadTest.cpp 165*89c4ff92SAndroid Build Coastguard Worker test/NormalizationTest.cpp 166*89c4ff92SAndroid Build Coastguard Worker test/NormalizationTestHelper.hpp 167*89c4ff92SAndroid Build Coastguard Worker test/PackTest.cpp 168*89c4ff92SAndroid Build Coastguard Worker test/PackTestHelper.hpp 169*89c4ff92SAndroid Build Coastguard Worker test/PadTest.cpp 170*89c4ff92SAndroid Build Coastguard Worker test/PadTestHelper.hpp 171*89c4ff92SAndroid Build Coastguard Worker test/Pooling2dTest.cpp 172*89c4ff92SAndroid Build Coastguard Worker test/Pooling2dTestHelper.hpp 173*89c4ff92SAndroid Build Coastguard Worker test/Pooling3dTest.cpp 174*89c4ff92SAndroid Build Coastguard Worker test/Pooling3dTestHelper.hpp 175*89c4ff92SAndroid Build Coastguard Worker test/PreluTest.cpp 176*89c4ff92SAndroid Build Coastguard Worker test/PreluTestHelper.hpp 177*89c4ff92SAndroid Build Coastguard Worker test/QuantizationTest.cpp 178*89c4ff92SAndroid Build Coastguard Worker test/QuantizationTestHelper.hpp 179*89c4ff92SAndroid Build Coastguard Worker test/RedefineTestHelper.hpp 180*89c4ff92SAndroid Build Coastguard Worker test/ReduceTest.cpp 181*89c4ff92SAndroid Build Coastguard Worker test/ReduceTestHelper.hpp 182*89c4ff92SAndroid Build Coastguard Worker test/ReshapeTest.cpp 183*89c4ff92SAndroid Build Coastguard Worker test/ResizeTest.cpp 184*89c4ff92SAndroid Build Coastguard Worker test/ResizeTestHelper.hpp 185*89c4ff92SAndroid Build Coastguard Worker test/RoundTest.cpp 186*89c4ff92SAndroid Build Coastguard Worker test/RoundTestHelper.hpp 187*89c4ff92SAndroid Build Coastguard Worker test/SoftmaxTest.cpp 188*89c4ff92SAndroid Build Coastguard Worker test/SoftmaxTestHelper.hpp 189*89c4ff92SAndroid Build Coastguard Worker test/SpaceDepthTest.cpp 190*89c4ff92SAndroid Build Coastguard Worker test/SpaceDepthTestHelper.hpp 191*89c4ff92SAndroid Build Coastguard Worker test/ShapeTest.cpp 192*89c4ff92SAndroid Build Coastguard Worker test/ShapeTestHelper.hpp 193*89c4ff92SAndroid Build Coastguard Worker test/SliceTest.cpp 194*89c4ff92SAndroid Build Coastguard Worker test/SliceTestHelper.hpp 195*89c4ff92SAndroid Build Coastguard Worker test/StridedSliceTest.cpp 196*89c4ff92SAndroid Build Coastguard Worker test/StridedSliceTestHelper.hpp 197*89c4ff92SAndroid Build Coastguard Worker test/SplitTest.cpp 198*89c4ff92SAndroid Build Coastguard Worker test/SplitTestHelper.hpp 199*89c4ff92SAndroid Build Coastguard Worker test/TestUtils.hpp 200*89c4ff92SAndroid Build Coastguard Worker test/TestUtils.cpp 201*89c4ff92SAndroid Build Coastguard Worker test/TransposeTest.cpp 202*89c4ff92SAndroid Build Coastguard Worker test/TransposeTestHelper.hpp 203*89c4ff92SAndroid Build Coastguard Worker test/UnidirectionalSequenceLstmTest.cpp 204*89c4ff92SAndroid Build Coastguard Worker test/UnidirectionalSequenceLstmTestHelper.hpp 205*89c4ff92SAndroid Build Coastguard Worker test/UnpackTest.cpp 206*89c4ff92SAndroid Build Coastguard Worker test/UnpackTestHelper.hpp) 207*89c4ff92SAndroid Build Coastguard Worker 208*89c4ff92SAndroid Build Coastguard Worker # There's a known Android NDK bug which causes a subset of NeonLayerTests to 209*89c4ff92SAndroid Build Coastguard Worker # fail. We'll exclude these tests in NeonLayerTests_NDK_Bug.cpp if we're doing 210*89c4ff92SAndroid Build Coastguard Worker # a debug build and NDK is less than r21. 211*89c4ff92SAndroid Build Coastguard Worker # https://github.com/android/ndk/issues/1135 212*89c4ff92SAndroid Build Coastguard Worker 213*89c4ff92SAndroid Build Coastguard Worker # Default to always including these tests. 214*89c4ff92SAndroid Build Coastguard Worker set(INCLUDE_NDK_BUG_TESTS "ON") 215*89c4ff92SAndroid Build Coastguard Worker # Reconsider if we in a debug build. 216*89c4ff92SAndroid Build Coastguard Worker string( TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE_LOWERCASE ) 217*89c4ff92SAndroid Build Coastguard Worker if ( NOT BUILD_TYPE_LOWERCASE STREQUAL "release" ) 218*89c4ff92SAndroid Build Coastguard Worker message("CMAKE:: BUILD TYPE IS ${CMAKE_BUILD_TYPE}") 219*89c4ff92SAndroid Build Coastguard Worker # And NDK_VERSION has been set. 220*89c4ff92SAndroid Build Coastguard Worker if ( DEFINED NDK_VERSION ) 221*89c4ff92SAndroid Build Coastguard Worker message("CMAKE:: NDK DEFINED") 222*89c4ff92SAndroid Build Coastguard Worker # And the version is less than r21. 223*89c4ff92SAndroid Build Coastguard Worker if ( ${NDK_VERSION} STRLESS "r21" ) 224*89c4ff92SAndroid Build Coastguard Worker message("CMAKE:: BUG TESTS OFF") 225*89c4ff92SAndroid Build Coastguard Worker set(INCLUDE_NDK_BUG_TESTS "OFF") 226*89c4ff92SAndroid Build Coastguard Worker endif() 227*89c4ff92SAndroid Build Coastguard Worker endif() 228*89c4ff92SAndroid Build Coastguard Worker endif() 229*89c4ff92SAndroid Build Coastguard Worker 230*89c4ff92SAndroid Build Coastguard Worker if ( INCLUDE_NDK_BUG_TESTS STREQUAL "ON" ) 231*89c4ff92SAndroid Build Coastguard Worker list(APPEND commonDelegate_unittest_sources 232*89c4ff92SAndroid Build Coastguard Worker test/NeonDelegateTests_NDK_Issue.cpp) 233*89c4ff92SAndroid Build Coastguard Worker endif() 234*89c4ff92SAndroid Build Coastguard Worker 235*89c4ff92SAndroid Build Coastguard Worker if (BUILD_CLASSIC_DELEGATE) 236*89c4ff92SAndroid Build Coastguard Worker set(classicDelegate_unittest_sources) 237*89c4ff92SAndroid Build Coastguard Worker list(APPEND classicDelegate_unittest_sources 238*89c4ff92SAndroid Build Coastguard Worker classic/src/test/ArmnnClassicDelegateTest.cpp 239*89c4ff92SAndroid Build Coastguard Worker classic/src/test/DelegateTestInterpreter.cpp) 240*89c4ff92SAndroid Build Coastguard Worker 241*89c4ff92SAndroid Build Coastguard Worker add_executable(DelegateUnitTests ${commonDelegate_unittest_sources} ${classicDelegate_unittest_sources}) 242*89c4ff92SAndroid Build Coastguard Worker 243*89c4ff92SAndroid Build Coastguard Worker target_include_directories(DelegateUnitTests SYSTEM PRIVATE "${TF_LITE_SCHEMA_INCLUDE_PATH}") 244*89c4ff92SAndroid Build Coastguard Worker target_include_directories(DelegateUnitTests SYSTEM PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/common/src/test") 245*89c4ff92SAndroid Build Coastguard Worker target_include_directories(DelegateUnitTests PUBLIC ${PROJECT_SOURCE_DIR}) 246*89c4ff92SAndroid Build Coastguard Worker 247*89c4ff92SAndroid Build Coastguard Worker # Add half library from armnn third-party libraries 248*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(DelegateUnitTests PRIVATE thirdparty_headers) 249*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(DelegateUnitTests PRIVATE armnnDelegate) 250*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(DelegateUnitTests PRIVATE Armnn::armnnUtils) 251*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(DelegateUnitTests PRIVATE profiling_library_headers) 252*89c4ff92SAndroid Build Coastguard Worker endif() 253*89c4ff92SAndroid Build Coastguard Worker 254*89c4ff92SAndroid Build Coastguard Worker if (BUILD_OPAQUE_DELEGATE) 255*89c4ff92SAndroid Build Coastguard Worker set(opaqueDelegate_unittest_sources) 256*89c4ff92SAndroid Build Coastguard Worker list(APPEND opaqueDelegate_unittest_sources 257*89c4ff92SAndroid Build Coastguard Worker common/src/test/DelegateTestInterpreter.hpp 258*89c4ff92SAndroid Build Coastguard Worker common/src/test/DelegateTestInterpreterUtils.hpp 259*89c4ff92SAndroid Build Coastguard Worker opaque/src/test/ArmnnOpaqueDelegateTest.cpp 260*89c4ff92SAndroid Build Coastguard Worker opaque/src/test/DelegateTestInterpreter.cpp 261*89c4ff92SAndroid Build Coastguard Worker test/TestUtils.hpp 262*89c4ff92SAndroid Build Coastguard Worker test/TestUtils.cpp 263*89c4ff92SAndroid Build Coastguard Worker test/CastTest.cpp 264*89c4ff92SAndroid Build Coastguard Worker test/CastTestHelper.hpp) 265*89c4ff92SAndroid Build Coastguard Worker 266*89c4ff92SAndroid Build Coastguard Worker # Until all operators are supported, we have to add tests one by one above to opaqueDelegate_unittest_sources. 267*89c4ff92SAndroid Build Coastguard Worker # After we add can add commonDelegate_unittest_sources to the add_executable below. 268*89c4ff92SAndroid Build Coastguard Worker add_executable(OpaqueDelegateUnitTests ${opaqueDelegate_unittest_sources}) 269*89c4ff92SAndroid Build Coastguard Worker 270*89c4ff92SAndroid Build Coastguard Worker target_include_directories(OpaqueDelegateUnitTests SYSTEM PRIVATE "${TF_LITE_SCHEMA_INCLUDE_PATH}") 271*89c4ff92SAndroid Build Coastguard Worker target_include_directories(OpaqueDelegateUnitTests SYSTEM PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/common/src/test") 272*89c4ff92SAndroid Build Coastguard Worker target_include_directories(OpaqueDelegateUnitTests PUBLIC ${PROJECT_SOURCE_DIR}) 273*89c4ff92SAndroid Build Coastguard Worker 274*89c4ff92SAndroid Build Coastguard Worker # Add half library from armnn third-party libraries 275*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(OpaqueDelegateUnitTests PRIVATE thirdparty_headers) 276*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(OpaqueDelegateUnitTests PRIVATE armnnOpaqueDelegate) 277*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(OpaqueDelegateUnitTests PRIVATE Armnn::armnnUtils) 278*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(OpaqueDelegateUnitTests PRIVATE profiling_library_headers) 279*89c4ff92SAndroid Build Coastguard Worker endif() 280*89c4ff92SAndroid Build Coastguard Workerendif() 281*89c4ff92SAndroid Build Coastguard Worker 282*89c4ff92SAndroid Build Coastguard Workerif(BUILD_DELEGATE_JNI_INTERFACE) 283*89c4ff92SAndroid Build Coastguard Worker add_subdirectory(armnnDelegateJNI) 284*89c4ff92SAndroid Build Coastguard Workerendif() 285*89c4ff92SAndroid Build Coastguard Worker 286*89c4ff92SAndroid Build Coastguard Worker#################################################### 287*89c4ff92SAndroid Build Coastguard Worker## Export targets 288*89c4ff92SAndroid Build Coastguard Workerset(armnn_delegate_export_targets) 289*89c4ff92SAndroid Build Coastguard Workerlist(APPEND armnn_delegate_export_targets 290*89c4ff92SAndroid Build Coastguard Worker armnnClassicDelegateObject 291*89c4ff92SAndroid Build Coastguard Worker armnnDelegate 292*89c4ff92SAndroid Build Coastguard Worker tflite_headers 293*89c4ff92SAndroid Build Coastguard Worker flatbuffer_headers 294*89c4ff92SAndroid Build Coastguard Worker profiling_library_headers 295*89c4ff92SAndroid Build Coastguard Worker thirdparty_headers) 296*89c4ff92SAndroid Build Coastguard Worker 297*89c4ff92SAndroid Build Coastguard Workerinstall( 298*89c4ff92SAndroid Build Coastguard Worker TARGETS ${armnn_delegate_export_targets} 299*89c4ff92SAndroid Build Coastguard Worker EXPORT armnn-delegate-targets 300*89c4ff92SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 301*89c4ff92SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 302*89c4ff92SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 303*89c4ff92SAndroid Build Coastguard Worker 304*89c4ff92SAndroid Build Coastguard Worker## Set export alias 305*89c4ff92SAndroid Build Coastguard Workerset_target_properties(armnnDelegate 306*89c4ff92SAndroid Build Coastguard Worker PROPERTIES 307*89c4ff92SAndroid Build Coastguard Worker EXPORT_NAME ArmnnDelegate) 308*89c4ff92SAndroid Build Coastguard Worker 309*89c4ff92SAndroid Build Coastguard Worker## Export target scrips 310*89c4ff92SAndroid Build Coastguard Workerinstall( 311*89c4ff92SAndroid Build Coastguard Worker EXPORT armnn-delegate-targets 312*89c4ff92SAndroid Build Coastguard Worker FILE ArmnnDelegateTargets.cmake 313*89c4ff92SAndroid Build Coastguard Worker NAMESPACE ArmnnDelegate:: 314*89c4ff92SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_LIBDIR}) 315*89c4ff92SAndroid Build Coastguard Worker 316*89c4ff92SAndroid Build Coastguard Worker## Create ArmnnDelegateConfig.cmake 317*89c4ff92SAndroid Build Coastguard Workerinclude(CMakePackageConfigHelpers) 318*89c4ff92SAndroid Build Coastguard Workerset(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}) 319*89c4ff92SAndroid Build Coastguard Workermessage(STATUS "CMAKE_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_DIR}" ) 320*89c4ff92SAndroid Build Coastguard Workermessage(STATUS "CMAKE_CURRENT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}" ) 321*89c4ff92SAndroid Build Coastguard WorkerSET(Armnn_DIR "${Armnn_DIR}") 322*89c4ff92SAndroid Build Coastguard Worker 323*89c4ff92SAndroid Build Coastguard Workerconfigure_package_config_file( 324*89c4ff92SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/ArmnnDelegateConfig.cmake.in 325*89c4ff92SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/ArmnnDelegateConfig.cmake 326*89c4ff92SAndroid Build Coastguard Worker INSTALL_DESTINATION ${INSTALL_CONFIGDIR} 327*89c4ff92SAndroid Build Coastguard Worker PATH_VARS Armnn_DIR) 328*89c4ff92SAndroid Build Coastguard Worker 329*89c4ff92SAndroid Build Coastguard Worker## Install ArmNN Delegate config file 330*89c4ff92SAndroid Build Coastguard Workerinstall( 331*89c4ff92SAndroid Build Coastguard Worker FILES 332*89c4ff92SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/ArmnnDelegateConfig.cmake 333*89c4ff92SAndroid Build Coastguard Worker DESTINATION ${INSTALL_CONFIGDIR}) 334*89c4ff92SAndroid Build Coastguard Worker 335*89c4ff92SAndroid Build Coastguard Worker## Export from build tree 336*89c4ff92SAndroid Build Coastguard Workerexport( 337*89c4ff92SAndroid Build Coastguard Worker EXPORT armnn-delegate-targets 338*89c4ff92SAndroid Build Coastguard Worker FILE ${CMAKE_CURRENT_BINARY_DIR}/ArmnnDelegateTargets.cmake 339*89c4ff92SAndroid Build Coastguard Worker NAMESPACE ArmnnDelegate::) 340*89c4ff92SAndroid Build Coastguard Workeradd_library(ArmnnDelegate::ArmnnDelegate ALIAS armnnDelegate) 341*89c4ff92SAndroid Build Coastguard Worker 342*89c4ff92SAndroid Build Coastguard Worker 343*89c4ff92SAndroid Build Coastguard Worker#################################################### 344