Separate the generic part of SP deployments

Move the non opteesp environment dependent code of SP deployments into
a separate directory and split CMake files into a generic and an
environment specific part.

Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: I4f09d6d3adef07644e98f2a05d6cb077a92b385b
diff --git a/deployments/attestation/attestation.cmake b/deployments/attestation/attestation.cmake
new file mode 100644
index 0000000..4f245d4
--- /dev/null
+++ b/deployments/attestation/attestation.cmake
@@ -0,0 +1,76 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_components(TARGET "attestation"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		"components/common/fdt"
+		"components/common/tlv"
+		"components/common/trace"
+		"components/common/utils"
+		"components/common/endian"
+		"components/common/uuid"
+		"components/config/ramstore"
+		"components/config/loader/sp"
+		"components/messaging/ffa/libsp"
+		"components/rpc/ffarpc/endpoint"
+		"components/rpc/ffarpc/caller/sp"
+		"components/rpc/common/caller"
+		"components/rpc/common/interface"
+		"components/service/common/include"
+		"components/service/common/client"
+		"components/service/common/provider"
+		"components/service/locator"
+		"components/service/locator/interface"
+		"components/service/locator/sp"
+		"components/service/locator/sp/ffa"
+		"components/service/attestation/include"
+		"components/service/attestation/claims"
+		"components/service/attestation/claims/sources/boot_seed_generator"
+		"components/service/attestation/claims/sources/null_lifecycle"
+		"components/service/attestation/claims/sources/instance_id"
+		"components/service/attestation/claims/sources/implementation_id"
+		"components/service/attestation/claims/sources/event_log"
+		"components/service/attestation/claims/sources/event_log/mock"
+		"components/service/attestation/reporter/local"
+		"components/service/attestation/reporter/eat"
+		"components/service/attestation/key_mngr/local"
+		"components/service/attestation/provider"
+		"components/service/attestation/provider/serializer/packed-c"
+		"components/service/crypto/include"
+		"components/service/crypto/client/psa"
+		"protocols/rpc/common/packed-c"
+)
+
+target_sources(attestation PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/attestation_sp.c
+)
+
+#-------------------------------------------------------------------------------
+#  Components used from external projects
+#
+#-------------------------------------------------------------------------------
+
+# Get libc include dir
+get_property(LIBC_INCLUDE_PATH TARGET c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
+
+# Qcbor
+set (QCBOR_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
+include(${TS_ROOT}/external/qcbor/qcbor.cmake)
+target_link_libraries(attestation PRIVATE qcbor)
+
+# t_cose
+set (TCOSE_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
+include(${TS_ROOT}/external/t_cose/t_cose.cmake)
+target_link_libraries(attestation PRIVATE t_cose)
+
+#################################################################
+
+target_include_directories(attestation PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+)
diff --git a/deployments/attestation/opteesp/attestation_sp.c b/deployments/attestation/common/attestation_sp.c
similarity index 100%
rename from deployments/attestation/opteesp/attestation_sp.c
rename to deployments/attestation/common/attestation_sp.c
diff --git a/deployments/attestation/common/attestation_sp.h b/deployments/attestation/common/attestation_sp.h
new file mode 100644
index 0000000..e949193
--- /dev/null
+++ b/deployments/attestation/common/attestation_sp.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef ATTESTATION_SP_H
+#define ATTESTATION_SP_H
+
+#define ATTESTATION_SP_UUID_BYTES \
+	{0xa1, 0xba, 0xf1, 0x55, 0x88, 0x76, 0x46, 0x95, \
+	 0x8f, 0x7c, 0x54, 0x95, 0x5e, 0x8d, 0xb9, 0x74}
+
+#endif /* ATTESTATION_SP_H */
diff --git a/deployments/attestation/opteesp/CMakeLists.txt b/deployments/attestation/opteesp/CMakeLists.txt
index 8e7b174..6676f03 100644
--- a/deployments/attestation/opteesp/CMakeLists.txt
+++ b/deployments/attestation/opteesp/CMakeLists.txt
@@ -37,48 +37,10 @@
 add_components(TARGET "attestation"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
-		"components/common/fdt"
-		"components/common/tlv"
-		"components/common/trace"
-		"components/common/utils"
-		"components/common/endian"
-		"components/common/uuid"
-		"components/config/ramstore"
-		"components/config/loader/sp"
-		"components/messaging/ffa/libsp"
-		"components/rpc/ffarpc/endpoint"
-		"components/rpc/ffarpc/caller/sp"
-		"components/rpc/common/caller"
-		"components/rpc/common/interface"
-		"components/service/common/include"
-		"components/service/common/client"
-		"components/service/common/provider"
-		"components/service/locator"
-		"components/service/locator/interface"
-		"components/service/locator/sp"
-		"components/service/locator/sp/ffa"
-		"components/service/attestation/include"
-		"components/service/attestation/claims"
-		"components/service/attestation/claims/sources/boot_seed_generator"
-		"components/service/attestation/claims/sources/null_lifecycle"
-		"components/service/attestation/claims/sources/instance_id"
-		"components/service/attestation/claims/sources/implementation_id"
-		"components/service/attestation/claims/sources/event_log"
-		"components/service/attestation/claims/sources/event_log/mock"
-		"components/service/attestation/reporter/local"
-		"components/service/attestation/reporter/eat"
-		"components/service/attestation/key_mngr/local"
-		"components/service/attestation/provider"
-		"components/service/attestation/provider/serializer/packed-c"
-		"components/service/crypto/include"
-		"components/service/crypto/client/psa"
-		"protocols/rpc/common/packed-c"
 		"environments/opteesp"
 )
 
-target_sources(attestation PRIVATE
-	attestation_sp.c
-)
+include(../attestation.cmake REQUIRED)
 
 #-------------------------------------------------------------------------------
 #  Set target platform to provide drivers needed by the deployment
@@ -86,33 +48,11 @@
 #-------------------------------------------------------------------------------
 add_platform(TARGET "attestation")
 
-#-------------------------------------------------------------------------------
-#  Components used from external projects
-#
-#-------------------------------------------------------------------------------
-
-# Get libc include dir
-get_property(LIBC_INCLUDE_PATH TARGET c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
-
-# Qcbor
-set (QCBOR_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
-include(${TS_ROOT}/external/qcbor/qcbor.cmake)
-target_link_libraries(attestation PRIVATE qcbor)
-
-# t_cose
-set (TCOSE_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
-include(${TS_ROOT}/external/t_cose/t_cose.cmake)
-target_link_libraries(attestation PRIVATE t_cose)
-
-#################################################################
-
 target_compile_definitions(attestation PRIVATE
 	ARM64=1
 )
 
 target_include_directories(attestation PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
 	${TS_ROOT}/deployments/attestation/opteesp
 )
 
diff --git a/deployments/attestation/opteesp/attestation_sp.h b/deployments/attestation/opteesp/attestation_sp.h
deleted file mode 100644
index 7c4af58..0000000
--- a/deployments/attestation/opteesp/attestation_sp.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef ATTESTATION_SP_H
-#define ATTESTATION_SP_H
-
-#define ATTESTATION_SP_UUID \
-    {0xa1baf155, 0x8876, 0x4695, \
-                {0x8f, 0x7c, 0x54, 0x95, 0x5e, 0x8d, 0xb9, 0x74}}
-
-#define ATTESTATION_SP_UUID_BYTES \
-    {0xa1, 0xba, 0xf1, 0x55, 0x88, 0x76, 0x46, 0x95, \
-     0x8f, 0x7c, 0x54, 0x95, 0x5e, 0x8d, 0xb9, 0x74}
-
-#endif /* ATTESTATION_SP_H */
diff --git a/deployments/attestation/opteesp/optee_sp_user_defines.h b/deployments/attestation/opteesp/optee_sp_user_defines.h
index 95531fe..475a2b9 100644
--- a/deployments/attestation/opteesp/optee_sp_user_defines.h
+++ b/deployments/attestation/opteesp/optee_sp_user_defines.h
@@ -3,13 +3,13 @@
  * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
  */
 
-#ifndef SP_HEADER_DEFINES_H
-#define SP_HEADER_DEFINES_H
+#ifndef OPTEE_SP_USER_DEFINES_H
+#define OPTEE_SP_USER_DEFINES_H
 
-/* To get UUID definition */
-#include "attestation_sp.h"
+#define OPTEE_SP_UUID \
+	{0xa1baf155, 0x8876, 0x4695, \
+		{0x8f, 0x7c, 0x54, 0x95, 0x5e, 0x8d, 0xb9, 0x74}}
 
-#define OPTEE_SP_UUID				ATTESTATION_SP_UUID
 #define OPTEE_SP_FLAGS				0
 
 /* Provisioned stack size */
diff --git a/deployments/crypto/opteesp/crypto_sp.c b/deployments/crypto/common/crypto_sp.c
similarity index 100%
rename from deployments/crypto/opteesp/crypto_sp.c
rename to deployments/crypto/common/crypto_sp.c
diff --git a/deployments/crypto/common/crypto_sp.h b/deployments/crypto/common/crypto_sp.h
new file mode 100644
index 0000000..be1e097
--- /dev/null
+++ b/deployments/crypto/common/crypto_sp.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef CRYPTO_SP_H
+#define CRYPTO_SP_H
+
+#define CRYPTO_SP_UUID_BYTES \
+	{0xd9, 0xdf, 0x52, 0xd5, 0x16, 0xa2, 0x4b, 0xb2, \
+	 0x9a, 0xa4, 0xd2, 0x6d, 0x3b, 0x84, 0xe8, 0xc0}
+
+#endif /* CRYPTO_SP_H */
diff --git a/deployments/crypto/crypto.cmake b/deployments/crypto/crypto.cmake
new file mode 100644
index 0000000..c5f1e3a
--- /dev/null
+++ b/deployments/crypto/crypto.cmake
@@ -0,0 +1,81 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_components(TARGET "crypto"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		"components/common/fdt"
+		"components/common/tlv"
+		"components/common/trace"
+		"components/common/utils"
+		"components/config/ramstore"
+		"components/config/loader/sp"
+		"components/messaging/ffa/libsp"
+		"components/rpc/ffarpc/endpoint"
+		"components/rpc/ffarpc/caller/sp"
+		"components/rpc/common/caller"
+		"components/rpc/common/interface"
+		"components/service/common/include"
+		"components/service/common/client"
+		"components/service/common/serializer/protobuf"
+		"components/service/common/provider"
+		"components/service/discovery/provider"
+		"components/service/discovery/provider/serializer/packed-c"
+		"components/service/crypto/provider"
+		"components/service/crypto/provider/serializer/protobuf"
+		"components/service/crypto/provider/serializer/packed-c"
+		"components/service/crypto/provider/extension/hash"
+		"components/service/crypto/provider/extension/hash/serializer/packed-c"
+		"components/service/crypto/provider/extension/cipher"
+		"components/service/crypto/provider/extension/cipher/serializer/packed-c"
+		"components/service/crypto/provider/extension/key_derivation"
+		"components/service/crypto/provider/extension/key_derivation/serializer/packed-c"
+		"components/service/crypto/provider/extension/mac"
+		"components/service/crypto/provider/extension/mac/serializer/packed-c"
+		"components/service/crypto/factory/full"
+		"components/service/crypto/backend/mbedcrypto"
+		"components/service/crypto/backend/mbedcrypto/trng_adapter/platform"
+		"components/service/secure_storage/include"
+		"components/service/secure_storage/frontend/psa/its"
+		"components/service/secure_storage/backend/secure_storage_client"
+		"components/service/secure_storage/backend/null_store"
+		"components/service/secure_storage/factory/sp/rot_store"
+		"protocols/rpc/common/packed-c"
+		"protocols/service/secure_storage/packed-c"
+		"protocols/service/crypto/protobuf"
+)
+
+target_sources(crypto PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/crypto_sp.c
+)
+
+#-------------------------------------------------------------------------------
+#  Components used from external projects
+#
+#-------------------------------------------------------------------------------
+
+# Get libc include dir
+get_property(LIBC_INCLUDE_PATH TARGET stdlib::c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
+
+# Nanopb
+list(APPEND NANOPB_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
+include(../../../external/nanopb/nanopb.cmake)
+target_link_libraries(crypto PRIVATE nanopb::protobuf-nanopb-static)
+protobuf_generate_all(TGT "crypto" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
+
+# Mbed TLS provides libmbedcrypto
+list(APPEND MBEDTLS_EXTRA_INCLUDES ${LIBC_INCLUDE_PATH})
+include(../../../external/MbedTLS/MbedTLS.cmake)
+target_link_libraries(crypto PRIVATE mbedcrypto)
+target_link_libraries(mbedcrypto INTERFACE stdlib::c)
+
+#################################################################
+
+target_include_directories(crypto PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+)
diff --git a/deployments/crypto/opteesp/CMakeLists.txt b/deployments/crypto/opteesp/CMakeLists.txt
index 92bd249..a3307bc 100644
--- a/deployments/crypto/opteesp/CMakeLists.txt
+++ b/deployments/crypto/opteesp/CMakeLists.txt
@@ -18,8 +18,8 @@
 #-------------------------------------------------------------------------------
 include(${TS_ROOT}/environments/opteesp/env.cmake)
 project(trusted-services LANGUAGES C ASM)
-add_executable(crypto-sp)
-target_include_directories(crypto-sp PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
+add_executable(crypto)
+target_include_directories(crypto PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
 set(SP_UUID "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0")
 set(SP_HEAP_SIZE "490 * 1024" CACHE STRING "SP heap size in bytes")
 set(TRACE_PREFIX "CRYPTO" CACHE STRING "Trace prefix")
@@ -28,96 +28,32 @@
 #  Components that are specific to deployment in the opteesp environment.
 #
 #-------------------------------------------------------------------------------
-add_components(TARGET "crypto-sp"
+add_components(TARGET "crypto"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
-		"components/common/fdt"
-		"components/common/tlv"
-		"components/common/trace"
-		"components/common/utils"
-		"components/config/ramstore"
-		"components/config/loader/sp"
-		"components/messaging/ffa/libsp"
-		"components/rpc/ffarpc/endpoint"
-		"components/rpc/ffarpc/caller/sp"
-		"components/rpc/common/caller"
-		"components/rpc/common/interface"
-		"components/service/common/include"
-		"components/service/common/client"
-		"components/service/common/serializer/protobuf"
-		"components/service/common/provider"
-		"components/service/discovery/provider"
-		"components/service/discovery/provider/serializer/packed-c"
-		"components/service/crypto/provider"
-		"components/service/crypto/provider/serializer/protobuf"
-		"components/service/crypto/provider/serializer/packed-c"
-		"components/service/crypto/provider/extension/hash"
-		"components/service/crypto/provider/extension/hash/serializer/packed-c"
-		"components/service/crypto/provider/extension/cipher"
-		"components/service/crypto/provider/extension/cipher/serializer/packed-c"
-		"components/service/crypto/provider/extension/key_derivation"
-		"components/service/crypto/provider/extension/key_derivation/serializer/packed-c"
-		"components/service/crypto/provider/extension/mac"
-		"components/service/crypto/provider/extension/mac/serializer/packed-c"
-		"components/service/crypto/factory/full"
-		"components/service/crypto/backend/mbedcrypto"
-		"components/service/crypto/backend/mbedcrypto/trng_adapter/platform"
-		"components/service/secure_storage/include"
-		"components/service/secure_storage/frontend/psa/its"
-		"components/service/secure_storage/backend/secure_storage_client"
-		"components/service/secure_storage/backend/null_store"
-		"components/service/secure_storage/factory/sp/rot_store"
-		"protocols/rpc/common/packed-c"
-		"protocols/service/secure_storage/packed-c"
-		"protocols/service/crypto/protobuf"
 		"environments/opteesp"
 )
 
-target_sources(crypto-sp PRIVATE
-	crypto_sp.c
-)
+include(../crypto.cmake REQUIRED)
 
 #-------------------------------------------------------------------------------
 #  Set target platform to provide drivers needed by the deployment
 #
 #-------------------------------------------------------------------------------
-add_platform(TARGET "crypto-sp")
-
-#-------------------------------------------------------------------------------
-#  Components used from external projects
-#
-#-------------------------------------------------------------------------------
-
-# Get libc include dir
-get_property(LIBC_INCLUDE_PATH TARGET stdlib::c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
-
-# Nanopb
-list(APPEND NANOPB_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
-include(../../../external/nanopb/nanopb.cmake)
-target_link_libraries(crypto-sp PRIVATE nanopb::protobuf-nanopb-static)
-protobuf_generate_all(TGT "crypto-sp" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
-
-# Mbed TLS provides libmbedcrypto
-list(APPEND MBEDTLS_EXTRA_INCLUDES ${LIBC_INCLUDE_PATH})
-include(../../../external/MbedTLS/MbedTLS.cmake)
-target_link_libraries(crypto-sp PRIVATE mbedcrypto)
-target_link_libraries(mbedcrypto INTERFACE stdlib::c)
-
+add_platform(TARGET "crypto")
 
 #################################################################
 
-target_compile_definitions(crypto-sp PRIVATE
+target_compile_definitions(crypto PRIVATE
 	ARM64=1
 )
 
-target_include_directories(crypto-sp PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
+target_include_directories(crypto PRIVATE
 	${TS_ROOT}/deployments/crypto/opteesp
 )
 
 if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
-	target_compile_options(crypto-sp PRIVATE
+	target_compile_options(crypto PRIVATE
 		-fdiagnostics-show-option
 		-gdwarf-2
 		-mstrict-align
@@ -126,18 +62,18 @@
 	)
 
 	# Options for GCC that control linking
-	target_link_options(crypto-sp PRIVATE
+	target_link_options(crypto PRIVATE
 		-zmax-page-size=4096
 	)
 	# Options directly for LD, these are not understood by GCC
-	target_link_options(crypto-sp PRIVATE
+	target_link_options(crypto PRIVATE
 		-Wl,--as-needed
 		-Wl,--sort-section=alignment
 		# -Wl,--dynamic-list ${CMAKE_CURRENT_LIST_DIR}/dyn_list
 	)
 endif()
 
-compiler_generate_stripped_elf(TARGET crypto-sp NAME "${SP_UUID}.stripped.elf" RES STRIPPED_ELF)
+compiler_generate_stripped_elf(TARGET crypto NAME "${SP_UUID}.stripped.elf" RES STRIPPED_ELF)
 
 ######################################## install
 if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
@@ -145,13 +81,13 @@
 endif()
 #TODO: api headers
 
-install(TARGETS crypto-sp
+install(TARGETS crypto
 			PUBLIC_HEADER DESTINATION ${TS_ENV}/include
 			RUNTIME DESTINATION ${TS_ENV}/bin
 		)
 install(FILES ${STRIPPED_ELF} DESTINATION ${TS_ENV}/bin)
 
-get_property(_PROTO_FILES TARGET crypto-sp PROPERTY PROTOBUF_FILES)
+get_property(_PROTO_FILES TARGET crypto PROPERTY PROTOBUF_FILES)
 install(FILES ${_PROTO_FILES} DESTINATION ${TS_ENV}/lib/protobuf)
 
 include(${TS_ROOT}/tools/cmake/common/ExportSp.cmake)
diff --git a/deployments/crypto/opteesp/crypto_sp.h b/deployments/crypto/opteesp/crypto_sp.h
deleted file mode 100644
index 73aae18..0000000
--- a/deployments/crypto/opteesp/crypto_sp.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef CRYPTO_SP_H
-#define CRYPTO_SP_H
-
-#define CRYPTO_SP_UUID \
-	 {0xd9df52d5, 0x16a2, 0x4bb2, \
-                {0x9a, 0xa4, 0xd2, 0x6d, 0x3b, 0x84, 0xe8, 0xc0}}
-
-#define CRYPTO_SP_UUID_BYTES \
-	{0xd9, 0xdf, 0x52, 0xd5, 0x16, 0xa2, 0x4b, 0xb2, \
-    0x9a, 0xa4, 0xd2, 0x6d, 0x3b, 0x84, 0xe8, 0xc0}
-
-#endif /* CRYPTO_SP_H */
diff --git a/deployments/crypto/opteesp/optee_sp_user_defines.h b/deployments/crypto/opteesp/optee_sp_user_defines.h
index dc40c5e..29b2749 100644
--- a/deployments/crypto/opteesp/optee_sp_user_defines.h
+++ b/deployments/crypto/opteesp/optee_sp_user_defines.h
@@ -3,13 +3,13 @@
  * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
  */
 
-#ifndef SP_HEADER_DEFINES_H
-#define SP_HEADER_DEFINES_H
+#ifndef OPTEE_SP_USER_DEFINES_H
+#define OPTEE_SP_USER_DEFINES_H
 
-/* To get UUID definition */
-#include "crypto_sp.h"
+#define OPTEE_SP_UUID \
+	{0xd9df52d5, 0x16a2, 0x4bb2, \
+		{0x9a, 0xa4, 0xd2, 0x6d, 0x3b, 0x84, 0xe8, 0xc0}}
 
-#define OPTEE_SP_UUID             CRYPTO_SP_UUID
 #define OPTEE_SP_FLAGS			0
 
 /* Provisioned stack size */
diff --git a/deployments/env-test/opteesp/env_test.c b/deployments/env-test/common/env_test.c
similarity index 100%
rename from deployments/env-test/opteesp/env_test.c
rename to deployments/env-test/common/env_test.c
diff --git a/deployments/env-test/common/env_test.h b/deployments/env-test/common/env_test.h
new file mode 100644
index 0000000..7a25ee2
--- /dev/null
+++ b/deployments/env-test/common/env_test.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef ENV_TEST_H
+#define ENV_TEST_H
+
+#define ENV_TEST_SP_UUID_BYTES \
+	{0x33, 0xc7, 0x5b, 0xaf, 0xac, 0x6a, 0x4f, 0xef, \
+	 0x8a, 0xc7, 0xe9, 0x90, 0x9b, 0xee, 0x2d, 0x17}
+
+#endif /* ENV_TEST_H */
diff --git a/deployments/env-test/opteesp/env_test_tests.c b/deployments/env-test/common/env_test_tests.c
similarity index 100%
rename from deployments/env-test/opteesp/env_test_tests.c
rename to deployments/env-test/common/env_test_tests.c
diff --git a/deployments/env-test/opteesp/env_test_tests.h b/deployments/env-test/common/env_test_tests.h
similarity index 100%
rename from deployments/env-test/opteesp/env_test_tests.h
rename to deployments/env-test/common/env_test_tests.h
diff --git a/deployments/env-test/env_test.cmake b/deployments/env-test/env-test.cmake
similarity index 81%
rename from deployments/env-test/env_test.cmake
rename to deployments/env-test/env-test.cmake
index bebd9f5..3a290eb 100644
--- a/deployments/env-test/env_test.cmake
+++ b/deployments/env-test/env-test.cmake
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -19,6 +19,7 @@
 	TARGET "env-test"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
+	"components/common/fdt"
 	"components/common/tlv"
 	"components/config/ramstore"
 	"components/rpc/common/interface"
@@ -40,6 +41,19 @@
 )
 
 #-------------------------------------------------------------------------------
+#  Deployment specific source files
+#-------------------------------------------------------------------------------
+target_sources(env-test PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/env_test.c
+	${CMAKE_CURRENT_LIST_DIR}/common/env_test_tests.c
+)
+
+target_include_directories(env-test PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+)
+
+#-------------------------------------------------------------------------------
 #  Components used from external projects
 #
 #-------------------------------------------------------------------------------
diff --git a/deployments/env-test/opteesp/CMakeLists.txt b/deployments/env-test/opteesp/CMakeLists.txt
index 6e23d6e..323cd86 100644
--- a/deployments/env-test/opteesp/CMakeLists.txt
+++ b/deployments/env-test/opteesp/CMakeLists.txt
@@ -47,15 +47,7 @@
 #  env-test
 #
 #-------------------------------------------------------------------------------
-include(../env_test.cmake REQUIRED)
-
-#-------------------------------------------------------------------------------
-#  Deployment specific source files
-#-------------------------------------------------------------------------------
-target_sources(env-test PRIVATE
-	env_test.c
-	env_test_tests.c
-)
+include(../env-test.cmake REQUIRED)
 
 #-------------------------------------------------------------------------------
 #  Set target platform to provide drivers needed by the deployment
@@ -74,8 +66,6 @@
 )
 
 target_include_directories(env-test PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
 	${TS_ROOT}/deployments/env-test/opteesp
 )
 
diff --git a/deployments/env-test/opteesp/env_test.h b/deployments/env-test/opteesp/env_test.h
deleted file mode 100644
index 0f4c8b7..0000000
--- a/deployments/env-test/opteesp/env_test.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef ENV_TEST_SP_H
-#define ENV_TEST_SP_H
-
-#define ENV_TEST_SP_UUID \
-	 {0x33c75baf, 0xac6a, 0x4fe4, \
-                {0x8a, 0xc7, 0xe9, 0x90, 0x9b, 0xee, 0x2d, 0x17}}
-
-#define ENV_TEST_SP_UUID_BYTES \
-	{0x33, 0xc7, 0x5b, 0xaf, 0xac, 0x6a, 0x4f, 0xef, \
-    0x8a, 0xcy, 0xe9, 0x90, 0x9b, 0xee, 0x2d, 0x17}
-
-#endif /* ENV_TEST_SP_H */
diff --git a/deployments/env-test/opteesp/optee_sp_user_defines.h b/deployments/env-test/opteesp/optee_sp_user_defines.h
index ac429cf..7c78790 100644
--- a/deployments/env-test/opteesp/optee_sp_user_defines.h
+++ b/deployments/env-test/opteesp/optee_sp_user_defines.h
@@ -3,13 +3,13 @@
  * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
  */
 
-#ifndef SP_HEADER_DEFINES_H
-#define SP_HEADER_DEFINES_H
+#ifndef OPTEE_SP_USER_DEFINES_H
+#define OPTEE_SP_USER_DEFINES_H
 
-/* To get UUID definition */
-#include "env_test.h"
+#define OPTEE_SP_UUID \
+	{0x33c75baf, 0xac6a, 0x4fe4, \
+		{0x8a, 0xc7, 0xe9, 0x90, 0x9b, 0xee, 0x2d, 0x17}}
 
-#define OPTEE_SP_UUID             ENV_TEST_SP_UUID
 #define OPTEE_SP_FLAGS				0
 
 /* Provisioned stack size */
diff --git a/deployments/internal-trusted-storage/opteesp/sp.c b/deployments/internal-trusted-storage/common/its_sp.c
similarity index 95%
rename from deployments/internal-trusted-storage/opteesp/sp.c
rename to deployments/internal-trusted-storage/common/its_sp.c
index a469905..18df88f 100644
--- a/deployments/internal-trusted-storage/opteesp/sp.c
+++ b/deployments/internal-trusted-storage/common/its_sp.c
@@ -1,10 +1,9 @@
 /*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
-#include "sp.h"
 #include <ffa_api.h>
 #include <components/rpc/common/endpoint/rpc_interface.h>
 #include <components/rpc/ffarpc/endpoint/ffarpc_call_ep.h>
diff --git a/deployments/internal-trusted-storage/common/its_sp.h b/deployments/internal-trusted-storage/common/its_sp.h
new file mode 100644
index 0000000..ffaf25e
--- /dev/null
+++ b/deployments/internal-trusted-storage/common/its_sp.h
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+
+#ifndef ITS_SP_H
+#define ITS_SP_H
+
+/* UUID for the Internal Trusted Store */
+#define ITS_SP_UUID_BYTES \
+	{ 0xdc, 0x1e, 0xef, 0x48, 0xb1, 0x7a, 0x4c, 0xcf, \
+	  0xac, 0x8b, 0xdf, 0xcf, 0xf7, 0x71, 0x1b, 0x14, }
+
+#endif /* ITS_SP_H */
diff --git a/deployments/internal-trusted-storage/internal-trusted-storage.cmake b/deployments/internal-trusted-storage/internal-trusted-storage.cmake
new file mode 100644
index 0000000..3ce5564
--- /dev/null
+++ b/deployments/internal-trusted-storage/internal-trusted-storage.cmake
@@ -0,0 +1,36 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_components(TARGET "internal-trusted-storage"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		components/common/trace
+		components/common/utils
+		components/messaging/ffa/libsp
+		components/rpc/ffarpc/endpoint
+		components/rpc/common/interface
+		components/service/common/include
+		components/service/common/provider
+		components/service/secure_storage/include
+		components/service/secure_storage/frontend/secure_storage_provider
+		components/service/secure_storage/backend/secure_flash_store
+		components/service/secure_storage/backend/secure_flash_store/flash_fs
+		components/service/secure_storage/backend/secure_flash_store/flash
+		components/service/secure_storage/factory/common/sfs
+		protocols/rpc/common/packed-c
+		protocols/service/secure_storage/packed-c
+)
+
+target_sources(internal-trusted-storage PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/its_sp.c
+)
+
+target_include_directories(internal-trusted-storage PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+	${TS_ROOT}/deployments/internal-trusted-storage/common
+)
diff --git a/deployments/internal-trusted-storage/opteesp/CMakeLists.txt b/deployments/internal-trusted-storage/opteesp/CMakeLists.txt
index 0a91c3d..245fd1e 100644
--- a/deployments/internal-trusted-storage/opteesp/CMakeLists.txt
+++ b/deployments/internal-trusted-storage/opteesp/CMakeLists.txt
@@ -24,35 +24,16 @@
 add_components(TARGET "internal-trusted-storage"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
-		components/common/trace
-		components/common/utils
-		components/messaging/ffa/libsp
-		components/rpc/ffarpc/endpoint
-		components/rpc/common/interface
-		components/service/common/include
-		components/service/common/provider
-		components/service/secure_storage/include
-		components/service/secure_storage/frontend/secure_storage_provider
-		components/service/secure_storage/backend/secure_flash_store
-		components/service/secure_storage/backend/secure_flash_store/flash_fs
-		components/service/secure_storage/backend/secure_flash_store/flash
-		components/service/secure_storage/factory/common/sfs
-		protocols/rpc/common/packed-c
-		protocols/service/secure_storage/packed-c
 		environments/opteesp
 )
 
-target_sources(internal-trusted-storage PRIVATE
-	sp.c
-)
+include(../internal-trusted-storage.cmake REQUIRED)
 
 target_compile_definitions(internal-trusted-storage PRIVATE
 	ARM64=1
 )
 
 target_include_directories(internal-trusted-storage PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
 	${TS_ROOT}/deployments/internal-trusted-storage/opteesp
 )
 
diff --git a/deployments/internal-trusted-storage/opteesp/optee_sp_user_defines.h b/deployments/internal-trusted-storage/opteesp/optee_sp_user_defines.h
index d86d29b..304748a 100644
--- a/deployments/internal-trusted-storage/opteesp/optee_sp_user_defines.h
+++ b/deployments/internal-trusted-storage/opteesp/optee_sp_user_defines.h
@@ -3,11 +3,12 @@
  * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
  */
 
-#ifndef SP_HEADER_DEFINES_H
-#define SP_HEADER_DEFINES_H
+#ifndef OPTEE_SP_USER_DEFINES_H
+#define OPTEE_SP_USER_DEFINES_H
 
-/* To get UUID definition */
-#include "sp.h"
+#define OPTEE_SP_UUID \
+	{ 0xdc1eef48, 0xb17a, 0x4ccf, \
+		{ 0xac, 0x8b, 0xdf, 0xcf, 0xf7, 0x71, 0x1b, 0x14 } }
 
 #define OPTEE_SP_FLAGS			0
 
diff --git a/deployments/internal-trusted-storage/opteesp/sp.h b/deployments/internal-trusted-storage/opteesp/sp.h
deleted file mode 100644
index 5aa76c3..0000000
--- a/deployments/internal-trusted-storage/opteesp/sp.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SP_H
-#define SP_H
-
-/* UUID for the Internal Trusted Store */
-#define OPTEE_SP_UUID \
-	{ 0xdc1eef48, 0xb17a, 0x4ccf, \
-		{ 0xac, 0x8b, 0xdf, 0xcf, 0xf7, 0x71, 0x1b, 0x14 } }
-
-#define SP_UUID_BYTES \
-	{ 0xdc, 0x1e, 0xef, 0x48, 0xb1, 0x7a, 0x4c, 0xcf, \
-	  0xac, 0x8b, 0xdf, 0xcf, 0xf7, 0x71, 0x1b, 0x14, }
-
-#endif /* SP_H */
diff --git a/deployments/protected-storage/opteesp/sp.c b/deployments/protected-storage/common/ps_sp.c
similarity index 95%
rename from deployments/protected-storage/opteesp/sp.c
rename to deployments/protected-storage/common/ps_sp.c
index af75d89..1b47710 100644
--- a/deployments/protected-storage/opteesp/sp.c
+++ b/deployments/protected-storage/common/ps_sp.c
@@ -1,10 +1,9 @@
 /*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
-#include "sp.h"
 #include <ffa_api.h>
 #include <components/rpc/common/endpoint/rpc_interface.h>
 #include <components/rpc/ffarpc/endpoint/ffarpc_call_ep.h>
diff --git a/deployments/protected-storage/common/ps_sp.h b/deployments/protected-storage/common/ps_sp.h
new file mode 100644
index 0000000..43e257f
--- /dev/null
+++ b/deployments/protected-storage/common/ps_sp.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef PS_SP_H
+#define PS_SP_H
+
+#define PS_SP_UUID_BYTES \
+	{ 0x75, 0x1b, 0xf8, 0x01, 0x3d, 0xde, 0x47, 0x68, \
+	  0xa5, 0x14, 0x0f, 0x10, 0xae, 0xed, 0x17, 0x90 }
+
+#endif /* PS_SP_H */
diff --git a/deployments/protected-storage/opteesp/CMakeLists.txt b/deployments/protected-storage/opteesp/CMakeLists.txt
index 18df144..5ae11d8 100644
--- a/deployments/protected-storage/opteesp/CMakeLists.txt
+++ b/deployments/protected-storage/opteesp/CMakeLists.txt
@@ -24,37 +24,16 @@
 add_components(TARGET "protected-storage"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
-		components/common/trace
-		components/common/utils
-		components/messaging/ffa/libsp
-		components/rpc/ffarpc/endpoint
-		components/rpc/common/interface
-		components/rpc/ffarpc/caller/sp
-		components/rpc/common/caller
-		components/service/common/include
-		components/service/common/client
-		components/service/common/provider
-		components/service/secure_storage/include
-		components/service/secure_storage/frontend/secure_storage_provider
-		components/service/secure_storage/backend/secure_storage_client
-		components/service/secure_storage/backend/null_store
-		components/service/secure_storage/factory/sp/optee_trusted_store
-		protocols/rpc/common/packed-c
-		protocols/service/secure_storage/packed-c
 		environments/opteesp
 )
 
-target_sources(protected-storage PRIVATE
-	sp.c
-)
+include(../protected-storage.cmake REQUIRED)
 
 target_compile_definitions(protected-storage PRIVATE
 	ARM64=1
 )
 
 target_include_directories(protected-storage PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
 	${TS_ROOT}/deployments/protected-storage/opteesp
 )
 
diff --git a/deployments/protected-storage/opteesp/optee_sp_user_defines.h b/deployments/protected-storage/opteesp/optee_sp_user_defines.h
index d86d29b..1da382a 100644
--- a/deployments/protected-storage/opteesp/optee_sp_user_defines.h
+++ b/deployments/protected-storage/opteesp/optee_sp_user_defines.h
@@ -3,11 +3,12 @@
  * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
  */
 
-#ifndef SP_HEADER_DEFINES_H
-#define SP_HEADER_DEFINES_H
+#ifndef OPTEE_SP_USER_DEFINES_H
+#define OPTEE_SP_USER_DEFINES_H
 
-/* To get UUID definition */
-#include "sp.h"
+#define OPTEE_SP_UUID \
+	{ 0x751bf801, 0x3dde, 0x4768, \
+		{ 0xa5, 0x14, 0x0f, 0x10, 0xae, 0xed, 0x17, 0x90 } }
 
 #define OPTEE_SP_FLAGS			0
 
diff --git a/deployments/protected-storage/opteesp/sp.h b/deployments/protected-storage/opteesp/sp.h
deleted file mode 100644
index 3bb4484..0000000
--- a/deployments/protected-storage/opteesp/sp.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SP_H
-#define SP_H
-
-/* UUID for the Protected Store */
-#define OPTEE_SP_UUID \
-	{ 0x751bf801, 0x3dde, 0x4768, \
-		{ 0xa5, 0x14, 0x0f, 0x10, 0xae, 0xed, 0x17, 0x90 } }
-
-#define SP_UUID_BYTES \
-	{ 0x75, 0x1b, 0xf8, 0x01, 0x3d, 0xde, 0x47, 0x68, \
-	  0xa5, 0x14, 0x0f, 0x10, 0xae, 0xed, 0x17, 0x90 }
-
-#endif /* SP_H */
diff --git a/deployments/protected-storage/protected-storage.cmake b/deployments/protected-storage/protected-storage.cmake
new file mode 100644
index 0000000..7b22bdb
--- /dev/null
+++ b/deployments/protected-storage/protected-storage.cmake
@@ -0,0 +1,37 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_components(TARGET "protected-storage"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		components/common/trace
+		components/common/utils
+		components/messaging/ffa/libsp
+		components/rpc/ffarpc/endpoint
+		components/rpc/common/interface
+		components/rpc/ffarpc/caller/sp
+		components/rpc/common/caller
+		components/service/common/include
+		components/service/common/client
+		components/service/common/provider
+		components/service/secure_storage/include
+		components/service/secure_storage/frontend/secure_storage_provider
+		components/service/secure_storage/backend/secure_storage_client
+		components/service/secure_storage/backend/null_store
+		components/service/secure_storage/factory/sp/optee_trusted_store
+		protocols/rpc/common/packed-c
+		protocols/service/secure_storage/packed-c
+)
+
+target_sources(protected-storage PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/ps_sp.c
+)
+
+target_include_directories(protected-storage PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+)
diff --git a/deployments/se-proxy/opteesp/se_proxy_sp.c b/deployments/se-proxy/common/se_proxy_sp.c
similarity index 100%
rename from deployments/se-proxy/opteesp/se_proxy_sp.c
rename to deployments/se-proxy/common/se_proxy_sp.c
diff --git a/deployments/se-proxy/common/se_proxy_sp.h b/deployments/se-proxy/common/se_proxy_sp.h
new file mode 100644
index 0000000..ee241b1
--- /dev/null
+++ b/deployments/se-proxy/common/se_proxy_sp.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef SE_PROXY_SP_H
+#define SE_PROXY_SP_H
+
+#define SE_PROXY_SP_UUID_BYTES \
+	{0x46, 0xbb, 0x39, 0xd1, 0xb4, 0xd9, 0x45, 0xb5, \
+	 0x88, 0xff, 0x04, 0x00, 0x27, 0xda, 0xb2, 0x49}
+
+#endif /* SE_PROXY_SP_H */
diff --git a/deployments/se-proxy/opteesp/service_proxy_factory.c b/deployments/se-proxy/common/service_proxy_factory.c
similarity index 100%
rename from deployments/se-proxy/opteesp/service_proxy_factory.c
rename to deployments/se-proxy/common/service_proxy_factory.c
diff --git a/deployments/se-proxy/opteesp/service_proxy_factory.h b/deployments/se-proxy/common/service_proxy_factory.h
similarity index 100%
rename from deployments/se-proxy/opteesp/service_proxy_factory.h
rename to deployments/se-proxy/common/service_proxy_factory.h
diff --git a/deployments/se-proxy/opteesp/CMakeLists.txt b/deployments/se-proxy/opteesp/CMakeLists.txt
index 7812f32..8d6dcda 100644
--- a/deployments/se-proxy/opteesp/CMakeLists.txt
+++ b/deployments/se-proxy/opteesp/CMakeLists.txt
@@ -23,6 +23,7 @@
 target_include_directories(se-proxy PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
 set(SP_UUID "46bb39d1-b4d9-45b5-88ff-040027dab249")
 set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(TRACE_PREFIX "SEPROXY" CACHE STRING "Trace prefix")
 
 #-------------------------------------------------------------------------------
 #  Components that are specific to deployment in the opteesp environment.
@@ -31,59 +32,10 @@
 add_components(TARGET "se-proxy"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
-		"components/common/fdt"
-		"components/common/trace"
-		"components/common/utils"
-		"protocols/rpc/common/packed-c"
-		"protocols/service/secure_storage/packed-c"
-		"protocols/service/crypto/protobuf"
 		"environments/opteesp"
-		"components/common/tlv"
-		"components/config/ramstore"
-		"components/config/loader/sp"
-		"components/messaging/ffa/libsp"
-		"components/rpc/ffarpc/endpoint"
-		"components/rpc/common/interface"
-		"components/rpc/common/demux"
-		"components/service/common/include"
-		"components/service/common/serializer/protobuf"
-		"components/service/common/client"
-		"components/service/common/provider"
-		"components/service/discovery/provider"
-		"components/service/discovery/provider/serializer/packed-c"
-		"components/service/crypto/include"
-		"components/service/crypto/provider"
-		"components/service/crypto/provider/serializer/protobuf"
-		"components/service/crypto/provider/serializer/packed-c"
-		"components/service/crypto/provider/extension/hash"
-		"components/service/crypto/provider/extension/hash/serializer/packed-c"
-		"components/service/crypto/provider/extension/cipher"
-		"components/service/crypto/provider/extension/cipher/serializer/packed-c"
-		"components/service/crypto/provider/extension/key_derivation"
-		"components/service/crypto/provider/extension/key_derivation/serializer/packed-c"
-		"components/service/crypto/provider/extension/mac"
-		"components/service/crypto/provider/extension/mac/serializer/packed-c"
-		"components/service/crypto/factory/full"
-		"components/service/secure_storage/include"
-		"components/service/secure_storage/frontend/secure_storage_provider"
-		"components/service/attestation/include"
-		"components/service/attestation/provider"
-		"components/service/attestation/provider/serializer/packed-c"
-
-		# Stub service provider backends
-		"components/rpc/dummy"
-		"components/rpc/common/caller"
-		"components/service/attestation/reporter/stub"
-		"components/service/attestation/key_mngr/stub"
-		"components/service/crypto/backend/stub"
-		"components/service/crypto/client/psa"
-		"components/service/secure_storage/backend/mock_store"
 )
 
-target_sources(se-proxy PRIVATE
-	se_proxy_sp.c
-	service_proxy_factory.c
-)
+include(../se-proxy.cmake REQUIRED)
 
 #-------------------------------------------------------------------------------
 #  Set target platform to provide drivers needed by the deployment
@@ -91,29 +43,12 @@
 #-------------------------------------------------------------------------------
 add_platform(TARGET "se-proxy")
 
-#-------------------------------------------------------------------------------
-#  Components used from external projects
-#
-#-------------------------------------------------------------------------------
-
-# Get libc include dir
-get_property(LIBC_INCLUDE_PATH TARGET c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
-
-# Nanopb
-list(APPEND NANOPB_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
-include(../../../external/nanopb/nanopb.cmake)
-target_link_libraries(se-proxy PRIVATE nanopb::protobuf-nanopb-static)
-protobuf_generate_all(TGT "se-proxy" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
-
-#################################################################
 
 target_compile_definitions(se-proxy PRIVATE
 	ARM64=1
 )
 
 target_include_directories(se-proxy PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
 	${TS_ROOT}/deployments/se-proxy/opteesp
 )
 
diff --git a/deployments/se-proxy/opteesp/optee_sp_user_defines.h b/deployments/se-proxy/opteesp/optee_sp_user_defines.h
index bdeada3..9327e78 100644
--- a/deployments/se-proxy/opteesp/optee_sp_user_defines.h
+++ b/deployments/se-proxy/opteesp/optee_sp_user_defines.h
@@ -6,10 +6,10 @@
 #ifndef SP_HEADER_DEFINES_H
 #define SP_HEADER_DEFINES_H
 
-/* To get UUID definition */
-#include "se_proxy_sp.h"
+#define OPTEE_SP_UUID \
+	{0x46bb39d1, 0xb4d9, 0x45b5, \
+		{0x88, 0xff, 0x04, 0x00, 0x27, 0xda, 0xb2, 0x49}}
 
-#define OPTEE_SP_UUID				SE_PROXY_SP_UUID
 #define OPTEE_SP_FLAGS				0
 
 /* Provisioned stack size */
diff --git a/deployments/se-proxy/opteesp/se_proxy_sp.h b/deployments/se-proxy/opteesp/se_proxy_sp.h
deleted file mode 100644
index 74bbde4..0000000
--- a/deployments/se-proxy/opteesp/se_proxy_sp.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SE_PROXY_SP_H
-#define SE_PROXY_SP_H
-
-#define SE_PROXY_SP_UUID \
-	 {0x46bb39d1, 0xb4d9, 0x45b5, \
-                {0x88, 0xff, 0x04, 0x00, 0x27, 0xda, 0xb2, 0x49}}
-
-#define SE_PROXY_SP_UUID_BYTES \
-	{0x46, 0xbb, 0x39, 0xd1, 0xb4, 0xd9, 0x45, 0xb5, \
-     0x88, 0xff, 0x04, 0x00, 0x27, 0xda, 0xb2, 0x49}
-
-#endif /* SE_PROXY_SP_H */
diff --git a/deployments/se-proxy/se-proxy.cmake b/deployments/se-proxy/se-proxy.cmake
new file mode 100644
index 0000000..50799f9
--- /dev/null
+++ b/deployments/se-proxy/se-proxy.cmake
@@ -0,0 +1,83 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_components(TARGET "se-proxy"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		"components/common/fdt"
+		"components/common/trace"
+		"components/common/utils"
+		"protocols/rpc/common/packed-c"
+		"protocols/service/secure_storage/packed-c"
+		"protocols/service/crypto/protobuf"
+		"components/common/tlv"
+		"components/config/ramstore"
+		"components/config/loader/sp"
+		"components/messaging/ffa/libsp"
+		"components/rpc/ffarpc/endpoint"
+		"components/rpc/common/interface"
+		"components/rpc/common/demux"
+		"components/service/common/include"
+		"components/service/common/serializer/protobuf"
+		"components/service/common/client"
+		"components/service/common/provider"
+		"components/service/discovery/provider"
+		"components/service/discovery/provider/serializer/packed-c"
+		"components/service/crypto/include"
+		"components/service/crypto/provider"
+		"components/service/crypto/provider/serializer/protobuf"
+		"components/service/crypto/provider/serializer/packed-c"
+		"components/service/crypto/provider/extension/hash"
+		"components/service/crypto/provider/extension/hash/serializer/packed-c"
+		"components/service/crypto/provider/extension/cipher"
+		"components/service/crypto/provider/extension/cipher/serializer/packed-c"
+		"components/service/crypto/provider/extension/key_derivation"
+		"components/service/crypto/provider/extension/key_derivation/serializer/packed-c"
+		"components/service/crypto/provider/extension/mac"
+		"components/service/crypto/provider/extension/mac/serializer/packed-c"
+		"components/service/crypto/factory/full"
+		"components/service/secure_storage/include"
+		"components/service/secure_storage/frontend/secure_storage_provider"
+		"components/service/attestation/include"
+		"components/service/attestation/provider"
+		"components/service/attestation/provider/serializer/packed-c"
+
+		# Stub service provider backends
+		"components/rpc/dummy"
+		"components/rpc/common/caller"
+		"components/service/attestation/reporter/stub"
+		"components/service/attestation/key_mngr/stub"
+		"components/service/crypto/backend/stub"
+		"components/service/crypto/client/psa"
+		"components/service/secure_storage/backend/mock_store"
+)
+
+target_sources(se-proxy PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/se_proxy_sp.c
+	${CMAKE_CURRENT_LIST_DIR}/common/service_proxy_factory.c
+)
+
+#-------------------------------------------------------------------------------
+#  Components used from external projects
+#
+#-------------------------------------------------------------------------------
+
+# Get libc include dir
+get_property(LIBC_INCLUDE_PATH TARGET c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
+
+# Nanopb
+list(APPEND NANOPB_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
+include(../../../external/nanopb/nanopb.cmake)
+target_link_libraries(se-proxy PRIVATE nanopb::protobuf-nanopb-static)
+protobuf_generate_all(TGT "se-proxy" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
+
+#################################################################
+
+target_include_directories(se-proxy PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+)
diff --git a/deployments/sfs-demo/opteesp/sp.c b/deployments/sfs-demo/common/sfs_demo_sp.c
similarity index 97%
rename from deployments/sfs-demo/opteesp/sp.c
rename to deployments/sfs-demo/common/sfs_demo_sp.c
index 1f049ae..a26c181 100644
--- a/deployments/sfs-demo/opteesp/sp.c
+++ b/deployments/sfs-demo/common/sfs_demo_sp.c
@@ -1,10 +1,9 @@
 /*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
-#include "sp.h"
 #include <ffa_api.h>
 #include <components/rpc/ffarpc/caller/sp/ffarpc_caller.h>
 #include <components/service/secure_storage/frontend/psa/its/its_frontend.h>
diff --git a/deployments/sfs-demo/common/sfs_demo_sp.h b/deployments/sfs-demo/common/sfs_demo_sp.h
new file mode 100644
index 0000000..c9b4915
--- /dev/null
+++ b/deployments/sfs-demo/common/sfs_demo_sp.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef SFS_DEMO_SP_H
+#define SFS_DEMO_SP_H
+
+#define SFS_DEMO_SP_UUID_BYTES \
+	{ 0x01, 0x10, 0x9c, 0xf8, 0xe5, 0xca, 0x44, 0x6f, \
+	  0x9b, 0x55, 0xf3, 0xcd, 0xc6, 0x51, 0x10, 0xc8, }
+
+#endif /* SFS_DEMO_SP_H */
diff --git a/deployments/sfs-demo/opteesp/CMakeLists.txt b/deployments/sfs-demo/opteesp/CMakeLists.txt
index 79539f6..6fe02ae 100644
--- a/deployments/sfs-demo/opteesp/CMakeLists.txt
+++ b/deployments/sfs-demo/opteesp/CMakeLists.txt
@@ -23,33 +23,16 @@
 add_components(TARGET "sfs-demo"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
-		components/common/trace
-		components/common/utils
-		components/messaging/ffa/libsp
-		components/rpc/common/interface
-		components/rpc/common/caller
-		components/rpc/ffarpc/caller/sp
-		components/service/common/include
-		components/service/common/client
-		components/service/secure_storage/include
-		components/service/secure_storage/frontend/psa/its
-		components/service/secure_storage/backend/secure_storage_client
-		protocols/rpc/common/packed-c
-		protocols/service/secure_storage/packed-c
 		environments/opteesp
 )
 
-target_sources(sfs-demo PRIVATE
-	sp.c
-)
+include(../sfs-demo.cmake REQUIRED)
 
 target_compile_definitions(sfs-demo PRIVATE
 	ARM64=1
 )
 
 target_include_directories(sfs-demo PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
 	${TS_ROOT}/deployments/sfs-demo/opteesp
 )
 
diff --git a/deployments/sfs-demo/opteesp/optee_sp_user_defines.h b/deployments/sfs-demo/opteesp/optee_sp_user_defines.h
index d86d29b..b6a8929 100644
--- a/deployments/sfs-demo/opteesp/optee_sp_user_defines.h
+++ b/deployments/sfs-demo/opteesp/optee_sp_user_defines.h
@@ -2,12 +2,12 @@
 /*
  * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
  */
+#ifndef OPTEE_SP_USER_DEFINES_H
+#define OPTEE_SP_USER_DEFINES_H
 
-#ifndef SP_HEADER_DEFINES_H
-#define SP_HEADER_DEFINES_H
-
-/* To get UUID definition */
-#include "sp.h"
+#define OPTEE_SP_UUID \
+	{ 0x01109cf8, 0xe5ca, 0x446f, \
+		{ 0x9b, 0x55, 0xf3, 0xcd, 0xc6, 0x51, 0x10, 0xc8 } }
 
 #define OPTEE_SP_FLAGS			0
 
diff --git a/deployments/sfs-demo/opteesp/sp.h b/deployments/sfs-demo/opteesp/sp.h
deleted file mode 100644
index 2b66c1c..0000000
--- a/deployments/sfs-demo/opteesp/sp.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SP_H
-#define SP_H
-
-#define OPTEE_SP_UUID \
-	{ 0x01109cf8, 0xe5ca, 0x446f, \
-		{ 0x9b, 0x55, 0xf3, 0xcd, 0xc6, 0x51, 0x10, 0xc8 } }
-
-#define SP_UUID_BYTES \
-	{ 0x01, 0x10, 0x9c, 0xf8, 0xe5, 0xca, 0x44, 0x6f, \
-	  0x9b, 0x55, 0xf3, 0xcd, 0xc6, 0x51, 0x10, 0xc8, }
-
-#endif /* SP_H */
diff --git a/deployments/sfs-demo/sfs-demo.cmake b/deployments/sfs-demo/sfs-demo.cmake
new file mode 100644
index 0000000..bc1cf26
--- /dev/null
+++ b/deployments/sfs-demo/sfs-demo.cmake
@@ -0,0 +1,33 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_components(TARGET "sfs-demo"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		components/common/trace
+		components/common/utils
+		components/messaging/ffa/libsp
+		components/rpc/common/interface
+		components/rpc/common/caller
+		components/rpc/ffarpc/caller/sp
+		components/service/common/include
+		components/service/common/client
+		components/service/secure_storage/include
+		components/service/secure_storage/frontend/psa/its
+		components/service/secure_storage/backend/secure_storage_client
+		protocols/rpc/common/packed-c
+		protocols/service/secure_storage/packed-c
+)
+
+target_sources(sfs-demo PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/sfs_demo_sp.c
+)
+
+target_include_directories(sfs-demo PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+)
diff --git a/deployments/smm-gateway/smm_gateway.c b/deployments/smm-gateway/common/smm_gateway.c
similarity index 100%
rename from deployments/smm-gateway/smm_gateway.c
rename to deployments/smm-gateway/common/smm_gateway.c
diff --git a/deployments/smm-gateway/smm_gateway.h b/deployments/smm-gateway/common/smm_gateway.h
similarity index 100%
rename from deployments/smm-gateway/smm_gateway.h
rename to deployments/smm-gateway/common/smm_gateway.h
diff --git a/deployments/smm-gateway/opteesp/smm_gateway_sp.c b/deployments/smm-gateway/common/smm_gateway_sp.c
similarity index 96%
rename from deployments/smm-gateway/opteesp/smm_gateway_sp.c
rename to deployments/smm-gateway/common/smm_gateway_sp.c
index 6f13885..2187fea 100644
--- a/deployments/smm-gateway/opteesp/smm_gateway_sp.c
+++ b/deployments/smm-gateway/common/smm_gateway_sp.c
@@ -1,10 +1,10 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
  */
 
 #include <rpc/ffarpc/endpoint/ffarpc_call_ep.h>
-#include <deployments/smm-gateway/smm_gateway.h>
+#include "smm_gateway.h"
 #include <config/ramstore/config_ramstore.h>
 #include "config/interface/config_store.h"
 #include <config/loader/sp/sp_config_loader.h>
diff --git a/deployments/smm-gateway/common/smm_gateway_sp.h b/deployments/smm-gateway/common/smm_gateway_sp.h
new file mode 100644
index 0000000..13317e7
--- /dev/null
+++ b/deployments/smm-gateway/common/smm_gateway_sp.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef SMM_GATEWAY_SP_H
+#define SMM_GATEWAY_SP_H
+
+#define SMM_GATEWAY_UUID_BYTES \
+	{0xed, 0x32, 0xd5, 0x33, 0x99, 0xe6, 0x42, 0x09, \
+	 0x9c, 0xc0, 0x2d, 0x72, 0xcd, 0xd9, 0x98, 0xa7}
+
+#endif /* SMM_GATEWAY_SP_H */
diff --git a/deployments/smm-gateway/opteesp/CMakeLists.txt b/deployments/smm-gateway/opteesp/CMakeLists.txt
index ab471e2..0462699 100644
--- a/deployments/smm-gateway/opteesp/CMakeLists.txt
+++ b/deployments/smm-gateway/opteesp/CMakeLists.txt
@@ -22,6 +22,7 @@
 target_include_directories(smm-gateway PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
 set(SP_UUID "ed32d533-99e6-4209-9cc0-2d72cdd998a7")
 set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(TRACE_PREFIX "SMMGW" CACHE STRING "Trace prefix")
 
 # Setting the MM communication buffer parameters
 set(MM_COMM_BUFFER_ADDRESS "0x00000008 0x81000000" CACHE STRING "Address of MM communicte buffer in 64 bit DTS format")
@@ -34,40 +35,10 @@
 add_components(TARGET "smm-gateway"
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
-		"components/common/fdt"
-		"components/common/trace"
-		"components/common/utils"
-		"components/common/uuid"
-		"components/config/ramstore"
-		"components/config/loader/sp"
-		"components/messaging/ffa/libsp"
-		"components/rpc/ffarpc/endpoint"
-		"components/rpc/ffarpc/caller/sp"
-		"components/rpc/mm_communicate/endpoint/sp"
-		"components/rpc/common/caller"
-		"components/rpc/common/interface"
-		"components/service/common/include"
-		"components/service/common/client"
-		"components/service/common/provider"
-		"components/service/locator"
-		"components/service/locator/interface"
-		"components/service/locator/sp"
-		"components/service/locator/sp/ffa"
-		"components/service/smm_variable/backend"
-		"components/service/smm_variable/frontend/mm_communicate"
-		"components/service/smm_variable/provider"
-		"components/service/secure_storage/include"
-		"components/service/secure_storage/backend/secure_storage_client"
-		"components/service/secure_storage/backend/mock_store"
-		"protocols/rpc/common/packed-c"
-		"protocols/service/secure_storage/packed-c"
 		"environments/opteesp"
 )
 
-target_sources(smm-gateway PRIVATE
-	smm_gateway_sp.c
-	../smm_gateway.c
-)
+include(../smm-gateway.cmake REQUIRED)
 
 #-------------------------------------------------------------------------------
 #  Set target platform to provide drivers needed by the deployment
@@ -82,8 +53,6 @@
 )
 
 target_include_directories(smm-gateway PRIVATE
-	${TS_ROOT}
-	${TS_ROOT}/components
 	${TS_ROOT}/deployments/smm-gateway/opteesp
 )
 
diff --git a/deployments/smm-gateway/opteesp/optee_sp_user_defines.h b/deployments/smm-gateway/opteesp/optee_sp_user_defines.h
index dd257fa..f4dde2b 100644
--- a/deployments/smm-gateway/opteesp/optee_sp_user_defines.h
+++ b/deployments/smm-gateway/opteesp/optee_sp_user_defines.h
@@ -6,10 +6,10 @@
 #ifndef SP_HEADER_DEFINES_H
 #define SP_HEADER_DEFINES_H
 
-/* To get UUID definition */
-#include "smm_gateway_sp.h"
+#define OPTEE_SP_UUID \
+	{0xed32d533, 0x99e6, 0x4209, \
+		{ 0x9c, 0xc0, 0x2d, 0x72, 0xcd, 0xd9, 0x98, 0xa7 }}
 
-#define OPTEE_SP_UUID				SMM_GATEWAY_UUID
 #define OPTEE_SP_FLAGS				0
 
 /* Provisioned stack size */
diff --git a/deployments/smm-gateway/opteesp/smm_gateway_sp.h b/deployments/smm-gateway/opteesp/smm_gateway_sp.h
deleted file mode 100644
index dd6c413..0000000
--- a/deployments/smm-gateway/opteesp/smm_gateway_sp.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SMM_GATEWAY_SP_H
-#define SMM_GATEWAY_SP_H
-
-#define SMM_GATEWAY_UUID \
-	 {0xed32d533, 0x99e6, 0x4209, \
-		     { 0x9c, 0xc0, 0x2d, 0x72, 0xcd, 0xd9, 0x98, 0xa7 }}
-
-#define SMM_GATEWAY_UUID_BYTES \
-	{0xed, 0x32, 0xd5, 0x33, 0x99, 0xe6, 0x42, 0x09, \
-	 0x9c, 0xc0, 0x2d, 0x72, 0xcd, 0xd9, 0x98, 0xa7}
-
-#endif /* SMM_GATEWAY_SP_H */
diff --git a/deployments/smm-gateway/smm-gateway.cmake b/deployments/smm-gateway/smm-gateway.cmake
new file mode 100644
index 0000000..70cb805
--- /dev/null
+++ b/deployments/smm-gateway/smm-gateway.cmake
@@ -0,0 +1,48 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_components(TARGET "smm-gateway"
+	BASE_DIR ${TS_ROOT}
+	COMPONENTS
+		"components/common/fdt"
+		"components/common/trace"
+		"components/common/utils"
+		"components/common/uuid"
+		"components/config/ramstore"
+		"components/config/loader/sp"
+		"components/messaging/ffa/libsp"
+		"components/rpc/ffarpc/endpoint"
+		"components/rpc/ffarpc/caller/sp"
+		"components/rpc/mm_communicate/endpoint/sp"
+		"components/rpc/common/caller"
+		"components/rpc/common/interface"
+		"components/service/common/include"
+		"components/service/common/client"
+		"components/service/common/provider"
+		"components/service/locator"
+		"components/service/locator/interface"
+		"components/service/locator/sp"
+		"components/service/locator/sp/ffa"
+		"components/service/smm_variable/backend"
+		"components/service/smm_variable/frontend/mm_communicate"
+		"components/service/smm_variable/provider"
+		"components/service/secure_storage/include"
+		"components/service/secure_storage/backend/secure_storage_client"
+		"components/service/secure_storage/backend/mock_store"
+		"protocols/rpc/common/packed-c"
+		"protocols/service/secure_storage/packed-c"
+)
+
+target_sources(smm-gateway PRIVATE
+	${CMAKE_CURRENT_LIST_DIR}/common/smm_gateway_sp.c
+	${CMAKE_CURRENT_LIST_DIR}/common/smm_gateway.c
+)
+
+target_include_directories(smm-gateway PRIVATE
+	${TS_ROOT}
+	${TS_ROOT}/components
+)