Firmware resident model

Support building a network model into the firmware binary. The model
can be placed by a scatter file or linker script in for example a
low lateny high bandwidth memory like SRAM.

Change-Id: Ic742abed65e20f0da4ded7adefb039389b68b767
diff --git a/applications/message_handler/CMakeLists.txt b/applications/message_handler/CMakeLists.txt
index 0cb95cc..72d930f 100644
--- a/applications/message_handler/CMakeLists.txt
+++ b/applications/message_handler/CMakeLists.txt
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2020-2021 Arm Limited. All rights reserved.
+# Copyright (c) 2020-2022 Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -22,6 +22,10 @@
 endif()
 
 set(MESSAGE_HANDLER_ARENA_SIZE 2000000 CACHE STRING "Size of message handler tensor arena")
+set(MESSAGE_HANDLER_MODEL_0 FALSE CACHE STRING "Path to built in model 0")
+set(MESSAGE_HANDLER_MODEL_1 FALSE CACHE STRING "Path to built in model 1")
+set(MESSAGE_HANDLER_MODEL_2 FALSE CACHE STRING "Path to built in model 2")
+set(MESSAGE_HANDLER_MODEL_3 FALSE CACHE STRING "Path to built in model 3")
 
 ethosu_add_executable(message_handler
     SOURCES
@@ -39,4 +43,8 @@
     ${LINUX_DRIVER_STACK_PATH}/kernel)
 
 target_compile_definitions(message_handler PRIVATE
-    TENSOR_ARENA_SIZE=${MESSAGE_HANDLER_ARENA_SIZE})
+    TENSOR_ARENA_SIZE=${MESSAGE_HANDLER_ARENA_SIZE}
+    $<$<BOOL:${MESSAGE_HANDLER_MODEL_0}>:MODEL_0=${MESSAGE_HANDLER_MODEL_0}>
+    $<$<BOOL:${MESSAGE_HANDLER_MODEL_1}>:MODEL_1=${MESSAGE_HANDLER_MODEL_1}>
+    $<$<BOOL:${MESSAGE_HANDLER_MODEL_2}>:MODEL_2=${MESSAGE_HANDLER_MODEL_2}>
+    $<$<BOOL:${MESSAGE_HANDLER_MODEL_3}>:MODEL_3=${MESSAGE_HANDLER_MODEL_3}>)