Build: Support building IPC model without tests

Refactors the build configuration variables so that the Core IPC tests
are only built if either CORE_TEST or REGRESSION is enabled (as well as
CORE_IPC). This matches the build behaviour for library model.

Adds a TFM_PARTITION_TEST_CORE_IPC build variable to make it possible
to compile-out the Core IPC test partition when the Core IPC tests are
not built.

Removes some unneeded build system behaviour that was conditional on
CORE_TEST to avoid causing problems when CORE_IPC is enabled.

Change-Id: Ia88bd3785817cc2dcedf88b737690fc32cc3266e
Signed-off-by: Jamie Fox <jamie.fox@arm.com>
diff --git a/secure_fw/CMakeLists.txt b/secure_fw/CMakeLists.txt
index 3186c5d..73dcc29 100644
--- a/secure_fw/CMakeLists.txt
+++ b/secure_fw/CMakeLists.txt
@@ -98,7 +98,7 @@
 if (NOT DEFINED CORE_TEST)
 	message(FATAL_ERROR "Incomplete build configuration: CORE_TEST is undefined.")
 elseif(CORE_TEST)
-	embedded_set_target_compile_defines(TARGET ${PROJECT_OBJ_LIB} LANGUAGE C DEFINES TFM_CORE_DEBUG TFM_PARTITION_TEST_CORE APPEND)
+	embedded_set_target_compile_defines(TARGET ${PROJECT_OBJ_LIB} LANGUAGE C DEFINES TFM_CORE_DEBUG APPEND)
 endif()
 
 if (NOT DEFINED TFM_NS_CLIENT_IDENTIFICATION)
@@ -166,7 +166,7 @@
 	#Set macro definitions for the project.
 	embedded_set_target_compile_defines(TARGET ${PROJECT_OBJ_LIB} LANGUAGE C DEFINES __thumb2__ __ARM_FEATURE_CMSE=3 TFM_LVL=${TFM_LVL} ${DEBUG_AUTHENTICATION} APPEND)
 
-	if (REGRESSION OR CORE_TEST OR CORE_IPC)
+	if (REGRESSION OR CORE_TEST)
 		if (DEFINED TFM_PARTITION_TEST_SECURE_SERVICES AND TFM_PARTITION_TEST_SECURE_SERVICES)
 			#The test service veneers in the tfm_secure_tests library may not be
 			#referenced in the secure binary so the veneer objects are explicitly loaded
@@ -213,6 +213,12 @@
 		embedded_set_target_link_defines(TARGET ${EXE_NAME} DEFINES "TFM_PARTITION_TEST_CORE")
 	endif()
 
+	if (NOT DEFINED TFM_PARTITION_TEST_CORE_IPC)
+		message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_CORE_IPC is undefined.")
+	elseif (TFM_PARTITION_TEST_CORE_IPC)
+		embedded_set_target_link_defines(TARGET ${EXE_NAME} DEFINES "TFM_PARTITION_TEST_CORE_IPC")
+	endif()
+
 	if (NOT DEFINED TFM_PARTITION_TEST_SECURE_SERVICES)
 		message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SECURE_SERVICES is undefined. ")
 	elseif (TFM_PARTITION_TEST_SECURE_SERVICES)
diff --git a/secure_fw/ns_callable/tfm_veneers.c b/secure_fw/ns_callable/tfm_veneers.c
index f04422d..aff38e8 100644
--- a/secure_fw/ns_callable/tfm_veneers.c
+++ b/secure_fw/ns_callable/tfm_veneers.c
@@ -101,13 +101,13 @@
 psa_status_t tfm_secure_client_service_sfn_run_tests(psa_invec *, size_t, psa_outvec *, size_t);
 #endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_SERVICE_TEST ********/
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_CLIENT_TEST ********/
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
 
 #define TFM_VENEER_FUNCTION(partition_name, sfn_name) \
