Refactor message_handler app to be more test friendly

Fix importing indexed models, the inclusion of header files was not
working.

Change-Id: Idab7e002abc31f57acc4eda6a2f1cf2defdfd5c4
diff --git a/applications/message_handler/CMakeLists.txt b/applications/message_handler/CMakeLists.txt
index 040b27d..8d4ef54 100644
--- a/applications/message_handler/CMakeLists.txt
+++ b/applications/message_handler/CMakeLists.txt
@@ -21,27 +21,6 @@
     return()
 endif()
 
-set(MESSAGE_HANDLER_ARENA_SIZE 2000000 CACHE STRING "Total size of all message handler tensor arenas")
-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
-        main.cpp
-        message_handler.cpp
-        message_queue.cpp
-    LIBRARIES
-        cmsis_device
-        $<$<TARGET_EXISTS:ethosu_core_driver>:ethosu_core_driver>
-        ethosu_mailbox
-        freertos_kernel
-        inference_process)
-
-target_include_directories(message_handler PRIVATE
-    ${LINUX_DRIVER_STACK_PATH}/kernel)
-
 # Split total tensor arena equally for each NPU
 if (TARGET ethosu_core_driver AND ETHOSU_TARGET_NPU_COUNT GREATER 0)
     set(NUM_ARENAS ${ETHOSU_TARGET_NPU_COUNT})
@@ -49,8 +28,27 @@
     set(NUM_ARENAS 1)
 endif()
 
+set(MESSAGE_HANDLER_ARENA_SIZE 2000000 CACHE STRING "Total size of all message handler tensor arenas")
 math(EXPR TENSOR_ARENA_SIZE "${MESSAGE_HANDLER_ARENA_SIZE} / ${NUM_ARENAS}")
 
+add_subdirectory(lib)
+
+set(MESSAGE_HANDLER_MODEL_0 "" CACHE STRING "Path to built in model 0")
+set(MESSAGE_HANDLER_MODEL_1 "" CACHE STRING "Path to built in model 1")
+set(MESSAGE_HANDLER_MODEL_2 "" CACHE STRING "Path to built in model 2")
+set(MESSAGE_HANDLER_MODEL_3 "" CACHE STRING "Path to built in model 3")
+
+ethosu_add_executable(message_handler
+    SOURCES
+        main.cpp
+    LIBRARIES
+        message_handler_lib
+        freertos_kernel)
+
+target_include_directories(message_handler PRIVATE
+    indexed_networks
+    ${LINUX_DRIVER_STACK_PATH}/kernel)
+
 target_compile_definitions(message_handler PRIVATE
     TENSOR_ARENA_SIZE=${TENSOR_ARENA_SIZE}
     $<$<BOOL:${MESSAGE_HANDLER_MODEL_0}>:MODEL_0=${MESSAGE_HANDLER_MODEL_0}>