App: Add NS interface code moved from TF-M

Add NS interface code moved from TF-M. It includes OS wrapper headers
and RTX specific implementation of OS wrapper.

Signed-off-by: David Hu <david.hu@arm.com>
Change-Id: I0b88535eaa720b52d2090d5ed041987093df9d75
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index a210219..2843056 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -27,19 +27,28 @@
 set(INTERFACE_SRC_DIR    ${CMAKE_SOURCE_DIR}/interface/src)
 set(INTERFACE_INC_DIR    ${CMAKE_SOURCE_DIR}/interface/include)
 
+# NS interface implemented by NSPE
+set(NS_INTERFACE_DIR     ${CMAKE_CURRENT_SOURCE_DIR}/../ns_interface)
+
 #################### TF-M NS interface (header only) ###########################
 
 add_library(tfm_ns_interface INTERFACE)
 
+# Include interface headers exported by TF-M
 target_include_directories(tfm_ns_interface
     INTERFACE
         ${INTERFACE_INC_DIR}
         ${CMAKE_BINARY_DIR}/generated/interface/include
-        ${INTERFACE_INC_DIR}/os_wrapper
         $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:${INTERFACE_INC_DIR}/multi_core>
         $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:${CMAKE_SOURCE_DIR}/platform/ext/cmsis>
 )
 
+# Include NS local interface headers
+target_include_directories(tfm_ns_interface
+    INTERFACE
+        ${NS_INTERFACE_DIR}
+)
+
 # PSA interface files are generated from a template
 add_dependencies(tfm_ns_interface
     tfm_generated_files
@@ -87,16 +96,24 @@
         target_sources(tfm_api_ns PRIVATE
             ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_ns_api.c
             ${INTERFACE_SRC_DIR}/multi_core/tfm_multi_core_psa_ns_api.c
-            $<$<BOOL:${TFM_MULTI_CORE_NS_OS}>:${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_rtos_api.c>
             $<$<NOT:$<BOOL:${TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD}>>:${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox.c>
             $<$<AND:$<BOOL:${TFM_MULTI_CORE_NS_OS}>,$<BOOL:${TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD}>>:${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_thread.c>
             $<$<BOOL:${TEST_NS}>:${INTERFACE_SRC_DIR}/multi_core/tfm_ns_mailbox_test.c>
         )
+
+        # NS RTOS specific implementation of NS mailbox
+        target_sources(tfm_api_ns PRIVATE
+            $<$<BOOL:${TFM_MULTI_CORE_NS_OS}>:${NS_INTERFACE_DIR}/multi_core/tfm_ns_mailbox_rtos_api.c>
+        )
     else()
         target_sources(tfm_api_ns PRIVATE
-           ${INTERFACE_SRC_DIR}/tfm_ns_interface.c
            ${INTERFACE_SRC_DIR}/tfm_psa_ns_api.c
         )
+
+        # NS specific implementation of NS interface dispacther
+        target_sources(tfm_api_ns PRIVATE
+           ${CMAKE_CURRENT_SOURCE_DIR}/tfm_ns_interface.c
+        )
     endif()
 else()
     target_sources(tfm_api_ns PRIVATE
@@ -108,7 +125,11 @@
         $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:${INTERFACE_SRC_DIR}/tfm_initial_attestation_func_api.c>
         $<$<BOOL:${TFM_PARTITION_FIRMWARE_UPDATE}>:${INTERFACE_SRC_DIR}/tfm_firmware_update_func_api.c>
         ${INTERFACE_SRC_DIR}/tfm_psa_ns_api.c
-        ${INTERFACE_SRC_DIR}/tfm_ns_interface.c
+    )
+
+    # NS specific implementation of NS interface dispacther
+    target_sources(tfm_api_ns PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}/tfm_ns_interface.c
     )
 endif()