IVGCVSW-7133 Add TosaMappings backbone structure with support for Addition TosaMappings operator.

Signed-off-by: Cathal Corbett <cathal.corbett@arm.com>
Change-Id: Ibea0cf625b3af4ab38e8b985f7a129c983ca9659
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 30e526c..c63d8fc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -512,6 +512,37 @@
     target_link_libraries(armnn PUBLIC ${ARMCOMPUTE_LIBRARIES})
 endif()
 
+# Flatbuffers is not included in armnn if the armnnSerializer is not present
+# Required to target link both flatbuffers and tosa_serialization_lib to armnn
+if (ARMNNTOSAREF)
+    if (FLATBUFFERS_LIBRARY)
+        target_link_libraries(armnn PUBLIC ${FLATBUFFERS_LIBRARY})
+    else()
+        # Use PATH_SUFFIXES to help find separate libs for debug/release on Windows builds
+        find_library(FLATBUFFERS_LIBRARY_DEBUG NAMES flatbuffers
+                HINTS ${FLATBUFFERS_BUILD_DIR}
+                PATH_SUFFIXES "Debug")
+        find_library(FLATBUFFERS_LIBRARY_RELEASE NAMES flatbuffers
+                HINTS ${FLATBUFFERS_BUILD_DIR}
+                PATH_SUFFIXES "Release")
+        target_link_libraries(armnn PUBLIC
+                debug ${FLATBUFFERS_LIBRARY_DEBUG}
+                optimized ${FLATBUFFERS_LIBRARY_RELEASE})
+    endif()
+
+    if (TOSA_SERIALIZATION_LIB)
+        target_link_libraries(armnn PUBLIC -Wl,--whole-archive ${TOSA_SERIALIZATION_LIB} -Wl,--no-whole-archive)
+    else()
+        find_library(TOSA_SERIALIZATION_LIB
+            NAMES libtosa_serialization_lib.a tosa_serialization_lib
+            HINTS ${TOSA_SERIALIZATION_LIB_ROOT}/lib /usr/local/lib /usr/lib)
+
+        message(STATUS "TOSA serialization library set to ${TOSA_SERIALIZATION_LIB}")
+
+        target_link_libraries(armnn PUBLIC -Wl,--whole-archive ${TOSA_SERIALIZATION_LIB} -Wl,--no-whole-archive)
+    endif()
+endif()
+
 if(PROFILING_BACKEND_STREAMLINE AND (NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android)))
     target_link_libraries(armnn PUBLIC ${CMAKE_THREAD_LIBS_INIT})
 endif()