IVGCVSW-5587 Remove Tensorflow requirement from Arm NN TfLite delegate

 * Added support for building the delegate with an external armnn path
 * Replaced potentially troublesome package manager
 * Explicitly set the privacy levels of delegate libraries
 * Fixed some error handling in ExecuteNetwork

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I2a7abc099796012cbb043c5b319f81778c9f3b56
diff --git a/delegate/CMakeLists.txt b/delegate/CMakeLists.txt
index 677a38e..aa2f360 100644
--- a/delegate/CMakeLists.txt
+++ b/delegate/CMakeLists.txt
@@ -8,7 +8,7 @@
 
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wextra -Werror -Wold-style-cast -Wno-missing-braces -Wconversion -Wsign-conversion")
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/")
 
 set(armnnDelegate_sources)
 list(APPEND armnnDelegate_sources
@@ -54,24 +54,15 @@
 include(GNUInstallDirs)
 
 ## Add Armnn as a Dependency
-find_package(Armnn REQUIRED)
-target_link_libraries(armnnDelegate Armnn::Armnn)
-
-## Add Tensorflow v2.3.1 dependency
-find_package(Tensorflow 2.3.1 REQUIRED MODULE)
-
-target_link_libraries(armnnDelegate
-        ${Tensorflow_LIB})
-
-target_include_directories(armnnDelegate
-        PRIVATE
-            ${Tensorflow_INCLUDE_DIR})
+if(NOT ARMNN_SUB_PROJECT)
+    find_package(Armnn REQUIRED CONFIG HINTS ${Armnn_DIR})
+endif()
+target_link_libraries(armnnDelegate PUBLIC Armnn::Armnn)
 
 ## Add TfLite v2.3.1 dependency
 find_package(TfLite REQUIRED MODULE)
 
-target_link_libraries(armnnDelegate
-        ${TfLite_LIB})
+target_link_libraries(armnnDelegate PUBLIC ${TfLite_LIB})
 
 # Various tflite header files are not warning clean
 # We can't change compilation flags on header files directly, so we need to add them to an interface library first
@@ -84,12 +75,12 @@
                                                                          -Wno-unused-parameter
                                                                          -Wno-unused-function>)
 
-target_link_libraries(armnnDelegate tflite_headers)
+target_link_libraries(armnnDelegate PUBLIC tflite_headers)
 
 ## Add Flatbuffers dependency
 find_package(Flatbuffers REQUIRED MODULE)
 
-target_link_libraries(armnnDelegate
+target_link_libraries(armnnDelegate PRIVATE
         ${Flatbuffers_LIB})
 
 # include/flatbuffers/flatbuffers.h is not warning clean
@@ -99,7 +90,7 @@
                                                  $<INSTALL_INTERFACE:include/flatbuffer_headers>)
 target_compile_options(flatbuffer_headers INTERFACE $<$<CXX_COMPILER_ID:GNU>:-Wno-sign-conversion>)
 
-target_link_libraries(armnnDelegate flatbuffer_headers)
+target_link_libraries(armnnDelegate PUBLIC flatbuffer_headers)
 
 option(BUILD_UNIT_TESTS "Build unit tests" ON)
 if(BUILD_UNIT_TESTS)
@@ -146,12 +137,11 @@
     # Add half library from armnn third-party libraries
     target_include_directories(DelegateUnitTests PRIVATE ${ARMNN_SOURCE_DIR}/third-party)
 
-    target_link_libraries(DelegateUnitTests armnnDelegate)
-    target_link_libraries(DelegateUnitTests Armnn::armnnUtils)
+    target_link_libraries(DelegateUnitTests PRIVATE armnnDelegate)
+    target_link_libraries(DelegateUnitTests PRIVATE Armnn::armnnUtils)
 
-target_link_libraries(DelegateUnitTests tflite_headers)
-
-target_link_libraries(DelegateUnitTests flatbuffer_headers)
+    target_link_libraries(DelegateUnitTests PRIVATE tflite_headers)
+    target_link_libraries(DelegateUnitTests PRIVATE flatbuffer_headers)
 
 endif()
 
@@ -187,10 +177,13 @@
 set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR})
 message(STATUS "CMAKE_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_DIR}" )
 message(STATUS "CMAKE_CURRENT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}" )
+SET(Armnn_DIR "${Armnn_DIR}")
+
 configure_package_config_file(
         ${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/ArmnnDelegateConfig.cmake.in
         ${CMAKE_CURRENT_BINARY_DIR}/ArmnnDelegateConfig.cmake
-        INSTALL_DESTINATION ${INSTALL_CONFIGDIR})
+        INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
+        PATH_VARS  Armnn_DIR)
 
 ## Install ArmNN Delegate config file
 install(