xref: /aosp_15_r20/external/armnn/delegate/CMakeLists.txt (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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