IVGCVSW-3656 Make the reference backend optional
[platform/upstream/armnn.git] / src / backends / backendsCommon / test / CMakeLists.txt
1 #
2 # Copyright © 2017 Arm Ltd. All rights reserved.
3 # SPDX-License-Identifier: MIT
4 #
5
6 list(APPEND armnnBackendsCommonUnitTests_sources
7     ActivationFixture.hpp
8     ActivationTestImpl.hpp
9     BackendIdTests.cpp
10     BackendRegistryTests.cpp
11     BatchNormTestImpl.hpp
12     CommonTestUtils.cpp
13     CommonTestUtils.hpp
14     Conv2dTestImpl.hpp
15     ConvertFp16ToFp32TestImpl.hpp
16     ConvertFp32ToFp16TestImpl.hpp
17     DebugTestImpl.hpp
18     DequantizeTestImpl.hpp
19     DequantizeEndToEndTestImpl.hpp
20     DetectionPostProcessLayerTestImpl.hpp
21     DetectionPostProcessTestImpl.hpp
22     DynamicBackendTests.cpp
23     DynamicBackendTests.hpp
24     EndToEndTestImpl.hpp
25     FullyConnectedTestImpl.hpp
26     GatherTestImpl.hpp
27     GatherEndToEndTestImpl.hpp
28     IsLayerSupportedTestImpl.hpp
29     JsonPrinterTestImpl.cpp
30     JsonPrinterTestImpl.hpp
31     LayerReleaseConstantDataTest.cpp
32     LayerTests.cpp
33     LayerTests.hpp
34     LstmTestImpl.hpp
35     NormTestImpl.hpp
36     ConcatTestImpl.hpp
37     MockBackend.cpp
38     MockBackend.hpp
39     MockBackendId.hpp
40     OptimizeSubgraphViewTests.cpp
41     OptimizationViewsTests.cpp
42     PermuteTestImpl.hpp
43     Pooling2dTestImpl.hpp
44     PreluEndToEndTestImpl.hpp
45     QuantizeHelper.hpp
46     QuantizeTestImpl.hpp
47     QuantizedLstmEndToEndTestImpl.hpp
48     ResizeEndToEndTestImpl.hpp
49     RuntimeTestImpl.hpp
50     SoftmaxTestImpl.hpp
51     SpaceToDepthTestImpl.hpp
52     SpaceToDepthEndToEndTestImpl.hpp
53     SplitterEndToEndTestImpl.hpp
54     SplitterTestImpl.hpp
55     StridedSliceTestImpl.hpp
56     TensorCopyUtils.cpp
57     TensorCopyUtils.hpp
58     WorkloadFactoryHelper.hpp
59     WorkloadTestUtils.hpp
60 )
61
62 if (ARMCOMPUTEREF)
63     list(APPEND armnnBackendsCommonUnitTests_sources
64         OptimizedNetworkTests.cpp
65         WorkloadDataValidation.cpp
66         )
67 endif()
68
69 add_library(armnnBackendsCommonUnitTests OBJECT ${armnnBackendsCommonUnitTests_sources})
70 target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
71 target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
72 target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
73
74 # Dummy shared object for testing.
75 # This is a simple library used to test the utility functions that will be used to handle the shared objects.
76
77 list(APPEND testSharedObject_sources
78     TestSharedObject.cpp
79     TestSharedObject.hpp
80 )
81
82 add_library_ex(TestSharedObject MODULE ${testSharedObject_sources})
83 set_target_properties(TestSharedObject PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testSharedObject)
84 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/testSharedObject/libNoSharedObject.txt "This is not a shared object")
85
86 # Dummy dynamic backends for testing.
87 # Both a valid and a number of invalid dummy dynamic backends (covering various use cases) share the
88 # same source code. The various test cases are put together in the code using compiler directives.
89
90 list(APPEND testDynamicBackend_sources
91     TestDynamicBackend.cpp
92     TestDynamicBackend.hpp
93 )
94
95 add_library_ex(ValidTestDynamicBackend MODULE ${testDynamicBackend_sources})
96 target_compile_definitions(ValidTestDynamicBackend PRIVATE -DVALID_TEST_DYNAMIC_BACKEND_1)
97 target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
98 target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
99 target_link_libraries(ValidTestDynamicBackend armnn)
100 set_target_properties(ValidTestDynamicBackend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
101
102 add_library_ex(InvalidTestDynamicBackend1 MODULE ${testDynamicBackend_sources})
103 target_compile_definitions(InvalidTestDynamicBackend1 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_1)
104 target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
105 target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
106 target_link_libraries(InvalidTestDynamicBackend1 armnn)
107 set_target_properties(InvalidTestDynamicBackend1 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
108
109 add_library_ex(InvalidTestDynamicBackend2 MODULE ${testDynamicBackend_sources})
110 target_compile_definitions(InvalidTestDynamicBackend2 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_2)
111 target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
112 target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
113 target_link_libraries(InvalidTestDynamicBackend2 armnn)
114 set_target_properties(InvalidTestDynamicBackend2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
115
116 add_library_ex(InvalidTestDynamicBackend3 MODULE ${testDynamicBackend_sources})
117 target_compile_definitions(InvalidTestDynamicBackend3 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_3)
118 target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
119 target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
120 target_link_libraries(InvalidTestDynamicBackend3 armnn)
121 set_target_properties(InvalidTestDynamicBackend3 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
122
123 add_library_ex(InvalidTestDynamicBackend4 MODULE ${testDynamicBackend_sources})
124 target_compile_definitions(InvalidTestDynamicBackend4 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_4)
125 target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
126 target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
127 target_link_libraries(InvalidTestDynamicBackend4 armnn)
128 set_target_properties(InvalidTestDynamicBackend4 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
129
130 add_library_ex(InvalidTestDynamicBackend5 MODULE ${testDynamicBackend_sources})
131 target_compile_definitions(InvalidTestDynamicBackend5 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_5)
132 target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
133 target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
134 target_link_libraries(InvalidTestDynamicBackend5 armnn)
135 set_target_properties(InvalidTestDynamicBackend5 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
136
137 add_library_ex(InvalidTestDynamicBackend6 MODULE ${testDynamicBackend_sources})
138 target_compile_definitions(InvalidTestDynamicBackend6 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_6)
139 target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
140 target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
141 target_link_libraries(InvalidTestDynamicBackend6 armnn)
142 set_target_properties(InvalidTestDynamicBackend6 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
143
144 add_library_ex(InvalidTestDynamicBackend7 MODULE ${testDynamicBackend_sources})
145 target_compile_definitions(InvalidTestDynamicBackend7 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_7)
146 target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
147 target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
148 target_link_libraries(InvalidTestDynamicBackend7 armnn)
149 set_target_properties(InvalidTestDynamicBackend7 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
150
151 # Dummy files and directories for testing the dynamic backend file parsing.
152
153 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so          "Test file for dynamic backend file parsing")
154 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so.1        "Test file for dynamic backend file parsing")
155 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so.1.2      "Test file for dynamic backend file parsing")
156 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so.1.2.3    "Test file for dynamic backend file parsing")
157 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so.10.1.27  "Test file for dynamic backend file parsing")
158 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so.10.1.33. "Test file for dynamic backend file parsing")
159 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so.3.4..5   "Test file for dynamic backend file parsing")
160 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend.so.1,1.1    "Test file for dynamic backend file parsing")
161
162 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm123_GpuAcc_backend.so       "Test file for dynamic backend file parsing")
163 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc456_backend.so       "Test file for dynamic backend file parsing")
164 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm%Co_GpuAcc_backend.so       "Test file for dynamic backend file parsing")
165 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_Gpu.Acc_backend.so         "Test file for dynamic backend file parsing")
166
167 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/GpuAcc_backend.so              "Test file for dynamic backend file parsing")
168 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/_GpuAcc_backend.so             "Test file for dynamic backend file parsing")
169 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm__backend.so                "Test file for dynamic backend file parsing")
170 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc.so                  "Test file for dynamic backend file parsing")
171 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/__backend.so                   "Test file for dynamic backend file parsing")
172 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/__.so                          "Test file for dynamic backend file parsing")
173
174 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend             "Test file for dynamic backend file parsing")
175 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath1/Arm_GpuAcc_backend_v1.2.so     "Test file for dynamic backend file parsing")
176
177 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath2/Arm_CpuAcc_backend.so          "Test file for dynamic backend file parsing")
178 add_custom_target(link_dummy_dynamic_backend ALL
179                   COMMAND ${CMAKE_COMMAND} -E create_symlink Arm_CpuAcc_backend.so backendsTestPath2/Arm_CpuAcc_backend.so.1
180                   COMMAND ${CMAKE_COMMAND} -E create_symlink Arm_CpuAcc_backend.so.1 backendsTestPath2/Arm_CpuAcc_backend.so.1.2
181                   COMMAND ${CMAKE_COMMAND} -E create_symlink Arm_CpuAcc_backend.so.1.2 backendsTestPath2/Arm_CpuAcc_backend.so.1.2.3
182                   COMMAND ${CMAKE_COMMAND} -E create_symlink nothing backendsTestPath2/Arm_no_backend.so)
183 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath2/Arm_GpuAcc_backend.so          "Test file for dynamic backend file parsing")
184
185 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath3)
186
187 # Dummy dynamic backends for testing.
188 # These shared objects are used to test the creation of dynamic backend instances in ArmNN.
189
190 add_library_ex(Arm_TestValid2_backend MODULE ${testDynamicBackend_sources})
191 target_compile_definitions(Arm_TestValid2_backend PRIVATE -DVALID_TEST_DYNAMIC_BACKEND_2)
192 target_include_directories(Arm_TestValid2_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
193 target_include_directories(Arm_TestValid2_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
194 target_link_libraries(Arm_TestValid2_backend armnn)
195 set_target_properties(Arm_TestValid2_backend PROPERTIES PREFIX "")
196 set_target_properties(Arm_TestValid2_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath5)
197 add_custom_command(TARGET Arm_TestValid2_backend POST_BUILD
198                    COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:Arm_TestValid2_backend> ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath6)
199
200 add_library_ex(Arm_TestValid3_backend MODULE ${testDynamicBackend_sources})
201 target_compile_definitions(Arm_TestValid3_backend PRIVATE -DVALID_TEST_DYNAMIC_BACKEND_3)
202 target_include_directories(Arm_TestValid3_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
203 target_include_directories(Arm_TestValid3_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
204 target_link_libraries(Arm_TestValid3_backend armnn)
205 set_target_properties(Arm_TestValid3_backend PROPERTIES PREFIX "")
206 set_target_properties(Arm_TestValid3_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath5)
207
208 add_library_ex(Arm_TestInvalid8_backend MODULE ${testDynamicBackend_sources})
209 target_compile_definitions(Arm_TestInvalid8_backend PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_8)
210 target_include_directories(Arm_TestInvalid8_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
211 target_include_directories(Arm_TestInvalid8_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
212 target_link_libraries(Arm_TestInvalid8_backend armnn)
213 set_target_properties(Arm_TestInvalid8_backend PROPERTIES PREFIX "")
214 set_target_properties(Arm_TestInvalid8_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath5)
215
216 add_library_ex(Arm_TestValid4_backend MODULE ${testDynamicBackend_sources})
217 target_compile_definitions(Arm_TestValid4_backend PRIVATE -DVALID_TEST_DYNAMIC_BACKEND_4)
218 target_include_directories(Arm_TestValid4_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
219 target_include_directories(Arm_TestValid4_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
220 target_link_libraries(Arm_TestValid4_backend armnn)
221 set_target_properties(Arm_TestValid4_backend PROPERTIES PREFIX "")
222 set_target_properties(Arm_TestValid4_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath6)
223
224 add_library_ex(Arm_TestValid5_backend MODULE ${testDynamicBackend_sources})
225 target_compile_definitions(Arm_TestValid5_backend PRIVATE -DVALID_TEST_DYNAMIC_BACKEND_5)
226 target_include_directories(Arm_TestValid5_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
227 target_include_directories(Arm_TestValid5_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
228 target_link_libraries(Arm_TestValid5_backend armnn)
229 set_target_properties(Arm_TestValid5_backend PROPERTIES PREFIX "")
230 set_target_properties(Arm_TestValid5_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath6)
231
232 add_library_ex(Arm_TestInvalid9_backend MODULE ${testDynamicBackend_sources})
233 target_compile_definitions(Arm_TestInvalid9_backend PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_9)
234 target_include_directories(Arm_TestInvalid9_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
235 target_include_directories(Arm_TestInvalid9_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
236 target_link_libraries(Arm_TestInvalid9_backend armnn)
237 set_target_properties(Arm_TestInvalid9_backend PROPERTIES PREFIX "")
238 set_target_properties(Arm_TestInvalid9_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath6)
239
240 add_library_ex(Arm_TestInvalid10_backend MODULE ${testDynamicBackend_sources})
241 target_compile_definitions(Arm_TestInvalid10_backend PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_10)
242 target_include_directories(Arm_TestInvalid10_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
243 target_include_directories(Arm_TestInvalid10_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
244 target_link_libraries(Arm_TestInvalid10_backend armnn)
245 set_target_properties(Arm_TestInvalid10_backend PROPERTIES PREFIX "")
246 set_target_properties(Arm_TestInvalid10_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath9)
247
248 add_library_ex(Arm_TestInvalid11_backend MODULE ${testDynamicBackend_sources})
249 target_compile_definitions(Arm_TestInvalid11_backend PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_11)
250 target_include_directories(Arm_TestInvalid11_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
251 target_include_directories(Arm_TestInvalid11_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
252 target_link_libraries(Arm_TestInvalid11_backend armnn)
253 set_target_properties(Arm_TestInvalid11_backend PROPERTIES PREFIX "")
254 set_target_properties(Arm_TestInvalid11_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath9)
255
256 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath7)