blob: 5303d81d265481724360aa14ab71c187dff1bbb5 [file] [log] [blame]
Sadik Armagan3c24f432020-10-19 17:35:30 +01001#
2# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3# SPDX-License-Identifier: MIT
4#
5
Jan Eilersb968a4f2020-11-15 14:44:43 +00006cmake_minimum_required (VERSION 3.7.0)
Sadik Armagan3c24f432020-10-19 17:35:30 +01007project(armnnDelegate)
8
Finn Williams6f9f9902020-11-13 13:23:15 +00009set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wextra -Werror -Wold-style-cast -Wno-missing-braces -Wconversion -Wsign-conversion")
Sadik Armagan3c24f432020-10-19 17:35:30 +010010
Finn Williamsbbbefec2020-11-25 14:32:42 +000011set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/")
Sadik Armagan3c24f432020-10-19 17:35:30 +010012
13set(armnnDelegate_sources)
14list(APPEND armnnDelegate_sources
15 include/armnn_delegate.hpp
16 include/DelegateOptions.hpp
17 src/armnn_delegate.cpp
Sadik Armagan62483be2020-10-23 17:14:43 +010018 src/DelegateOptions.cpp
19 src/Activation.hpp
20 src/ArgMinMax.hpp
21 src/BatchSpace.hpp
22 src/Comparison.hpp
23 src/Convolution.hpp
24 src/Control.hpp
25 src/DelegateUtils.hpp
26 src/ElementwiseBinary.hpp
27 src/ElementwiseUnary.hpp
28 src/Fill.hpp
29 src/FullyConnected.hpp
30 src/Gather.hpp
Matthew Sloyanc8eb9552020-11-26 10:54:22 +000031 src/LogicalBinary.hpp
Sadik Armagan62483be2020-10-23 17:14:43 +010032 src/Lstm.hpp
33 src/Normalization.hpp
34 src/Pad.hpp
35 src/Pooling.hpp
36 src/Quantization.hpp
37 src/Redefine.hpp
38 src/Resize.hpp
39 src/Round.hpp
40 src/Slice.hpp
41 src/Softmax.hpp
42 src/SpaceDepth.hpp
Sadik Armagan34fa1bd2020-11-27 12:40:52 +000043 src/Split.hpp
Sadik Armagan62483be2020-10-23 17:14:43 +010044 src/Transpose.hpp)
Sadik Armagan3c24f432020-10-19 17:35:30 +010045
46add_library(armnnDelegate SHARED ${armnnDelegate_sources})
47
48target_include_directories(armnnDelegate
49 PUBLIC
50 $<INSTALL_INTERFACE:include>
51 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
52 PRIVATE
53 ${CMAKE_CURRENT_SOURCE_DIR}/src)
54
55include(GNUInstallDirs)
56
57## Add Armnn as a Dependency
Finn Williamsbbbefec2020-11-25 14:32:42 +000058if(NOT ARMNN_SUB_PROJECT)
59 find_package(Armnn REQUIRED CONFIG HINTS ${Armnn_DIR})
60endif()
61target_link_libraries(armnnDelegate PUBLIC Armnn::Armnn)
Sadik Armagan3c24f432020-10-19 17:35:30 +010062
63## Add TfLite v2.3.1 dependency
64find_package(TfLite REQUIRED MODULE)
65
Finn Williamsbbbefec2020-11-25 14:32:42 +000066target_link_libraries(armnnDelegate PUBLIC ${TfLite_LIB})
Sadik Armagan3c24f432020-10-19 17:35:30 +010067
Finn Williams6f9f9902020-11-13 13:23:15 +000068# Various tflite header files are not warning clean
69# We can't change compilation flags on header files directly, so we need to add them to an interface library first
70add_library(tflite_headers INTERFACE)
71target_include_directories(tflite_headers INTERFACE $<BUILD_INTERFACE:${TfLite_INCLUDE_DIR}>
72 $<INSTALL_INTERFACE:include/tflite_headers>)
73
74target_compile_options(tflite_headers INTERFACE $<$<CXX_COMPILER_ID:GNU>:-Wno-conversion
75 -Wno-sign-conversion
76 -Wno-unused-parameter
77 -Wno-unused-function>)
78
Finn Williamsbbbefec2020-11-25 14:32:42 +000079target_link_libraries(armnnDelegate PUBLIC tflite_headers)
Sadik Armagan3c24f432020-10-19 17:35:30 +010080
Sadik Armagan3c24f432020-10-19 17:35:30 +010081## Add Flatbuffers dependency
82find_package(Flatbuffers REQUIRED MODULE)
83
Finn Williamsbbbefec2020-11-25 14:32:42 +000084target_link_libraries(armnnDelegate PRIVATE
Sadik Armagan3c24f432020-10-19 17:35:30 +010085 ${Flatbuffers_LIB})
86
Finn Williams6f9f9902020-11-13 13:23:15 +000087# include/flatbuffers/flatbuffers.h is not warning clean
88# We can't change compilation flags on header files directly, so we need to add them to an interface library first
89add_library(flatbuffer_headers INTERFACE)
90target_include_directories(flatbuffer_headers INTERFACE $<BUILD_INTERFACE:${Flatbuffers_INCLUDE_DIR}>
91 $<INSTALL_INTERFACE:include/flatbuffer_headers>)
92target_compile_options(flatbuffer_headers INTERFACE $<$<CXX_COMPILER_ID:GNU>:-Wno-sign-conversion>)
93
Finn Williamsbbbefec2020-11-25 14:32:42 +000094target_link_libraries(armnnDelegate PUBLIC flatbuffer_headers)
Sadik Armagan3c24f432020-10-19 17:35:30 +010095
Sadik Armagan4189cc52020-11-11 18:01:48 +000096option(BUILD_UNIT_TESTS "Build unit tests" ON)
97if(BUILD_UNIT_TESTS)
98 set(armnnDelegate_unittest_sources)
99 list(APPEND armnnDelegate_unittest_sources
David Monahan0cf84422020-11-16 15:53:03 +0000100 src/test/ActivationTest.cpp
101 src/test/ActivationTestHelper.hpp
Sadik Armagan62483be2020-10-23 17:14:43 +0100102 src/test/ArmnnDelegateTest.cpp
Sadik Armagan8b9858d2020-11-09 08:26:22 +0000103 src/test/ComparisonTest.cpp
104 src/test/ComparisonTestHelper.hpp
Matthew Sloyan91c41712020-11-13 09:47:35 +0000105 src/test/ControlTest.cpp
106 src/test/ControlTestHelper.hpp
Sadik Armagan32ca1442020-11-13 17:51:56 +0000107 src/test/Convolution2dTest.cpp
108 src/test/ConvolutionTestHelper.hpp
109 src/test/DepthwiseConvolution2dTest.cpp
Sadik Armagan67e95f22020-10-29 16:14:54 +0000110 src/test/ElementwiseBinaryTest.cpp
111 src/test/ElementwiseBinaryTestHelper.hpp
Sadik Armagan0534e032020-10-27 17:30:18 +0000112 src/test/ElementwiseUnaryTest.cpp
Matthew Sloyan0d35a932020-11-09 12:25:05 +0000113 src/test/ElementwiseUnaryTestHelper.hpp
Sadik Armagan6e36a642020-11-10 21:18:41 +0000114 src/test/FullyConnectedTest.cpp
115 src/test/FullyConnectedTestHelper.hpp
Teresa Charlin98427a12020-11-25 18:22:57 +0000116 src/test/GatherTest.cpp
117 src/test/GatherTestHelper.hpp
Matthew Sloyanc8eb9552020-11-26 10:54:22 +0000118 src/test/LogicalTest.cpp
119 src/test/LogicalTestHelper.hpp
Narumol Prangnawarat50c87d32020-11-09 18:42:11 +0000120 src/test/Pooling2dTest.cpp
121 src/test/Pooling2dTestHelper.hpp
Matthew Sloyan0d35a932020-11-09 12:25:05 +0000122 src/test/QuantizationTest.cpp
Jan Eilerse339bf62020-11-10 18:43:23 +0000123 src/test/QuantizationTestHelper.hpp
David Monahan1670b0c2020-11-18 14:40:27 +0000124 src/test/RedefineTestHelper.hpp
125 src/test/ReshapeTest.cpp
Jan Eilerse339bf62020-11-10 18:43:23 +0000126 src/test/ResizeTest.cpp
127 src/test/ResizeTestHelper.hpp
James Warda8578102020-11-13 18:05:04 +0000128 src/test/SoftmaxTest.cpp
129 src/test/SoftmaxTestHelper.hpp
Sadik Armagan34fa1bd2020-11-27 12:40:52 +0000130 src/test/SplitTest.cpp
131 src/test/SplitTestHelper.hpp
James Warda8578102020-11-13 18:05:04 +0000132 src/test/TestUtils.hpp
Jan Eilers3812fbc2020-11-17 19:06:35 +0000133 src/test/TestUtils.cpp
James Wardf89964e2020-11-09 11:57:47 +0000134 src/test/TransposeTest.cpp
James Warda8578102020-11-13 18:05:04 +0000135 src/test/TransposeTestHelper.hpp)
Sadik Armagan3c24f432020-10-19 17:35:30 +0100136
Sadik Armagan4189cc52020-11-11 18:01:48 +0000137 add_executable(DelegateUnitTests ${armnnDelegate_unittest_sources})
138 target_include_directories(DelegateUnitTests PRIVATE third-party)
Sadik Armagan3c24f432020-10-19 17:35:30 +0100139
Sadik Armagan4189cc52020-11-11 18:01:48 +0000140 # Add half library from armnn third-party libraries
141 target_include_directories(DelegateUnitTests PRIVATE ${ARMNN_SOURCE_DIR}/third-party)
Sadik Armagan3c24f432020-10-19 17:35:30 +0100142
Finn Williamsbbbefec2020-11-25 14:32:42 +0000143 target_link_libraries(DelegateUnitTests PRIVATE armnnDelegate)
144 target_link_libraries(DelegateUnitTests PRIVATE Armnn::armnnUtils)
Sadik Armagan4189cc52020-11-11 18:01:48 +0000145
Finn Williamsbbbefec2020-11-25 14:32:42 +0000146 target_link_libraries(DelegateUnitTests PRIVATE tflite_headers)
147 target_link_libraries(DelegateUnitTests PRIVATE flatbuffer_headers)
Finn Williams6f9f9902020-11-13 13:23:15 +0000148
Sadik Armagan4189cc52020-11-11 18:01:48 +0000149endif()
Sadik Armagan3c24f432020-10-19 17:35:30 +0100150
151####################################################
152## Export targets
153set(armnn_delegate_export_targets)
154list(APPEND armnn_delegate_export_targets
Finn Williams6f9f9902020-11-13 13:23:15 +0000155 armnnDelegate
156 tflite_headers
157 flatbuffer_headers)
Sadik Armagan3c24f432020-10-19 17:35:30 +0100158
159install(
160 TARGETS ${armnn_delegate_export_targets}
161 EXPORT armnn-delegate-targets
162 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
163 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
164 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
165
166## Set export alias
167set_target_properties(armnnDelegate
168 PROPERTIES
169 EXPORT_NAME ArmnnDelegate)
170
171## Export target scrips
172install(
173 EXPORT armnn-delegate-targets
174 FILE ArmnnDelegateTargets.cmake
175 NAMESPACE ArmnnDelegate::
176 DESTINATION ${CMAKE_INSTALL_LIBDIR})
177
178## Create ArmnnDelegateConfig.cmake
179include(CMakePackageConfigHelpers)
180set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR})
181message(STATUS "CMAKE_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_DIR}" )
182message(STATUS "CMAKE_CURRENT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}" )
Finn Williamsbbbefec2020-11-25 14:32:42 +0000183SET(Armnn_DIR "${Armnn_DIR}")
184
Sadik Armagan3c24f432020-10-19 17:35:30 +0100185configure_package_config_file(
186 ${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/ArmnnDelegateConfig.cmake.in
187 ${CMAKE_CURRENT_BINARY_DIR}/ArmnnDelegateConfig.cmake
Finn Williamsbbbefec2020-11-25 14:32:42 +0000188 INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
189 PATH_VARS Armnn_DIR)
Sadik Armagan3c24f432020-10-19 17:35:30 +0100190
191## Install ArmNN Delegate config file
192install(
193 FILES
194 ${CMAKE_CURRENT_BINARY_DIR}/ArmnnDelegateConfig.cmake
195 DESTINATION ${INSTALL_CONFIGDIR})
196
197## Export from build tree
198export(
199 EXPORT armnn-delegate-targets
200 FILE ${CMAKE_CURRENT_BINARY_DIR}/ArmnnDelegateTargets.cmake
201 NAMESPACE ArmnnDelegate::)
Sadik Armagan5d03e312020-11-17 16:43:56 +0000202add_library(ArmnnDelegate::ArmnnDelegate ALIAS armnnDelegate)
203
Sadik Armagan3c24f432020-10-19 17:35:30 +0100204
Narumol Prangnawarat50c87d32020-11-09 18:42:11 +0000205####################################################