@@ -213,11 +213,11 @@
 TFM_VENEER_FUNCTION(TFM_SP_SECURE_TEST_PARTITION, tfm_secure_client_service_sfn_run_tests)
 #endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_SERVICE_TEST ********/
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_CLIENT_TEST ********/
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
diff --git a/secure_fw/services/crypto/CMakeLists.txt b/secure_fw/services/crypto/CMakeLists.txt
index e288461..5f028c7 100644
--- a/secure_fw/services/crypto/CMakeLists.txt
+++ b/secure_fw/services/crypto/CMakeLists.txt
@@ -37,13 +37,6 @@
 
 include(CMakeLists.inc)
 
-#Configure how we build our target
-if(DEFINED CORE_TEST)
-  set (TFM_LVL 3)
-else()
-  set (TFM_LVL 1)
-endif()
-
 #Create a list of the C defines
 list(APPEND TFM_CRYPTO_C_DEFINES_LIST __ARM_FEATURE_CMSE=3 __thumb2__ TFM_LVL=${TFM_LVL})
 
diff --git a/secure_fw/services/tfm_partition_defs.inc b/secure_fw/services/tfm_partition_defs.inc
index 3a0b197..19e459d 100644
--- a/secure_fw/services/tfm_partition_defs.inc
+++ b/secure_fw/services/tfm_partition_defs.inc
@@ -36,13 +36,13 @@
 #define TFM_SP_SECURE_TEST_PARTITION_ID (TFM_SP_BASE + 7)
 #endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 #define TFM_SP_IPC_SERVICE_TEST_ID (TFM_SP_BASE + 8)
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 #define TFM_SP_IPC_CLIENT_TEST_ID (TFM_SP_BASE + 9)
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
 #define TFM_MAX_USER_PARTITIONS (10)
 
diff --git a/secure_fw/services/tfm_partition_list.inc b/secure_fw/services/tfm_partition_list.inc
index 3a47e19..fef79e6 100644
--- a/secure_fw/services/tfm_partition_list.inc
+++ b/secure_fw/services/tfm_partition_list.inc
@@ -71,20 +71,20 @@
 PARTITION_ADD_PERIPHERAL(TFM_SP_SECURE_TEST_PARTITION, TFM_PERIPHERAL_STD_UART);
 #endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_SERVICE_TEST ********/
 PARTITION_DECLARE(TFM_SP_IPC_SERVICE_TEST, 0
     | SPM_PART_FLAG_IPC
     , "PSA-ROT", 0x00000007, HIGH);
 PARTITION_ADD_INIT_FUNC(TFM_SP_IPC_SERVICE_TEST, ipc_service_test_main);
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_CLIENT_TEST ********/
 PARTITION_DECLARE(TFM_SP_IPC_CLIENT_TEST, 0
     | SPM_PART_FLAG_IPC
     , "APPLICATION-ROT", 0x00000006, NORMAL);
 PARTITION_ADD_INIT_FUNC(TFM_SP_IPC_CLIENT_TEST, ipc_client_init);
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
 #endif /* __TFM_PARTITION_LIST_INC__ */
diff --git a/secure_fw/services/tfm_service_list.inc b/secure_fw/services/tfm_service_list.inc
index 3bc40c7..51b0a51 100644
--- a/secure_fw/services/tfm_service_list.inc
+++ b/secure_fw/services/tfm_service_list.inc
@@ -264,7 +264,7 @@
 },
 #endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_SERVICE_TEST ********/
 {
         "IPC_SID_BASIC",
@@ -275,10 +275,10 @@
         1,
         TFM_VERSION_POLICY_STRICT
 },
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
-#ifdef TFM_PSA_API
+#ifdef TFM_PARTITION_TEST_CORE_IPC
 /******** TFM_SP_IPC_CLIENT_TEST ********/
-#endif /* TFM_PSA_API */
+#endif /* TFM_PARTITION_TEST_CORE_IPC */
 
 #endif /* __TFM_SERVICE_LIST_INC__ */