Build: Convert interface dir to modern cmake

Rewrite cmake files inside the interface directory. Remove generated
files as they are now generated into the build tree. Modify header
includes where include paths have changed.

WARNING: This change will not build in isolation, it requires _all_
other cmake changes to successfully build. It is split out only for
clarity of changes.

Change-Id: I9ebfb1e31bebcba4a45ea3bb9ed0aa1c3d1c144d
Signed-off-by: Raef Coles <raef.coles@arm.com>
diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
new file mode 100644
index 0000000..acf6c56
--- /dev/null
+++ b/interface/CMakeLists.txt
@@ -0,0 +1,119 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+cmake_minimum_required(VERSION 3.13)
+cmake_policy(SET CMP0076 NEW)
+cmake_policy(SET CMP0079 NEW)
+
+
+if (TFM_MULTI_CORE_TOPOLOGY)
+    include(${CMAKE_SOURCE_DIR}/platform/ext/target/${TFM_PLATFORM}/preload_ns.cmake)
+    # The platform target is created in this directory/file so that it has the
+    # same settings as the main ns target.
+    add_library(platform_ns STATIC)
+endif()
+
+###################### PSA interface (header only) #############################
+
+add_library(psa_interface INTERFACE)
+
+target_include_directories(psa_interface
+    INTERFACE
+        ${CMAKE_CURRENT_SOURCE_DIR}/include
+        ${CMAKE_BINARY_DIR}/generated/interface/include
+        ${CMAKE_CURRENT_SOURCE_DIR}/include/os_wrapper
+)
+
+# PSA interface files are generated from a template
+add_dependencies(psa_interface
+    tfm_generated_files
+)
+
+target_link_libraries(psa_interface
+    INTERFACE
+        tfm_partition_defs
+)
+
+target_compile_definitions(psa_interface
+    INTERFACE
+        $<$<BOOL:${TFM_PSA_API}>:TFM_PSA_API>
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:TFM_NS_CLIENT_IDENTIFICATION>
+        $<$<BOOL:${CONFIG_TFM_ENABLE_CTX_MGMT}>:CONFIG_TFM_ENABLE_CTX_MGMT>
+        $<$<BOOL:${TFM_ISOLATION_LEVEL}>:TFM_LVL=${TFM_ISOLATION_LEVEL}>
+        $<$<VERSION_GREATER:${TFM_ISOLATION_LEVEL},1>:CONFIG_TFM_ENABLE_MEMORY_PROTECT>
+        $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:TFM_MULTI_CORE_TOPOLOGY>
+)
+
+###################### PSA api (S lib) #########################################
+
+target_sources(tfm_secure_api
+    INTERFACE
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_client.c>
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_service.c>
+        $<$<BOOL:${TFM_PSA_API}>:${CMAKE_CURRENT_SOURCE_DIR}/src/psa/psa_lifecycle.c>
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/log/tfm_log_raw.c
+)
+
+###################### PSA api (NS lib) ########################################
+
+add_library(psa_api_ns STATIC)
+
+target_sources(psa_api_ns
+    PRIVATE
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:src/tfm_nspm_svc_handler.c>
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:src/tfm_nspm_api.c>
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/log/tfm_log_raw.c
+)
+
+if (${TFM_PSA_API})
+    target_sources(psa_api_ns PRIVATE
+        $<$<BOOL:${TFM_PARTITION_PLATFORM}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_platform_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_ps_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_INTERNAL_TRUSTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_its_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_CRYPTO}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_crypto_ipc_api.c>
+        $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_initial_attestation_ipc_api.c>
+    )
+
+    if (TFM_MULTI_CORE_TOPOLOGY)
+        target_sources(psa_api_ns PRIVATE
+            src/tfm_ns_mailbox.c
+            src/tfm_multi_core_api.c
+            src/tfm_multi_core_psa_ns_api.c
+        )
+    else()
+        target_sources(psa_api_ns PRIVATE
+           src/tfm_ns_interface.c
+           src/tfm_psa_ns_api.c
+        )
+    endif()
+else()
+    target_sources(psa_api_ns PRIVATE
+        $<$<BOOL:${TFM_PARTITION_PLATFORM}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_platform_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_AUDIT_LOG}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_audit_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_PROTECTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_ps_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_INTERNAL_TRUSTED_STORAGE}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_its_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_CRYPTO}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_crypto_func_api.c>
+        $<$<BOOL:${TFM_PARTITION_INITIAL_ATTESTATION}>:${CMAKE_CURRENT_SOURCE_DIR}/src/tfm_initial_attestation_func_api.c>
+        src/tfm_psa_ns_api.c
+    )
+    if (NOT TFM_MULTI_CORE_TOPOLOGY)
+        target_sources(psa_api_ns PRIVATE
+           src/tfm_ns_interface.c
+        )
+    endif()
+
+endif()
+
+target_link_libraries(psa_api_ns
+    PUBLIC
+        psa_interface
+    PRIVATE
+        platform_ns
+        # CMSIS is currently only required to provide the NS client IDs. In
+        # future, this should probably be made more OS agnostic
+        $<$<BOOL:${TFM_NS_CLIENT_IDENTIFICATION}>:CMSIS_5_tfm_ns>
+)
diff --git a/interface/include/psa_manifest/pid.h b/interface/include/psa_manifest/pid.h
deleted file mode 100644
index 1f690bd..0000000
--- a/interface/include/psa_manifest/pid.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#ifndef __PSA_MANIFEST_PID_H__
-#define __PSA_MANIFEST_PID_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define TFM_SP_PS                                                      (256)
-#define TFM_SP_ITS                                                     (257)
-#define TFM_SP_AUDIT_LOG                                               (258)
-#define TFM_SP_CRYPTO                                                  (259)
-#define TFM_SP_PLATFORM                                                (260)
-#define TFM_SP_INITIAL_ATTESTATION                                     (261)
-#define TFM_SP_CORE_TEST                                               (262)
-#define TFM_SP_CORE_TEST_2                                             (263)
-#define TFM_SP_SECURE_TEST_PARTITION                                   (264)
-#define TFM_SP_IPC_SERVICE_TEST                                        (265)
-#define TFM_SP_IPC_CLIENT_TEST                                         (266)
-#define TFM_IRQ_TEST_1                                                 (267)
-#define TFM_SP_PS_TEST                                                 (268)
-#define TFM_SP_SECURE_CLIENT_2                                         (269)
-
-#define TFM_MAX_USER_PARTITIONS                                        (14)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __PSA_MANIFEST_PID_H__ */
diff --git a/interface/include/psa_manifest/sid.h b/interface/include/psa_manifest/sid.h
deleted file mode 100644
index 87d6186..0000000
--- a/interface/include/psa_manifest/sid.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#ifndef __PSA_MANIFEST_SID_H__
-#define __PSA_MANIFEST_SID_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/******** TFM_SP_PS ********/
-#define TFM_PS_SET_SID                                             (0x00000060U)
-#define TFM_PS_SET_VERSION                                         (1U)
-#define TFM_PS_GET_SID                                             (0x00000061U)
-#define TFM_PS_GET_VERSION                                         (1U)
-#define TFM_PS_GET_INFO_SID                                        (0x00000062U)
-#define TFM_PS_GET_INFO_VERSION                                    (1U)
-#define TFM_PS_REMOVE_SID                                          (0x00000063U)
-#define TFM_PS_REMOVE_VERSION                                      (1U)
-#define TFM_PS_GET_SUPPORT_SID                                     (0x00000064U)
-#define TFM_PS_GET_SUPPORT_VERSION                                 (1U)
-
-/******** TFM_SP_ITS ********/
-#define TFM_ITS_SET_SID                                            (0x00000070U)
-#define TFM_ITS_SET_VERSION                                        (1U)
-#define TFM_ITS_GET_SID                                            (0x00000071U)
-#define TFM_ITS_GET_VERSION                                        (1U)
-#define TFM_ITS_GET_INFO_SID                                       (0x00000072U)
-#define TFM_ITS_GET_INFO_VERSION                                   (1U)
-#define TFM_ITS_REMOVE_SID                                         (0x00000073U)
-#define TFM_ITS_REMOVE_VERSION                                     (1U)
-
-/******** TFM_SP_CRYPTO ********/
-#define TFM_CRYPTO_SID                                             (0x00000080U)
-#define TFM_CRYPTO_VERSION                                         (1U)
-
-/******** TFM_SP_PLATFORM ********/
-#define TFM_SP_PLATFORM_SYSTEM_RESET_SID                           (0x00000040U)
-#define TFM_SP_PLATFORM_SYSTEM_RESET_VERSION                       (1U)
-#define TFM_SP_PLATFORM_IOCTL_SID                                  (0x00000041U)
-#define TFM_SP_PLATFORM_IOCTL_VERSION                              (1U)
-#define TFM_SP_PLATFORM_NV_COUNTER_SID                             (0x00000042U)
-#define TFM_SP_PLATFORM_NV_COUNTER_VERSION                         (1U)
-
-/******** TFM_SP_INITIAL_ATTESTATION ********/
-#define TFM_ATTEST_GET_TOKEN_SID                                   (0x00000020U)
-#define TFM_ATTEST_GET_TOKEN_VERSION                               (1U)
-#define TFM_ATTEST_GET_TOKEN_SIZE_SID                              (0x00000021U)
-#define TFM_ATTEST_GET_TOKEN_SIZE_VERSION                          (1U)
-#define TFM_ATTEST_GET_PUBLIC_KEY_SID                              (0x00000022U)
-#define TFM_ATTEST_GET_PUBLIC_KEY_VERSION                          (1U)
-
-/******** TFM_SP_CORE_TEST ********/
-#define SPM_CORE_TEST_INIT_SUCCESS_SID                             (0x0000F020U)
-#define SPM_CORE_TEST_INIT_SUCCESS_VERSION                         (1U)
-#define SPM_CORE_TEST_DIRECT_RECURSION_SID                         (0x0000F021U)
-#define SPM_CORE_TEST_DIRECT_RECURSION_VERSION                     (1U)
-#define SPM_CORE_TEST_SS_TO_SS_SID                                 (0x0000F024U)
-#define SPM_CORE_TEST_SS_TO_SS_VERSION                             (1U)
-#define SPM_CORE_TEST_SS_TO_SS_BUFFER_SID                          (0x0000F025U)
-#define SPM_CORE_TEST_SS_TO_SS_BUFFER_VERSION                      (1U)
-#define SPM_CORE_TEST_OUTVEC_WRITE_SID                             (0x0000F026U)
-#define SPM_CORE_TEST_OUTVEC_WRITE_VERSION                         (1U)
-#define SPM_CORE_TEST_PERIPHERAL_ACCESS_SID                        (0x0000F027U)
-#define SPM_CORE_TEST_PERIPHERAL_ACCESS_VERSION                    (1U)
-#define SPM_CORE_TEST_GET_CALLER_CLIENT_ID_SID                     (0x0000F028U)
-#define SPM_CORE_TEST_GET_CALLER_CLIENT_ID_VERSION                 (1U)
-#define SPM_CORE_TEST_SPM_REQUEST_SID                              (0x0000F029U)
-#define SPM_CORE_TEST_SPM_REQUEST_VERSION                          (1U)
-#define SPM_CORE_TEST_BLOCK_SID                                    (0x0000F02AU)
-#define SPM_CORE_TEST_BLOCK_VERSION                                (1U)
-#define SPM_CORE_TEST_NS_THREAD_SID                                (0x0000F02BU)
-#define SPM_CORE_TEST_NS_THREAD_VERSION                            (1U)
-
-/******** TFM_SP_CORE_TEST_2 ********/
-#define SPM_CORE_TEST_2_SLAVE_SERVICE_SID                          (0x0000F040U)
-#define SPM_CORE_TEST_2_SLAVE_SERVICE_VERSION                      (1U)
-#define SPM_CORE_TEST_2_CHECK_CALLER_CLIENT_ID_SID                 (0x0000F041U)
-#define SPM_CORE_TEST_2_CHECK_CALLER_CLIENT_ID_VERSION             (1U)
-#define SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_SID                  (0x0000F042U)
-#define SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_VERSION              (1U)
-#define SPM_CORE_TEST_2_INVERT_SID                                 (0x0000F043U)
-#define SPM_CORE_TEST_2_INVERT_VERSION                             (1U)
-#define SPM_CORE_TEST_2_PREPARE_TEST_SCENARIO_SID                  (0x0000F044U)
-#define SPM_CORE_TEST_2_PREPARE_TEST_SCENARIO_VERSION              (1U)
-#define SPM_CORE_TEST_2_EXECUTE_TEST_SCENARIO_SID                  (0x0000F045U)
-#define SPM_CORE_TEST_2_EXECUTE_TEST_SCENARIO_VERSION              (1U)
-
-/******** TFM_SP_SECURE_TEST_PARTITION ********/
-#define TFM_SECURE_CLIENT_SFN_RUN_TESTS_SID                        (0x0000F000U)
-#define TFM_SECURE_CLIENT_SFN_RUN_TESTS_VERSION                    (1U)
-
-/******** TFM_SP_IPC_SERVICE_TEST ********/
-#define IPC_SERVICE_TEST_BASIC_SID                                 (0x0000F080U)
-#define IPC_SERVICE_TEST_BASIC_VERSION                             (1U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SID                    (0x0000F081U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_VERSION                (1U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID          (0x0000F082U)
-#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_VERSION      (1U)
-#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SID                    (0x0000F083U)
-#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_VERSION                (1U)
-#define IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_SID               (0x0000F084U)
-#define IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_VERSION           (1U)
-
-/******** TFM_SP_IPC_CLIENT_TEST ********/
-#define IPC_CLIENT_TEST_BASIC_SID                                  (0x0000F060U)
-#define IPC_CLIENT_TEST_BASIC_VERSION                              (1U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_SID                     (0x0000F061U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_VERSION                 (1U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID           (0x0000F062U)
-#define IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_VERSION       (1U)
-#define IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_SID                     (0x0000F063U)
-#define IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_VERSION                 (1U)
-#define IPC_CLIENT_TEST_MEM_CHECK_SID                              (0x0000F064U)
-#define IPC_CLIENT_TEST_MEM_CHECK_VERSION                          (1U)
-
-/******** TFM_IRQ_TEST_1 ********/
-#define SPM_CORE_IRQ_TEST_1_PREPARE_TEST_SCENARIO_SID              (0x0000F0A0U)
-#define SPM_CORE_IRQ_TEST_1_PREPARE_TEST_SCENARIO_VERSION          (1U)
-#define SPM_CORE_IRQ_TEST_1_EXECUTE_TEST_SCENARIO_SID              (0x0000F0A1U)
-#define SPM_CORE_IRQ_TEST_1_EXECUTE_TEST_SCENARIO_VERSION          (1U)
-
-/******** TFM_SP_PS_TEST ********/
-#define TFM_PS_TEST_PREPARE_SID                                    (0x0000F0C0U)
-#define TFM_PS_TEST_PREPARE_VERSION                                (1U)
-
-/******** TFM_SP_SECURE_CLIENT_2 ********/
-#define TFM_SECURE_CLIENT_2_SID                                    (0x0000F0E0U)
-#define TFM_SECURE_CLIENT_2_VERSION                                (1U)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __PSA_MANIFEST_SID_H__ */
diff --git a/interface/include/tfm_veneers.h b/interface/include/tfm_veneers.h
deleted file mode 100644
index 655d679..0000000
--- a/interface/include/tfm_veneers.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#ifndef __TFM_VENEERS_H__
-#define __TFM_VENEERS_H__
-
-#include "tfm_api.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef TFM_PARTITION_PROTECTED_STORAGE
-/******** TFM_SP_PS ********/
-psa_status_t tfm_tfm_ps_set_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_get_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_get_info_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_remove_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_ps_get_support_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_PROTECTED_STORAGE */
-
-#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE
-/******** TFM_SP_ITS ********/
-psa_status_t tfm_tfm_its_set_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_its_get_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_its_get_info_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_its_remove_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */
-
-#ifdef TFM_PARTITION_AUDIT_LOG
-/******** TFM_SP_AUDIT_LOG ********/
-psa_status_t tfm_audit_core_retrieve_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_add_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_get_info_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_get_record_info_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_audit_core_delete_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_AUDIT_LOG */
-
-#ifdef TFM_PARTITION_CRYPTO
-/******** TFM_SP_CRYPTO ********/
-psa_status_t tfm_tfm_crypto_get_key_attributes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_open_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_close_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_reset_key_attributes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_import_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_destroy_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_export_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_export_public_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_copy_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_compute_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_compare_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_hash_clone_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_compute_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_sign_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_verify_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_sign_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_verify_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_mac_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_encrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_decrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_generate_iv_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_set_iv_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_cipher_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_encrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_decrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_generate_nonce_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_set_nonce_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_set_lengths_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_update_ad_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_aead_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_sign_hash_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_verify_hash_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_asymmetric_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_asymmetric_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_get_capacity_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_set_capacity_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_input_bytes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_input_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_key_agreement_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_output_bytes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_output_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_key_derivation_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_raw_key_agreement_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_generate_random_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_tfm_crypto_generate_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_CRYPTO */
-
-#ifdef TFM_PARTITION_PLATFORM
-/******** TFM_SP_PLATFORM ********/
-psa_status_t tfm_platform_sp_system_reset_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_platform_sp_ioctl_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_platform_sp_nv_counter_read_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_platform_sp_nv_counter_increment_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_PLATFORM */
-
-#ifdef TFM_PARTITION_INITIAL_ATTESTATION
-/******** TFM_SP_INITIAL_ATTESTATION ********/
-psa_status_t tfm_initial_attest_get_token_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_initial_attest_get_token_size_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_initial_attest_get_public_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_INITIAL_ATTESTATION */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST ********/
-psa_status_t tfm_spm_core_test_sfn_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_sfn_init_success_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_sfn_direct_recursion_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
-/******** TFM_SP_CORE_TEST_2 ********/
-psa_status_t tfm_spm_core_test_2_slave_service_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_sfn_invert_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_check_caller_client_id_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_get_every_second_byte_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_prepare_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_core_test_2_execute_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_TEST_PARTITION ********/
-psa_status_t tfm_tfm_secure_client_service_sfn_run_tests_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-/******** TFM_SP_IPC_SERVICE_TEST ********/
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_PARTITION_TEST_CORE_IPC
-/******** TFM_SP_IPC_CLIENT_TEST ********/
-#endif /* TFM_PARTITION_TEST_CORE_IPC */
-
-#ifdef TFM_ENABLE_IRQ_TEST
-/******** TFM_IRQ_TEST_1 ********/
-psa_status_t tfm_spm_irq_test_1_prepare_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_spm_irq_test_1_execute_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_ENABLE_IRQ_TEST */
-
-#ifdef TFM_PARTITION_TEST_PS
-/******** TFM_SP_PS_TEST ********/
-psa_status_t tfm_tfm_ps_test_prepare_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_PS */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-/******** TFM_SP_SECURE_CLIENT_2 ********/
-psa_status_t tfm_tfm_secure_client_2_call_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TFM_VENEERS_H__ */
diff --git a/interface/src/log/tfm_log_raw.c b/interface/src/log/tfm_log_raw.c
index 1afb05b..f94d860 100644
--- a/interface/src/log/tfm_log_raw.c
+++ b/interface/src/log/tfm_log_raw.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -9,7 +9,7 @@
 #include <stddef.h>
 #include <stdint.h>
 #include "log/tfm_log_raw.h"
-#include "uart_stdout.h"
+#include "common/uart_stdout.h"
 
 #define PRINT_BUFF_SIZE 32
 #define NUM_BUFF_SIZE 12