diff --git a/api-tests/CMakeLists.txt b/api-tests/CMakeLists.txt
new file mode 100644
index 0000000..fa949a3
--- /dev/null
+++ b/api-tests/CMakeLists.txt
@@ -0,0 +1,385 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# Set the minimum required version of CMake for the project
+cmake_minimum_required(VERSION 3.10)
+
+# cmake_policy
+cmake_policy(SET CMP0057 NEW)
+
+# Find python interpreter version 3 or greater
+find_package(PythonInterp 3 REQUIRED)
+# Find Git package
+find_package(Git REQUIRED)
+
+get_filename_component(PSA_ROOT_DIR . ABSOLUTE)
+
+list(APPEND CMAKE_MODULE_PATH ${PSA_ROOT_DIR}/tools/cmake)
+include("common/Utils")
+include(${PSA_ROOT_DIR}/tools/cmake/common/CMakeSettings.cmake)
+
+# list of supported suites
+list(APPEND PSA_SUITES
+	"IPC"
+	"CRYPTO"
+	"PROTECTED_STORAGE"
+	"INTERNAL_TRUSTED_STORAGE"
+	"INITIAL_ATTESTATION"
+)
+
+# list of ipc files required
+list(APPEND PSA_IPC_FILES
+	"psa/client.h"
+	"psa/service.h"
+	"psa_manifest/sid.h"
+	"psa_manifest/pid.h"
+	"psa/lifecycle.h"
+)
+
+# list of crypto files required
+list(APPEND PSA_CRYPTO_FILES
+	"psa/crypto.h"
+)
+
+# list of protected_storage files required
+list(APPEND PSA_PROTECTED_STORAGE_FILES
+	"psa/protected_storage.h"
+)
+
+# list of internal_trusted_storage files required
+list(APPEND PSA_INTERNAL_TRUSTED_STORAGE_FILES
+	"psa/internal_trusted_storage.h"
+)
+
+# list of initial_attestation files required
+list(APPEND PSA_INITIAL_ATTESTATION_FILES
+	"psa/initial_attestation.h"
+	"psa/crypto.h"
+)
+
+# list of supported toolchains
+list(APPEND PSA_TOOLCHAIN_SUPPORT
+        GNUARM
+        ARMCLANG
+        HOST_GCC
+)
+
+# list of suported CPU arch
+list(APPEND PSA_CPU_ARCH_SUPPORT
+	armv8m_ml
+	armv8m_bl
+	armv7m
+)
+
+# list of VERBOSE options
+list(APPEND PSA_VERBOSE_OPTIONS 1 2 3 4 5)
+
+message(STATUS "[PSA] : ----------Process input arguments- start-------------")
+
+# Check for TARGET command line argument
+_check_arguments("TARGET")
+# Check for SUTIE command line argument
+_check_arguments("SUITE")
+# Check for PSA_INCLUDE_PATHS command line argument
+_check_arguments("PSA_INCLUDE_PATHS")
+# Check for CPU_ARCH command line argument
+_check_arguments("CPU_ARCH")
+
+string(TOLOWER ${SUITE} SUITE_LOWER)
+
+# Check for valid targets
+_get_sub_dir_list(PSA_TARGET_LIST ${PSA_ROOT_DIR}/platform/targets)
+if(NOT ${TARGET} IN_LIST PSA_TARGET_LIST)
+	message(FATAL_ERROR "[PSA] : Error: Unspported value for -DTARGET=, supported targets are : ${PSA_TARGET_LIST}")
+endif()
+
+# Check for the presence of required test suite directories
+if((NOT IS_DIRECTORY ${PSA_ROOT_DIR}/dev_apis) OR (NOT IS_DIRECTORY ${PSA_ROOT_DIR}/ff))
+	message(STATUS "[PSA] : Error: Could not find architecture test suite directories in psa root path ${PSA_ROOT_DIR}")
+endif()
+
+if(FALSE)
+# Check for build directory specified
+if(NOT DEFINED BUILD)
+	set(BUILD ${CMAKE_CURRENT_BINARY_DIR}/BUILD CACHE INTERNAL "Defaulting build directory to ${BUILD}" FORCE)
+else()
+	set(BUILD ${CMAKE_CURRENT_BINARY_DIR}/${BUILD}/BUILD CACHE INTERNAL "Defaulting build directory to ${BUILD}" FORCE)
+endif()
+endif()
+
+# Check for valid suite cmake argument passed
+if(NOT ${SUITE} IN_LIST PSA_SUITES)
+	message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DSUITE=, select one from supported suites which are : ${PSA_SUITES}")
+endif()
+
+# Project variables
+set(PSA_TARGET_PRE_BUILD		psa_pre_build)
+set(PSA_TARGET_GENERATE_DATABASE_PRE	psa_generate_database_prerequisite)
+set(PSA_TARGET_GENERATE_DATABASE	psa_generate_database)
+set(PSA_TARGET_GENERATE_DATABASE_POST	psa_generate_database_cleanup)
+set(PSA_TARGET_QCBOR			psa_qcbor)
+set(PSA_TARGET_PAL_NSPE_LIB		pal_nspe)
+set(PSA_TARGET_VAL_NSPE_LIB		val_nspe)
+set(PSA_TARGET_TEST_COMBINE_LIB		test_combine)
+set(PSA_TARGET_DRIVER_PARTITION_LIB	driver_partition)
+set(PSA_TARGET_CLIENT_PARTITION_LIB	client_partition)
+set(PSA_TARGET_SERVER_PARTITION_LIB	server_partition)
+if(${SUITE} STREQUAL "IPC")
+	set(PSA_SUITE_DIR		${PSA_ROOT_DIR}/ff/${SUITE_LOWER})
+	set(PSA_SUITE_OUT_DIR		${CMAKE_CURRENT_BINARY_DIR}/ff/${SUITE_LOWER})
+else()
+	set(PSA_SUITE_DIR		${PSA_ROOT_DIR}/dev_apis/${SUITE_LOWER})
+	set(PSA_SUITE_OUT_DIR		${CMAKE_CURRENT_BINARY_DIR}/dev_apis/${SUITE_LOWER})
+endif()
+set(PSA_TARGET_CONFIG_HEADER_GENERATOR	${PSA_ROOT_DIR}/tools/scripts/target_cfg/targetConfigGen.py)
+set(PSA_TESTLIST_GENERATOR		${PSA_ROOT_DIR}/tools/scripts/gen_tests_list.py)
+set(TARGET_CONFIGURATION_FILE		${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cfg)
+set(TGT_CONFIG_SOURCE_C			${CMAKE_CURRENT_BINARY_DIR}/targetConfigGen.c)
+set(OUTPUT_HEADER			target_database.h)
+set(DATABASE_TABLE_NAME			target_database)
+set(DATABASE_TABLE_SECTION_NAME		"NOSECTION")
+set(TARGET_HEADER_GEN_INCLUDE_PATHS     "${PSA_ROOT_DIR}/val/nspe|${PSA_ROOT_DIR}/val/common|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto")
+set(TESTSUITE_DB			${PSA_SUITE_DIR}/testsuite.db)
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+set(PSA_QCBOR_GIT_REPO_LINK		https://github.com/laurencelundblade/QCBOR.git)
+set(PSA_QCBOR_GIT_REPO_TAG		da53227db1488dde0952bdff66c3d904dce270b3)
+set(PSA_QCBOR_INCLUDE_PATH		${CMAKE_CURRENT_BINARY_DIR}/src/psa_qcbor/inc)
+endif()
+set(PSA_TESTLIST_FILE			${CMAKE_CURRENT_BINARY_DIR}/testlist.txt)
+set(PSA_TEST_ENTRY_LIST_INC		${CMAKE_CURRENT_BINARY_DIR}/test_entry_list.inc)
+set(PSA_TEST_ENTRY_FUN_DECLARE_INC	${CMAKE_CURRENT_BINARY_DIR}/test_entry_fn_declare_list.inc)
+set(PSA_CLIENT_TEST_LIST_DELCARE_INC	${CMAKE_CURRENT_BINARY_DIR}/client_tests_list_declare.inc)
+set(PSA_CLIENT_TEST_LIST_INC		${CMAKE_CURRENT_BINARY_DIR}/client_tests_list.inc)
+set(PSA_SERVER_TEST_LIST_DECLARE_INC	${CMAKE_CURRENT_BINARY_DIR}/server_tests_list_declare.inc)
+set(PSA_SERVER_TEST_LIST		${CMAKE_CURRENT_BINARY_DIR}/server_tests_list.inc)
+
+# Validity check for required files for a given suite
+if(NOT DEFINED PSA_${SUITE}_FILES)
+	message(FATAL_ERROR "[PSA] : List of file/s to verify against ${suite} is not defined")
+endif()
+foreach(file_item ${PSA_${SUITE}_FILES})
+	set(PSA_FILE_FOUND FALSE)
+	foreach(include_path ${PSA_INCLUDE_PATHS})
+		if((EXISTS ${include_path}/${file_item}) AND
+		   (NOT PSA_FILE_FOUND))
+			set(PSA_FILE_FOUND TRUE)
+			break()
+		endif()
+	endforeach()
+	if(NOT PSA_FILE_FOUND)
+		message(FATAL_ERROR "[PSA] : Couldn't find ${file_item} in ${PSA_INCLUDE_PATHS}")
+	endif()
+endforeach()
+
+# Check for TOOLCHAIN command line argument
+if(NOT DEFINED TOOLCHAIN)
+        set(TOOLCHAIN "GNUARM" CACHE INTERNAL "Compiler used" FORCE)
+        message(STATUS "[PSA] : Defaulting compiler to ${TOOLCHAIN}")
+endif()
+
+# Check for CPU architecture
+if(NOT ${CPU_ARCH} IN_LIST PSA_CPU_ARCH_SUPPORT)
+	message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DCPU_ARCH=, supported CPU arch are : ${PSA_CPU_ARCH_SUPPORT}")
+endif()
+
+
+# Check for VERBOSE
+if(NOT DEFINED VERBOSE)
+	set(VERBOSE 3 CACHE INTERNAL "Default VERBOSE value" FORCE)
+        message(STATUS "[PSA] : Defaulting to VERBOSE=3")
+else()
+	if(NOT ${VERBOSE} IN_LIST PSA_VERBOSE_OPTIONS)
+		message(FATAL_ERROR "[PSA] : Error: Unspported value for -DVERBOSE=, supported values are : ${PSA_VERBOSE_OPTIONS}")
+	endif()
+endif()
+
+if(NOT DEFINED INCLUDE_PANIC_TESTS)
+	set(INCLUDE_PANIC_TESTS 0 CACHE INTERNAL "By default panic tests are disabled" FORCE)
+        message(STATUS "[PSA] : Defaulting to INCLUDE_PANIC_TESTS=0")
+else()
+	if(INCLUDE_PANIC_TESTS EQUAL 1)
+		message(STATUS "[PSA] : Ensure you set watchdog.num to 1 in ${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cfg")
+		message(STATUS "[PSA] : To test PSA APIs panic conditions, test harness may require to access watchdog timer "
+                	                "to recover from panic and to be able to continue with next test. "
+                        	        "Ignore this warning if system under test has capability to reset the system "
+                                	"when it encounters panic condition.")
+	endif()
+endif()
+
+if(NOT DEFINED WATCHDOG_AVAILABLE)
+	set(WATCHDOG_AVAILABLE	1 CACHE INTERNAL "By default watchdog is enabled" FORCE)
+        message(STATUS "[PSA] : Watchdog is enabled by default")
+endif()
+
+if((INCLUDE_PANIC_TESTS EQUAL 1) AND
+   (WATCHDOG_AVAILABLE EQUAL 0))
+	message(FATAL_ERROR "[PSA]: Panic test execution needs watchdog to be enabled! set -DWATCHDOG_AVAILABLE=1")
+endif()
+
+if(NOT DEFINED SP_HEAP_MEM_SUPP)
+	set(SP_HEAP_MEM_SUPP 1 CACHE INTERNAL "Are dynamic memory functions available to secure partition?" FORCE)
+        message(STATUS "[PSA] : Default value for SP_HEAP_MEM_SUPP is ${SP_HEAP_MEM_SUPP}")
+endif()
+
+if(NOT DEFINED TEST_COMBINE_ARCHIVE)
+	set(TEST_COMBINE_ARCHIVE 1 CACHE INTERNAL "Default option is to create archive" FORCE)
+        message(STATUS "[PSA] : Default value for TEST_COMBINE_ARCHIVE is ${TEST_COMBINE_ARCHIVE}")
+endif()
+
+message(STATUS "[PSA] : ----------Process input arguments- complete-------------")
+
+# Create PSA clean list
+list(APPEND PSA_CLEAN_LIST
+        ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_HEADER}
+	${PSA_TESTLIST_FILE}
+	${PSA_TEST_ENTRY_LIST_INC}
+	${PSA_TEST_ENTRY_FUN_DECLARE_INC}
+	${PSA_CLIENT_TEST_LIST_DELCARE_INC}
+	${PSA_CLIENT_TEST_LIST_INC}
+	${PSA_SERVER_TEST_LIST_DECLARE_INC}
+	${PSA_SERVER_TEST_LIST}
+)
+
+# Process testsuite.db
+message(STATUS "[PSA] : Creating testlist.txt 'available at ${PSA_TESTLIST_FILE}'")
+execute_process(COMMAND ${PYTHON_EXECUTABLE} ${PSA_TESTLIST_GENERATOR}
+					${SUITE_LOWER}
+					${TESTSUITE_DB}
+					${INCLUDE_PANIC_TESTS}
+					${PSA_TESTLIST_FILE}
+					${PSA_TEST_ENTRY_LIST_INC}
+					${PSA_TEST_ENTRY_FUN_DECLARE_INC}
+					${PSA_CLIENT_TEST_LIST_DELCARE_INC}
+					${PSA_CLIENT_TEST_LIST_INC}
+					${PSA_SERVER_TEST_LIST_DECLARE_INC}
+					${PSA_SERVER_TEST_LIST})
+# Creating CMake list variable from file
+file(READ ${PSA_TESTLIST_FILE} PSA_TEST_LIST)
+string(REGEX REPLACE "\n" ";" PSA_TEST_LIST "${PSA_TEST_LIST}")
+
+add_custom_target(
+	${PSA_TARGET_GENERATE_DATABASE_PRE}
+	COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/platform
+	COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/val
+	COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/partition
+	COMMAND ${CMAKE_COMMAND} -E make_directory ${PSA_SUITE_OUT_DIR}
+)
+
+# Generate target files from User provided data base
+include(ExternalProject)
+ExternalProject_Add(
+        ${PSA_TARGET_GENERATE_DATABASE}
+        PREFIX ${CMAKE_CURRENT_BINARY_DIR}
+        DOWNLOAD_COMMAND ""
+        UPDATE_COMMAND ""
+        PATCH_COMMAND ""
+        BUILD_COMMAND ""
+        SOURCE_DIR "${PSA_ROOT_DIR}/tools/scripts/target_cfg"
+	CMAKE_ARGS -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
+		-DOUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
+		-DTARGET=${TARGET}
+		-DGENERATOR_FILE=${PSA_TARGET_CONFIG_HEADER_GENERATOR}
+		-DINCLUDE_DIR=${PSA_ROOT_DIR}/val/common
+		-DTARGET_CONFIGURATION_FILE=${TARGET_CONFIGURATION_FILE}
+		-DTGT_CONFIG_SOURCE_C=${TGT_CONFIG_SOURCE_C}
+		-DOUTPUT_HEADER=${OUTPUT_HEADER}
+		-DDATABASE_TABLE_NAME=${DATABASE_TABLE_NAME}
+		-DDATABASE_TABLE_SECTION_NAME=${DATABASE_TABLE_SECTION_NAME}
+		-DTARGET_HEADER_GEN_INCLUDE_PATHS=${TARGET_HEADER_GEN_INCLUDE_PATHS}
+	LIST_SEPARATOR |
+        TEST_COMMAND ""
+)
+
+# Add custom target to clean generated files of the external project
+add_custom_target(
+        ${PSA_TARGET_GENERATE_DATABASE_POST}
+        COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/src/${PSA_TARGET_GENERATE_DATABASE}-build/ -- clean
+)
+
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+# Cloning CMSIS_5 repo
+ExternalProject_Add(
+        ${PSA_TARGET_QCBOR}
+        PREFIX ${CMAKE_CURRENT_BINARY_DIR}
+        GIT_REPOSITORY ${PSA_QCBOR_GIT_REPO_LINK}
+        GIT_TAG ${PSA_QCBOR_GIT_REPO_TAG}
+        CONFIGURE_COMMAND ""
+        UPDATE_COMMAND ""
+        PATCH_COMMAND ""
+        BUILD_COMMAND ""
+        TEST_COMMAND ""
+        INSTALL_COMMAND ""
+)
+endif()
+
+# Check for supported toolchain/s
+if(${TOOLCHAIN} IN_LIST PSA_TOOLCHAIN_SUPPORT)
+        include(${PSA_ROOT_DIR}/tools/cmake/compiler/${TOOLCHAIN}.cmake)
+else()
+        message(FATAL_ERROR "[PSA] : Error: Unspported value for -DTOOLCHAIN=, supported toolchain are : ${PSA_TOOLCHAIN_SUPPORT}")
+endif()
+
+# Global macro to identify the PSA test suite cmake build
+add_definitions(-DPSA_CMAKE_BUILD)
+add_definitions(-D${SUITE})
+add_definitions(-DVERBOSE=${VERBOSE})
+
+if(${SP_HEAP_MEM_SUPP} EQUAL 1)
+	add_definitions(-DSP_HEAP_MEM_SUPP)
+endif()
+
+# Build PAL NSPE LIB
+include(${PSA_ROOT_DIR}/platform/targets/${TARGET}/target.cmake)
+# Build VAL NSPE LIB
+#add_definitions(-DVAL_NSPE_BUILD)
+include(${PSA_ROOT_DIR}/val/val_nspe.cmake)
+# Build test
+include(${PSA_SUITE_DIR}/suite.cmake)
+if(${SUITE} STREQUAL "IPC")
+# Build SPE LIB
+include(${PSA_ROOT_DIR}/val/val_spe.cmake)
+endif()
+
+add_dependencies(${PSA_TARGET_GENERATE_DATABASE}	${PSA_TARGET_GENERATE_DATABASE_PRE})
+add_dependencies(${PSA_TARGET_GENERATE_DATABASE_POST}	${PSA_TARGET_GENERATE_DATABASE})
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+add_dependencies(${PSA_TARGET_QCBOR}			${PSA_TARGET_GENERATE_DATABASE_POST})
+add_dependencies(${PSA_TARGET_PAL_NSPE_LIB}		${PSA_TARGET_QCBOR})
+else()
+add_dependencies(${PSA_TARGET_PAL_NSPE_LIB} 		${PSA_TARGET_GENERATE_DATABASE_POST})
+endif()
+add_dependencies(${PSA_TARGET_VAL_NSPE_LIB}		${PSA_TARGET_PAL_NSPE_LIB})
+add_dependencies(${PSA_TARGET_TEST_COMBINE_LIB}		${PSA_TARGET_VAL_NSPE_LIB})
+if(${SUITE} STREQUAL "IPC")
+add_dependencies(${PSA_TARGET_DRIVER_PARTITION_LIB}	${PSA_TARGET_TEST_COMBINE_LIB})
+add_dependencies(${PSA_TARGET_CLIENT_PARTITION_LIB}	${PSA_TARGET_DRIVER_PARTITION_LIB})
+add_dependencies(${PSA_TARGET_SERVER_PARTITION_LIB}	${PSA_TARGET_CLIENT_PARTITION_LIB})
+endif()
+
+# Include the files for make clean
+foreach(clean_item ${PSA_CLEAN_LIST})
+        set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clean_item})
+endforeach()
+
+set_property(TARGET ${PSA_TARGET_VAL_NSPE_LIB}          PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/val)
+set_property(TARGET ${PSA_TARGET_PAL_NSPE_LIB}          PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/platform)
+set_property(TARGET ${PSA_TARGET_TEST_COMBINE_LIB}      PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${PSA_SUITE_OUT_DIR})
+if(${SUITE} STREQUAL "IPC")
+set_property(TARGET ${PSA_TARGET_DRIVER_PARTITION_LIB}  PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
+set_property(TARGET ${PSA_TARGET_CLIENT_PARTITION_LIB}  PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
+set_property(TARGET ${PSA_TARGET_SERVER_PARTITION_LIB}  PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/partition)
+endif()
diff --git a/api-tests/dev_apis/README.md b/api-tests/dev_apis/README.md
index 518fe60..6b8fabf 100644
--- a/api-tests/dev_apis/README.md
+++ b/api-tests/dev_apis/README.md
@@ -31,32 +31,35 @@
 To build the test suite for your target platform, execute the following commands:
 
 ```
-cd api-tests
-./tools/scripts/setup.sh --target <platform_name> --cpu_arch <cpu_architecture_version> --suite <suite_name>  --build <build_dir> --include <include_path> --archive_tests
+    cd api-tests
+    mkdir <build_dir>
+    cd <build_dir>
+    cmake ../ -G"<generator-name> -DTARGET=<platform_name> -DCPU_ARCH=<cpu_architecture_version> -DSUITE=<suite_name> -DPSA_INCLUDE_PATHS="<include_path1>;<include_path2>;...;<include_pathn>"
+    cmake --build .
 ```
 <br />  where:
 
--   <platform_name> is the same as the name of the target-specific directory created in the **platform/targets/** directory.  <br />
+-   <generator-name> "Unix Makefiles" to generate Makefiles for Linux and Cygwin <br />
+                     "MinGW Makefiles" to generate Makefiles for cmd.exe on Windows  <br />
+-   <platform_name> is the same as the name of the target-specific directory created in the **platform/targets/** directory. The current release has been tested on **tgt_dev_apis_tfm_an521**, **tgt_dev_apis_tfm_musca_b1** and **tgt_dev_apis_tfm_musca_a** platforms.<br />
 -   <cpu_architecture_version> is the Arm Architecture version name for which the tests should be compiled. For example, Armv7M, Armv8M-Baseline and Armv8M-Mainline Architecture.  <br />
 -   <suite_name> is the suite name that is the same as the suite name available in **dev_apis/** directory. <br />
--   <build_dir> is a directory to store build output files. <br />
--   <include_path> is an additional directory to be included into the compiler search path. <br />
-Note: You must provide Developer APIs header file implementation to the test suite build system using this option. For example, to compile Crypto tests, the include path must point to the path where **psa/crypto.h** is located in your build system.<br />
--  Use **--archive_tests** option to create a combined test archive (**test_combine.a**) file by combining available test object files. Absence of this option creates a combined test binary (**test_elf_combine.bin**) by combining the available test ELF files.
+-   <include_path1>;<include_path2>;...;<include_pathn> is an additional directory to be included into the compiler search path.You must provide Developer APIs header file implementation to the test suite build system using this option. For example, to compile Crypto tests, the include path must point to the path where **psa/crypto.h** is located in your build system.<br />
 
-For details about options, refer to **./tools/scripts/setup.sh --help**.
-
-To compile Crypto tests for **tgt_dev_apis_mbedos_fvp_mps2_m4** platform, execute the following commands:
+To compile Crypto tests for **tgt_dev_apis_tfm_an521** platform, execute the following commands:
 ```
-cd api-tests
-./tools/scripts/setup.sh --target tgt_dev_apis_mbedos_fvp_mps2_m4 --cpu_arch armv7m --suite crypto --build BUILD_CRYPTO --include <include_path>  --archive_tests
+    cd api-tests
+    mkdir BUILD
+    cd  BUILD
+    cmake ../ -G"Unix Makefiles" -DTARGET=tgt_dev_apis_tfm_an521 -DCPU_ARCH=armv8m_ml -DSUITE=CRYPTO -DPSA_INCLUDE_PATHS="<include_path1>;<include_path2>;...;<include_pathn>"
+    cmake --build .
 ```
 
 ### Build output
 Building the test suite generates the following NSPE binaries:<br />
-- **<build_dir>/BUILD/val/val_nspe.a**
-- **<build_dir>/BUILD/platform/pal_nspe.a**
-- **<build_dir>/BUILD/dev_apis/<suite_name>/test_combine.a**
+- **<build_dir>/val/val_nspe.a**
+- **<build_dir>/platform/pal_nspe.a**
+- **<build_dir>/dev_apis/<suite_name>/test_combine.a**
 
 ### Integrating the libraries into your target platform
 
diff --git a/api-tests/dev_apis/crypto/suite.cmake b/api-tests/dev_apis/crypto/suite.cmake
new file mode 100644
index 0000000..ddb3128
--- /dev/null
+++ b/api-tests/dev_apis/crypto/suite.cmake
@@ -0,0 +1,56 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+foreach(test ${PSA_TEST_LIST})
+	include(${PSA_SUITE_DIR}/${test}/test.cmake)
+	foreach(source_file ${CC_SOURCE})
+		list(APPEND SUITE_CC_SOURCE
+			${PSA_SUITE_DIR}/${test}/${source_file}
+		)
+	endforeach()
+	foreach(asm_file ${AS_SOURCE})
+		list(APPEND SUITE_AS_SOURCE
+			${PSA_SUITE_DIR}/${test}/${asm_file}
+		)
+	endforeach()
+	unset(CC_SOURCE)
+	unset(AS_SOURCE)
+endforeach()
+
+add_definitions(${CC_OPTIONS})
+add_definitions(${AS_OPTIONS})
+add_library(${PSA_TARGET_TEST_COMBINE_LIB} STATIC ${SUITE_CC_SOURCE} ${SUITE_AS_SOURCE})
+
+# Test related Include directories
+foreach(test ${PSA_TEST_LIST})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${PSA_SUITE_DIR}/${test})
+endforeach()
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+                ${psa_inc_path}
+        )
+endforeach()
+
+target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+)
diff --git a/api-tests/dev_apis/crypto/test_c001/source.mk b/api-tests/dev_apis/crypto/test_c001/source.mk
deleted file mode 100644
index f066e82..0000000
--- a/api-tests/dev_apis/crypto/test_c001/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c001.c test_c001.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c001/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c001/test.cmake
index 9761866..bed11f8 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c001/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c001.c
+	test_c001.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c002/source.mk b/api-tests/dev_apis/crypto/test_c002/source.mk
deleted file mode 100644
index b05e89a..0000000
--- a/api-tests/dev_apis/crypto/test_c002/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c002.c test_c002.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c002/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c002/test.cmake
index 9761866..c4762aa 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c002/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c002.c
+	test_c002.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c003/source.mk b/api-tests/dev_apis/crypto/test_c003/source.mk
deleted file mode 100644
index 6f21378..0000000
--- a/api-tests/dev_apis/crypto/test_c003/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c003.c test_c003.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c003/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c003/test.cmake
index 9761866..4d1ef6b 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c003/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c003.c
+	test_c003.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c004/source.mk b/api-tests/dev_apis/crypto/test_c004/source.mk
deleted file mode 100644
index 0c6aef1..0000000
--- a/api-tests/dev_apis/crypto/test_c004/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c004.c test_c004.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c004/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c004/test.cmake
index 9761866..3107f11 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c004/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c004.c
+	test_c004.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c005/source.mk b/api-tests/dev_apis/crypto/test_c005/source.mk
deleted file mode 100644
index 23bd36e..0000000
--- a/api-tests/dev_apis/crypto/test_c005/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c005.c test_c005.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c005/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c005/test.cmake
index 9761866..33fc0a6 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c005/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c005.c
+	test_c005.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c006/source.mk b/api-tests/dev_apis/crypto/test_c006/source.mk
deleted file mode 100644
index 11be5c5..0000000
--- a/api-tests/dev_apis/crypto/test_c006/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c006.c test_c006.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c006/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c006/test.cmake
index 9761866..22db535 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c006/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c006.c
+	test_c006.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c007/source.mk b/api-tests/dev_apis/crypto/test_c007/source.mk
deleted file mode 100644
index 3e76b14..0000000
--- a/api-tests/dev_apis/crypto/test_c007/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c007.c test_c007.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c007/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c007/test.cmake
index 9761866..53b0625 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c007/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c007.c
+	test_c007.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c008/source.mk b/api-tests/dev_apis/crypto/test_c008/source.mk
deleted file mode 100644
index 62d4727..0000000
--- a/api-tests/dev_apis/crypto/test_c008/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c008.c test_c008.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c008/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c008/test.cmake
index 9761866..625227a 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c008/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c008.c
+	test_c008.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c009/source.mk b/api-tests/dev_apis/crypto/test_c009/source.mk
deleted file mode 100644
index c865e8e..0000000
--- a/api-tests/dev_apis/crypto/test_c009/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c009.c test_c009.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c009/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c009/test.cmake
index 9761866..93b0c94 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c009/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c009.c
+	test_c009.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c010/source.mk b/api-tests/dev_apis/crypto/test_c010/source.mk
deleted file mode 100644
index 8b32fcf..0000000
--- a/api-tests/dev_apis/crypto/test_c010/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c010.c test_c010.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c010/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c010/test.cmake
index 9761866..c3ca105 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c010/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c010.c
+	test_c010.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c011/source.mk b/api-tests/dev_apis/crypto/test_c011/source.mk
deleted file mode 100644
index 4ab62a9..0000000
--- a/api-tests/dev_apis/crypto/test_c011/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c011.c test_c011.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c011/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c011/test.cmake
index 9761866..7c2b04e 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c011/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c011.c
+	test_c011.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c012/source.mk b/api-tests/dev_apis/crypto/test_c012/source.mk
deleted file mode 100644
index f6c4ec3..0000000
--- a/api-tests/dev_apis/crypto/test_c012/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c012.c test_c012.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c012/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c012/test.cmake
index 9761866..9ea7f0d 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c012/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c012.c
+	test_c012.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c013/source.mk b/api-tests/dev_apis/crypto/test_c013/source.mk
deleted file mode 100644
index 8d63e45..0000000
--- a/api-tests/dev_apis/crypto/test_c013/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c013.c test_c013.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c013/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c013/test.cmake
index 9761866..3939d2c 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c013/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c013.c
+	test_c013.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c014/source.mk b/api-tests/dev_apis/crypto/test_c014/source.mk
deleted file mode 100644
index 44a2bdb..0000000
--- a/api-tests/dev_apis/crypto/test_c014/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c014.c test_c014.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c014/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c014/test.cmake
index 9761866..6bf060f 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c014/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c014.c
+	test_c014.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c015/source.mk b/api-tests/dev_apis/crypto/test_c015/source.mk
deleted file mode 100644
index 70abb3c..0000000
--- a/api-tests/dev_apis/crypto/test_c015/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c015.c test_c015.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c015/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c015/test.cmake
index 9761866..69bf742 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c015/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c015.c
+	test_c015.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c016/source.mk b/api-tests/dev_apis/crypto/test_c016/source.mk
deleted file mode 100644
index f7d0b7e..0000000
--- a/api-tests/dev_apis/crypto/test_c016/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c016.c test_c016.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c016/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c016/test.cmake
index 9761866..a4aa713 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c016/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c016.c
+	test_c016.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c017/source.mk b/api-tests/dev_apis/crypto/test_c017/source.mk
deleted file mode 100644
index 6147e4c..0000000
--- a/api-tests/dev_apis/crypto/test_c017/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c017.c test_c017.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c017/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c017/test.cmake
index 9761866..4314199 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c017/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c017.c
+	test_c017.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c018/source.mk b/api-tests/dev_apis/crypto/test_c018/source.mk
deleted file mode 100644
index fbfbcae..0000000
--- a/api-tests/dev_apis/crypto/test_c018/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c018.c test_c018.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c018/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c018/test.cmake
index 9761866..32d01a5 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c018/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c018.c
+	test_c018.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c019/source.mk b/api-tests/dev_apis/crypto/test_c019/source.mk
deleted file mode 100644
index a0a473b..0000000
--- a/api-tests/dev_apis/crypto/test_c019/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c019.c test_c019.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c019/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c019/test.cmake
index 9761866..c240558 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c019/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c019.c
+	test_c019.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c020/source.mk b/api-tests/dev_apis/crypto/test_c020/source.mk
deleted file mode 100644
index accb40d..0000000
--- a/api-tests/dev_apis/crypto/test_c020/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c020.c test_c020.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c020/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c020/test.cmake
index 9761866..8ceb228 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c020/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c020.c
+	test_c020.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c021/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c021/test.cmake
index 9761866..e1a7891 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c021/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c021.c
+	test_c021.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c022/source.mk b/api-tests/dev_apis/crypto/test_c022/source.mk
deleted file mode 100644
index 2ef3d73..0000000
--- a/api-tests/dev_apis/crypto/test_c022/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c022.c test_c022.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c022/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c022/test.cmake
index 9761866..c095e55 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c022/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c022.c
+	test_c022.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c023/source.mk b/api-tests/dev_apis/crypto/test_c023/source.mk
deleted file mode 100644
index bd0d7e7..0000000
--- a/api-tests/dev_apis/crypto/test_c023/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c023.c test_c023.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c023/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c023/test.cmake
index 9761866..ceca9af 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c023/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c023.c
+	test_c023.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c024/source.mk b/api-tests/dev_apis/crypto/test_c024/source.mk
deleted file mode 100644
index bfa9bee..0000000
--- a/api-tests/dev_apis/crypto/test_c024/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c024.c test_c024.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c024/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c024/test.cmake
index 9761866..5904afc 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c024/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c024.c
+	test_c024.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c025/source.mk b/api-tests/dev_apis/crypto/test_c025/source.mk
deleted file mode 100644
index e5ef05c..0000000
--- a/api-tests/dev_apis/crypto/test_c025/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c025.c test_c025.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c025/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c025/test.cmake
index 9761866..af89d01 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c025/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c025.c
+	test_c025.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c026/source.mk b/api-tests/dev_apis/crypto/test_c026/source.mk
deleted file mode 100644
index ab8acf2..0000000
--- a/api-tests/dev_apis/crypto/test_c026/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c026.c test_c026.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c026/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c026/test.cmake
index 9761866..29ddd0a 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c026/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c026.c
+	test_c026.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c027/source.mk b/api-tests/dev_apis/crypto/test_c027/source.mk
deleted file mode 100644
index 243dff7..0000000
--- a/api-tests/dev_apis/crypto/test_c027/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c027.c test_c027.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c027/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c027/test.cmake
index 9761866..15623b7 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c027/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c027.c
+	test_c027.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c028/source.mk b/api-tests/dev_apis/crypto/test_c028/source.mk
deleted file mode 100644
index f7dd193..0000000
--- a/api-tests/dev_apis/crypto/test_c028/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c028.c test_c028.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c028/test.cmake
similarity index 82%
rename from api-tests/dev_apis/crypto/test_c021/source.mk
rename to api-tests/dev_apis/crypto/test_c028/test.cmake
index 9761866..eae954e 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c028/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c028.c
+	test_c028.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c029/source.mk b/api-tests/dev_apis/crypto/test_c029/source.mk
deleted file mode 100644
index 31b0f42..0000000
--- a/api-tests/dev_apis/crypto/test_c029/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c029.c test_c029.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c029/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c029/test.cmake
index 9761866..112f7ab 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c029/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c029.c
+	test_c029.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c030/source.mk b/api-tests/dev_apis/crypto/test_c030/source.mk
deleted file mode 100644
index 1cb3c47..0000000
--- a/api-tests/dev_apis/crypto/test_c030/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c030.c test_c030.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c030/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c030/test.cmake
index 9761866..ba46882 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c030/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c030.c
+	test_c030.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c031/source.mk b/api-tests/dev_apis/crypto/test_c031/source.mk
deleted file mode 100644
index be9d306..0000000
--- a/api-tests/dev_apis/crypto/test_c031/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c031.c test_c031.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c031/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c031/test.cmake
index 9761866..5ff1ecf 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c031/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c031.c
+	test_c031.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c032/source.mk b/api-tests/dev_apis/crypto/test_c032/source.mk
deleted file mode 100644
index 15305a1..0000000
--- a/api-tests/dev_apis/crypto/test_c032/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c032.c test_c032.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c032/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c032/test.cmake
index 9761866..769b43e 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c032/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c032.c
+	test_c032.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c033/source.mk b/api-tests/dev_apis/crypto/test_c033/source.mk
deleted file mode 100644
index e1925ed..0000000
--- a/api-tests/dev_apis/crypto/test_c033/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c033.c test_c033.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c033/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c033/test.cmake
index 9761866..505bd9e 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c033/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c033.c
+	test_c033.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c034/source.mk b/api-tests/dev_apis/crypto/test_c034/source.mk
deleted file mode 100644
index 48b0dde..0000000
--- a/api-tests/dev_apis/crypto/test_c034/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c034.c test_c034.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c034/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c034/test.cmake
index 9761866..dac6246 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c034/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c034.c
+	test_c034.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c035/source.mk b/api-tests/dev_apis/crypto/test_c035/source.mk
deleted file mode 100644
index b3318fe..0000000
--- a/api-tests/dev_apis/crypto/test_c035/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c035.c test_c035.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c035/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c035/test.cmake
index 9761866..049eb98 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c035/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c035.c
+	test_c035.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c036/source.mk b/api-tests/dev_apis/crypto/test_c036/source.mk
deleted file mode 100644
index 7a06132..0000000
--- a/api-tests/dev_apis/crypto/test_c036/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c036.c test_c036.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c036/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c036/test.cmake
index 9761866..e8b9666 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c036/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c036.c
+	test_c036.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c037/source.mk b/api-tests/dev_apis/crypto/test_c037/source.mk
deleted file mode 100644
index 0915b8a..0000000
--- a/api-tests/dev_apis/crypto/test_c037/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c037.c test_c037.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c037/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c037/test.cmake
index 9761866..0a6a24b 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c037/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c037.c
+	test_c037.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c038/source.mk b/api-tests/dev_apis/crypto/test_c038/source.mk
deleted file mode 100644
index 2f6d4f0..0000000
--- a/api-tests/dev_apis/crypto/test_c038/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c038.c test_c038.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c038/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c038/test.cmake
index 9761866..59a6c5e 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c038/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c038.c
+	test_c038.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c039/source.mk b/api-tests/dev_apis/crypto/test_c039/source.mk
deleted file mode 100644
index 710a57c..0000000
--- a/api-tests/dev_apis/crypto/test_c039/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c039.c test_c039.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c039/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c039/test.cmake
index 9761866..3ed4781 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c039/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c039.c
+	test_c039.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c040/source.mk b/api-tests/dev_apis/crypto/test_c040/source.mk
deleted file mode 100644
index 8033ae4..0000000
--- a/api-tests/dev_apis/crypto/test_c040/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c040.c test_c040.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c040/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c040/test.cmake
index 9761866..3d33945 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c040/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c040.c
+	test_c040.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c041/source.mk b/api-tests/dev_apis/crypto/test_c041/source.mk
deleted file mode 100644
index 1263a66..0000000
--- a/api-tests/dev_apis/crypto/test_c041/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c041.c test_c041.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c041/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c041/test.cmake
index 9761866..0e96d93 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c041/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c041.c
+	test_c041.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c042/source.mk b/api-tests/dev_apis/crypto/test_c042/source.mk
deleted file mode 100644
index 570ce55..0000000
--- a/api-tests/dev_apis/crypto/test_c042/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c042.c test_c042.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c042/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c042/test.cmake
index 9761866..f67e12f 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c042/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c042.c
+	test_c042.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c043/source.mk b/api-tests/dev_apis/crypto/test_c043/source.mk
deleted file mode 100644
index 9e58f79..0000000
--- a/api-tests/dev_apis/crypto/test_c043/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c043.c test_c043.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c043/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c043/test.cmake
index 9761866..42e185d 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c043/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c043.c
+	test_c043.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/crypto/test_c044/source.mk b/api-tests/dev_apis/crypto/test_c044/source.mk
deleted file mode 100644
index f205658..0000000
--- a/api-tests/dev_apis/crypto/test_c044/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_c044.c test_c044.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/crypto/test_c044/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/crypto/test_c044/test.cmake
index 9761866..0ceea82 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/crypto/test_c044/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_c044.c
+	test_c044.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/initial_attestation/suite.cmake b/api-tests/dev_apis/initial_attestation/suite.cmake
new file mode 100644
index 0000000..ddb3128
--- /dev/null
+++ b/api-tests/dev_apis/initial_attestation/suite.cmake
@@ -0,0 +1,56 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+foreach(test ${PSA_TEST_LIST})
+	include(${PSA_SUITE_DIR}/${test}/test.cmake)
+	foreach(source_file ${CC_SOURCE})
+		list(APPEND SUITE_CC_SOURCE
+			${PSA_SUITE_DIR}/${test}/${source_file}
+		)
+	endforeach()
+	foreach(asm_file ${AS_SOURCE})
+		list(APPEND SUITE_AS_SOURCE
+			${PSA_SUITE_DIR}/${test}/${asm_file}
+		)
+	endforeach()
+	unset(CC_SOURCE)
+	unset(AS_SOURCE)
+endforeach()
+
+add_definitions(${CC_OPTIONS})
+add_definitions(${AS_OPTIONS})
+add_library(${PSA_TARGET_TEST_COMBINE_LIB} STATIC ${SUITE_CC_SOURCE} ${SUITE_AS_SOURCE})
+
+# Test related Include directories
+foreach(test ${PSA_TEST_LIST})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${PSA_SUITE_DIR}/${test})
+endforeach()
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+                ${psa_inc_path}
+        )
+endforeach()
+
+target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+)
diff --git a/api-tests/dev_apis/initial_attestation/test_a001/source.mk b/api-tests/dev_apis/initial_attestation/test_a001/source.mk
deleted file mode 100644
index 601bde9..0000000
--- a/api-tests/dev_apis/initial_attestation/test_a001/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_a001.c test_a001.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/initial_attestation/test_a001/test.cmake
similarity index 82%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/initial_attestation/test_a001/test.cmake
index 9761866..55df1fa 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/initial_attestation/test_a001/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_a001.c
+	test_a001.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/suite.cmake b/api-tests/dev_apis/internal_trusted_storage/suite.cmake
new file mode 100644
index 0000000..e4de40c
--- /dev/null
+++ b/api-tests/dev_apis/internal_trusted_storage/suite.cmake
@@ -0,0 +1,57 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+foreach(test ${PSA_TEST_LIST})
+	include(${PSA_SUITE_DIR}/${test}/test.cmake)
+	foreach(source_file ${CC_SOURCE})
+		list(APPEND SUITE_CC_SOURCE
+			${PSA_SUITE_DIR}/${test}/${source_file}
+		)
+	endforeach()
+	foreach(asm_file ${AS_SOURCE})
+		list(APPEND SUITE_AS_SOURCE
+			${PSA_SUITE_DIR}/${test}/${asm_file}
+		)
+	endforeach()
+	unset(CC_SOURCE)
+	unset(AS_SOURCE)
+endforeach()
+
+add_definitions(${CC_OPTIONS})
+add_definitions(${AS_OPTIONS})
+add_library(${PSA_TARGET_TEST_COMBINE_LIB} STATIC ${SUITE_CC_SOURCE} ${SUITE_AS_SOURCE})
+
+# Test related Include directories
+foreach(test ${PSA_TEST_LIST})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${PSA_SUITE_DIR}/${test})
+endforeach()
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+                ${psa_inc_path}
+        )
+endforeach()
+
+target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+)
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s001/source.mk
deleted file mode 100644
index 14e152d..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s001.c test_s001.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s001/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s001/test.cmake
index 9761866..fb61ac1 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s001/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s001.c
+	test_s001.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s002/source.mk
deleted file mode 100755
index abc1a1f..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s002.c test_s002.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s002/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s002/test.cmake
index 9761866..e8cfe6a 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s002/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s002.c
+	test_s002.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s003/source.mk
deleted file mode 100755
index d24a930..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s003.c test_s003.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s003/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s003/test.cmake
index 9761866..da2f1ad 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s003/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s003.c
+	test_s003.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s004/source.mk
deleted file mode 100755
index 804d4e5..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s004.c test_s004.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s004/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s004/test.cmake
index 9761866..88caf83 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s004/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s004.c
+	test_s004.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s005/source.mk
deleted file mode 100755
index 1f9a30e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s005.c test_s005.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s005/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s005/test.cmake
index 9761866..33559cb 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s005/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s005.c
+	test_s005.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s006/source.mk
deleted file mode 100755
index 3b64b74..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s006.c test_s006.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s006/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s006/test.cmake
index 9761866..7810ff6 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s006/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s006.c
+	test_s006.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s007/source.mk
deleted file mode 100755
index 4ba5f69..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s007.c test_s007.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s007/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s007/test.cmake
index 9761866..cee8525 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s007/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s007.c
+	test_s007.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s008/source.mk
deleted file mode 100755
index b1ec445..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s008.c test_s008.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s008/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s008/test.cmake
index 9761866..ecba9c3 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s008/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s008.c
+	test_s008.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s009/source.mk
deleted file mode 100755
index 639ba27..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s009.c test_s009.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s009/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s009/test.cmake
index 9761866..e5fe7ee 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s009/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s009.c
+	test_s009.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s010/source.mk
deleted file mode 100644
index 9824203..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s010.c test_s010.c
-CC_OPTIONS = -DITS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/internal_trusted_storage/test_s010/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/internal_trusted_storage/test_s010/test.cmake
index 9761866..4c3dc6a 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s010/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s010.c
+	test_s010.c
+)
+list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/suite.cmake b/api-tests/dev_apis/protected_storage/suite.cmake
new file mode 100644
index 0000000..2dc9b5b
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/suite.cmake
@@ -0,0 +1,78 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+foreach(test ${PSA_TEST_LIST})
+	string(SUBSTRING ${test} 0 6 ITS_TEST_STR)
+	if((${SUITE} STREQUAL "PROTECTED_STORAGE") AND
+	   (${ITS_TEST_STR} STREQUAL "test_s"))
+		string(REPLACE ${SUITE_LOWER} "internal_trusted_storage" ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
+	else()
+		set(ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
+	endif()
+	include(${ACTUAL_PSA_SUITE_DIR}/${test}/test.cmake)
+	foreach(source_file ${CC_SOURCE})
+		list(APPEND SUITE_CC_SOURCE
+			${ACTUAL_PSA_SUITE_DIR}/${test}/${source_file}
+		)
+	endforeach()
+	foreach(asm_file ${AS_SOURCE})
+		list(APPEND SUITE_AS_SOURCE
+			${ACTUAL_PSA_SUITE_DIR}/${test}/${asm_file}
+		)
+	endforeach()
+	if((${SUITE} STREQUAL "PROTECTED_STORAGE") AND
+	   (${ITS_TEST_STR} STREQUAL "test_p"))
+		add_definitions(${CC_OPTIONS})
+		add_definitions(${AS_OPTIONS})
+	endif()
+	unset(CC_SOURCE)
+	unset(AS_SOURCE)
+	unset(ACTUAL_PSA_SUITE_DIR)
+	unset(CC_OPTIONS)
+endforeach()
+
+add_library(${PSA_TARGET_TEST_COMBINE_LIB} STATIC ${SUITE_CC_SOURCE} ${SUITE_AS_SOURCE})
+
+# Test related Include directories
+foreach(test ${PSA_TEST_LIST})
+	string(SUBSTRING ${test} 0 6 ITS_TEST_STR)
+	if((${SUITE} STREQUAL "PROTECTED_STORAGE") AND
+	   (${ITS_TEST_STR} STREQUAL "test_s"))
+		string(REPLACE ${SUITE_LOWER} "internal_trusted_storage" ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
+	else()
+		set(ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
+	endif()
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${ACTUAL_PSA_SUITE_DIR}/${test})
+	unset(ACTUAL_PSA_SUITE_DIR)
+endforeach()
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+                ${psa_inc_path}
+        )
+endforeach()
+
+target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+)
diff --git a/api-tests/dev_apis/protected_storage/test_p011/source.mk b/api-tests/dev_apis/protected_storage/test_p011/source.mk
deleted file mode 100644
index beb30be..0000000
--- a/api-tests/dev_apis/protected_storage/test_p011/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_p011.c test_p011.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_p011/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_p011/test.cmake
index 9761866..67884da 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_p011/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_p011.c
+	test_p011.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p012/source.mk b/api-tests/dev_apis/protected_storage/test_p012/source.mk
deleted file mode 100644
index 1820ace..0000000
--- a/api-tests/dev_apis/protected_storage/test_p012/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_p012.c test_p012.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_p012/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_p012/test.cmake
index 9761866..28b4103 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_p012/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_p012.c
+	test_p012.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p013/source.mk b/api-tests/dev_apis/protected_storage/test_p013/source.mk
deleted file mode 100644
index c966717..0000000
--- a/api-tests/dev_apis/protected_storage/test_p013/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_p013.c test_p013.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_p013/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_p013/test.cmake
index 9761866..6c1913f 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_p013/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_p013.c
+	test_p013.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p014/source.mk b/api-tests/dev_apis/protected_storage/test_p014/source.mk
deleted file mode 100644
index 931b670..0000000
--- a/api-tests/dev_apis/protected_storage/test_p014/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_p014.c test_p014.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_p014/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_p014/test.cmake
index 9761866..a794d8c 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_p014/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_p014.c
+	test_p014.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p015/source.mk b/api-tests/dev_apis/protected_storage/test_p015/source.mk
deleted file mode 100644
index 81b14e9..0000000
--- a/api-tests/dev_apis/protected_storage/test_p015/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_p015.c test_p015.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_p015/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_p015/test.cmake
index 9761866..b2a8b62 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_p015/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_p015.c
+	test_p015.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s001/source.mk b/api-tests/dev_apis/protected_storage/test_s001/source.mk
deleted file mode 100644
index 6a92d9f..0000000
--- a/api-tests/dev_apis/protected_storage/test_s001/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s001.c test_s001.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s001/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s001/test.cmake
index 9761866..ee15ef4 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s001/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s001.c
+	test_s001.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s002/source.mk b/api-tests/dev_apis/protected_storage/test_s002/source.mk
deleted file mode 100644
index 3d5771c..0000000
--- a/api-tests/dev_apis/protected_storage/test_s002/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s002.c test_s002.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s002/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s002/test.cmake
index 9761866..c588caa 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s002/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s002.c
+	test_s002.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s003/source.mk b/api-tests/dev_apis/protected_storage/test_s003/source.mk
deleted file mode 100644
index afdb886..0000000
--- a/api-tests/dev_apis/protected_storage/test_s003/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s003.c test_s003.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s003/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s003/test.cmake
index 9761866..6a38d56 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s003/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s003.c
+	test_s003.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s004/source.mk b/api-tests/dev_apis/protected_storage/test_s004/source.mk
deleted file mode 100644
index c73824d..0000000
--- a/api-tests/dev_apis/protected_storage/test_s004/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s004.c test_s004.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s004/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s004/test.cmake
index 9761866..1210631 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s004/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s004.c
+	test_s004.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s005/source.mk b/api-tests/dev_apis/protected_storage/test_s005/source.mk
deleted file mode 100644
index 627438f..0000000
--- a/api-tests/dev_apis/protected_storage/test_s005/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s005.c test_s005.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s005/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s005/test.cmake
index 9761866..bf3786a 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s005/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s005.c
+	test_s005.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s006/source.mk b/api-tests/dev_apis/protected_storage/test_s006/source.mk
deleted file mode 100644
index b64fb21..0000000
--- a/api-tests/dev_apis/protected_storage/test_s006/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s006.c test_s006.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s006/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s006/test.cmake
index 9761866..c661ac3 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s006/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s006.c
+	test_s006.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s007/source.mk b/api-tests/dev_apis/protected_storage/test_s007/source.mk
deleted file mode 100644
index 2e242cc..0000000
--- a/api-tests/dev_apis/protected_storage/test_s007/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s007.c test_s007.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s007/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s007/test.cmake
index 9761866..5c6606d 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s007/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s007.c
+	test_s007.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s008/source.mk b/api-tests/dev_apis/protected_storage/test_s008/source.mk
deleted file mode 100644
index 1e8bc76..0000000
--- a/api-tests/dev_apis/protected_storage/test_s008/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s008.c test_s008.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s008/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s008/test.cmake
index 9761866..b91d92d 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s008/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s008.c
+	test_s008.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s009/source.mk b/api-tests/dev_apis/protected_storage/test_s009/source.mk
deleted file mode 100644
index 5a2c3b0..0000000
--- a/api-tests/dev_apis/protected_storage/test_s009/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s009.c test_s009.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s009/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s009/test.cmake
index 9761866..9d66436 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s009/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s009.c
+	test_s009.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s010/source.mk b/api-tests/dev_apis/protected_storage/test_s010/source.mk
deleted file mode 100644
index e0b22d5..0000000
--- a/api-tests/dev_apis/protected_storage/test_s010/source.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_s010.c test_s010.c
-CC_OPTIONS = -DPS_TEST
-AS_SOURCE  =
-AS_OPTIONS =
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/dev_apis/protected_storage/test_s010/test.cmake
similarity index 81%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/dev_apis/protected_storage/test_s010/test.cmake
index 9761866..b36e23f 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/dev_apis/protected_storage/test_s010/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_s010.c
+	test_s010.c
+)
+list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
diff --git a/api-tests/docs/porting_guide_dev_apis.md b/api-tests/docs/porting_guide_dev_apis.md
index 8349123..595038e 100644
--- a/api-tests/docs/porting_guide_dev_apis.md
+++ b/api-tests/docs/porting_guide_dev_apis.md
@@ -33,16 +33,15 @@
 
 ### Adding a new target
 
-  1. Create a new directory in **platform/targets/<platform_name>**. For reference, see the existing platform **tgt_dev_apis_mbedos_fvp_mps2_m4** directory.
-  2. Execute `cp -rf platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/ platform/targets/<platform_name>/`.
+  1. Create a new directory in **platform/targets/<platform_name>**. For reference, see the existing platform **tgt_dev_apis_tfm_an521** directory.
+  2. Execute `cp -rf platform/targets/tgt_dev_apis_tfm_an521/ platform/targets/<platform_name>/`.
   3. Update **platform/targets/<platform_name>/target.cfg** with your platform details. Refer to **val/common/val_target.h** for structure details.
-  4. Update **platform/targets/<platform_name>/Makefile** appropriately to select the correct instances of PAL files for compilation. To compile **dev_apis** suites, you must set **PSA_IPC_IMPLEMENTED** to 0. This selects the Non-secure PAL instances for the driver services and eliminates IPC dependency for dev_apis tests.
-  5. Refer to the **List of PAL APIs** section to view the list of PAL APIs that must be ported for your target platform. These API definitions are available in **nspe/<suite_name>/pal_\*\_intf.c**. These APIs are written for tgt_dev_apis_mbedos_fvp_mps2_m4 platform. You can reuse the code if it works for your platform. Otherwise, you must port them for your platform-specific peripherals.
+  4. Update **platform/targets/<platform_name>/target.cmake** appropriately to select the correct instances of PAL files for compilation.
+  5. Refer to the **List of PAL APIs** section to view the list of PAL APIs that must be ported for your target platform. These API definitions are available in **nspe/<suite_name>/pal_\*\_intf.c**. These APIs are written for tgt_dev_apis_tfm_an521 platform. You can reuse the code if it works for your platform. Otherwise, you must port them for your platform-specific peripherals.
   6. Update Crypto configuration file **nspe/crypto/pal_crypto_config.h** to enable or disable Crypto features selectively for the Crypto test suite.
 
 **Note**:
-- The platform makefile is invoked as part of test suite build tool (**./setup.sh**) step and it creates **<build_dir>/BUILD/platform/pal_nspe.a** archive.
-- The test suite requires access the following peripherals:
+The test suite requires access to the following peripherals:
   - One UART to print NSPE and SPE messages
   - One Watchdog timer to help recover from any fatal error conditions
   - Non-volatile memory support to preserve test status over watchdog timer reset
@@ -53,18 +52,17 @@
 
 | No | Prototype                                                                                                                   | Description                                                            | Parameters                                               |
 |----|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|----------------------------------------------------------|
-| 01 | int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len);                                                                 | Reads peripherals using SPI commands                 | addr : Address of the peripheral<br/>data : Read buffer<br/>len  : Length of the read buffer in bytes<br/>                    |
-| 02 | int pal_uart_init_ns(uint32_t uart_base_addr);                                                                              | Initializes the UART                                     | UART base address<br/>                                      |
-| 03 | int pal_print_ns(char *str, int32_t data);                                                                                 | Parses the input string and writes bytes into UART TX FIFO| str      : Input String<br/>data     : Value for format specifier<br/>                             |
-| 04 | int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);                                       | Initializes a hardware watchdog timer                                 | base_addr       : Base address of the watchdog module<br/>time_us         : Time in micro seconds<br/>timer_tick_us   : Number of ticks per micro second<br/>|
-| 05 | int pal_wd_timer_enable_ns(addr_t base_addr);                                                                               | Enables a hardware watchdog timer                                      | base_addr       : Base address of the watchdog module<br/>|
-| 06 | int pal_wd_timer_disable_ns(addr_t base_addr);                                                                              | Disables a hardware watchdog timer                                     | base_addr  : Base address of the watchdog module<br/>    |
-| 07 | int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size);                                                | Reads from the given non-volatile address.                                 | base    : Base address of nvmem<br/>offset  : Offset<br/>buffer  : Pointer to source address<br/>size    : Number of bytes<br/>                     |
-| 08 | int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size);                                               | Writes into given non-volatile address.                                | base    : Base address of nvmem<br/>offset  : Offset<br/>buffer  : Pointer to source address<br/>size    : Number of bytes<br/>                     |
-| 09 | int32_t pal_crypto_function(int type, va_list valist);                                                                     | Calls the requested Crypto function                       | type    : Function code<br/>valist  : variable argument list<br/>                             |
-| 10 | uint32_t pal_its_function(int type, va_list valist);                                                                     | Calls the requested Internal Trusted Storage  function                       | type    : Function code<br/>valist  : Variable argument list<br/>                             |
-| 11 | uint32_t pal_ps_function(int type, va_list valist);                                                                     | Calls the requested Protected Storage  function                       | type    : Function code<br/>valist  : Variable argument list<br/>                             |
-| 12 | int32_t pal_attestation_function(int type, va_list valist);                                                                | Calls the requested Initial Attestation  function                       | type    : Function code<br/>valist  : Variable argument list<br/>                             |
+| 01 | int pal_uart_init_ns(uint32_t uart_base_addr);                                                                              | Initializes the UART                                     | UART base address<br/>                                      |
+| 02 | int pal_print_ns(char *str, int32_t data);                                                                                 | Parses the input string and writes bytes into UART TX FIFO| str      : Input String<br/>data     : Value for format specifier<br/>                             |
+| 03 | int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);                                       | Initializes a hardware watchdog timer                                 | base_addr       : Base address of the watchdog module<br/>time_us         : Time in micro seconds<br/>timer_tick_us   : Number of ticks per micro second<br/>|
+| 04 | int pal_wd_timer_enable_ns(addr_t base_addr);                                                                               | Enables a hardware watchdog timer                                      | base_addr       : Base address of the watchdog module<br/>|
+| 05 | int pal_wd_timer_disable_ns(addr_t base_addr);                                                                              | Disables a hardware watchdog timer                                     | base_addr  : Base address of the watchdog module<br/>    |
+| 06 | int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size);                                                | Reads from the given non-volatile address.                                 | base    : Base address of nvmem<br/>offset  : Offset<br/>buffer  : Pointer to source address<br/>size    : Number of bytes<br/>                     |
+| 07 | int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size);                                               | Writes into given non-volatile address.                                | base    : Base address of nvmem<br/>offset  : Offset<br/>buffer  : Pointer to source address<br/>size    : Number of bytes<br/>                     |
+| 08 | int32_t pal_crypto_function(int type, va_list valist);                                                                     | Calls the requested Crypto function                       | type    : Function code<br/>valist  : variable argument list<br/>                             |
+| 09 | uint32_t pal_its_function(int type, va_list valist);                                                                     | Calls the requested Internal Trusted Storage  function                       | type    : Function code<br/>valist  : Variable argument list<br/>                             |
+| 10 | uint32_t pal_ps_function(int type, va_list valist);                                                                     | Calls the requested Protected Storage  function                       | type    : Function code<br/>valist  : Variable argument list<br/>                             |
+| 11 | int32_t pal_attestation_function(int type, va_list valist);                                                                | Calls the requested Initial Attestation  function                       | type    : Function code<br/>valist  : Variable argument list<br/>                             |
 
 ## License
 Arm PSA test suite is distributed under Apache v2.0 License.
diff --git a/api-tests/docs/porting_guide_ff.md b/api-tests/docs/porting_guide_ff.md
index adceb37..4e5f612 100644
--- a/api-tests/docs/porting_guide_ff.md
+++ b/api-tests/docs/porting_guide_ff.md
@@ -33,30 +33,24 @@
 
 ### Adding a new target
 
-  1. Create a new directory in **platform/targets/<platform_name>**. For reference, see the existing platform tgt_ff_mbedos_fvp_mps2_m4 directory.
-  2. Execute `cp -rf platform/targets/tgt_ff_mbedos_fvp_mps2_m4/ platform/targets/<platform_name>/`.
+  1. Create a new directory in **platform/targets/<platform_name>**. For reference, see the existing platform tgt_ff_tfm_an521 directory.
+  2. Execute `cp -rf platform/targets/tgt_ff_tfm_an521/ platform/targets/<platform_name>/`.
   3. Update **platform/targets/<platform_name>/target.cfg** with your target platform details. Refer to **val/common/val_target.h** for structure details.
   4. Update the platform information available in manifest files located in  **platform/targets/<platform_name>/manifests/** directory with your platform information. The platform details must match the device details provided in the target.cfg file.
-  5. Update **platform/targets/<platform_name>/Makefile** appropriately to select the correct instances of PAL files for compilation. To compile IPC tests, you must set PSA_IPC_IMPLEMENTED to 1 and the remaining Developer APIs related variables to 0. This selects the Secure PAL instances for the driver services and eliminates dev_apis dependency for IPC tests.
-  6. Refer to the **List of PAL APIs** section to view the list of PAL APIs that must be ported for your target platform. These API definitions are available in **nspe/<suite_name>/pal_\*\_intf.c** and **spe/pal_\*\_intf.c** files. These APIs are written for **tgt_ff_mbedos_fvp_mps2_m4** platform. You can reuse the code if it works for your platform. Otherwise, you must port them for your platform-specific peripherals.
+  5. Update **platform/targets/<platform_name>/target.cmake** appropriately to select the correct instances of PAL files for compilation.
+  6. Refer to the **List of PAL APIs** section to view the list of PAL APIs that must be ported for your target platform. These API definitions are available in **nspe/<suite_name>/pal_\*\_intf.c** and **spe/pal_\*\_intf.c** files. These APIs are written for **tgt_ff_tfm_an521** platform. You can reuse the code if it works for your platform. Otherwise, you must port them for your platform-specific peripherals.
 
 **Note**:
-- The platform makefile is invoked as part of test suite build tool (**./setup.sh**) step and it creates **<build_dir>/BUILD/platform/pal_nspe.a** archive for NPSE files and respective object for SPE files at **<build_dir>/BUILD/platform/spe/\*\_driver_sp.o**. These SPE objects are used by **spbuild.mk** to create the  appropriate SPE partition archive file.
-- The test suite requires access to the peripherals mentioned below. When PSA_IPC_IMPLEMENTED is set to 1, driver functionalities are implemented as RoT-services in driver partition. Other Secure partitions and Non-secure code calls to these RoT-services to get appropriate driver services.
+- The test suite requires access to the peripherals mentioned below. For IPC suite, driver functionalities are implemented as RoT-services in driver partition. Other Secure partitions and Non-secure code calls to these RoT-services to get appropriate driver services.
   - One UART to print NSPE or SPE messages and to cover secure partition interrupt handling scenarios
   - One Watchdog timer to help recover from any fatal error conditions
   - Non-volatile memory support to preserve test status over watchdog timer reset
 
+
 ## List of PAL APIs
 
 Since the test suite is agnostic to various system targets, you must port the following PAL NSPE APIs before building the tests. Implement these functions for your target platform. <br />
 
-The following is the list of PAL APIs used in NSPE: <br />
-
-| No | Prototype                                                                                                                   | Description                                                            | Parameters                                               |
-|----|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|----------------------------------------------------------|
-| 01 | int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len);                                                                 | Reads peripherals using SPI commands                 | addr : Address of the peripheral<br/>data : Read buffer<br/>len  : Length of the read buffer in bytes<br/>                    |
-
 The following is the list of PAL APIs used in SPE: <br />
 
 | No | Prototype                                                                         | Description                                                                       | Parameters                                               |
diff --git a/api-tests/docs/sw_requirements.md b/api-tests/docs/sw_requirements.md
index 7a74725..68fef75 100644
--- a/api-tests/docs/sw_requirements.md
+++ b/api-tests/docs/sw_requirements.md
@@ -3,9 +3,10 @@
 
 Before starting the test suite build, ensure that the following requirements are met: <br />
 
-- Host Operating System     : Ubuntu 16.04
-- Scripting tools           : Perl 5.12.3, Python 3.1.7
+- Host Operating System     : Ubuntu 16.04, Windows 10
+- Scripting tools           : Python 3.1.7
 - Compiler toolchain        : GNU Arm Embedded Toolchain 6.3.1, Arm Compiler v6.7
+- Build tools               : CMake 3.10
 
 **Note**: To compile the test suite code, at least one of the above supported compiler toolchains
         must be available in the build environment.
diff --git a/api-tests/ff/README.md b/api-tests/ff/README.md
index 8c82086..f3e46b4 100644
--- a/api-tests/ff/README.md
+++ b/api-tests/ff/README.md
@@ -49,39 +49,43 @@
 
 3. Compile the tests as shown below. <br />
 ```
-   ./tools/scripts/setup.sh --target <platform_name> --cpu_arch <cpu_architecture_version> --suite <suite_name>  --build <build_dir> --include <include_path>  --archive_tests
+    cd api-tests
+    mkdir <build_dir>
+    cd <build_dir>
+    cmake ../ -G"<generator-name> -DTARGET=<platform_name> -DCPU_ARCH=<cpu_architecture_version> -DSUITE=<suite_name> -DPSA_INCLUDE_PATHS="<include_path1>;<include_path2>;...;<include_pathn>"
+    cmake --build .
 ```
 <br />  where:
 
+-   <generator-name> "Unix Makefiles" to generate Makefiles for Linux and Cygwin <br />
+                     "MinGW Makefiles" to generate Makefiles for cmd.exe on Windows  <br />
 -   <platform_name> is the same as the name of the target specific directory created in the **platform/targets/** directory.  <br />
 -   <cpu_architecture_version> is the Arm Architecture version name for which the tests should be compiled. For example, Armv7M, Armv8M-Baseline and Armv8M-Mainline Architecture.  <br />
 -   <suite_name> is the suite name which is the same as the suite name available in **ff/** directory. <br >
--   <build_dir> is a directory to store the build output files.  <br />
--   <include_path> is an additional directory to be included into the compiler search path. <br />
-Note: To compile IPC tests, the include path must point to the path where **psa/client.h**, **psa/service.h**,  **psa/lifecycle.h** and test partition manifest output files(**psa_manifest/sid.h**, **psa_manifest/pid.h** and **psa_manifest/<manifestfilename>.h**) are located in your build system.<br />
--  Use **--archive_tests** option to create a combined test archive(test_combine.a) file by combining the available test objects files. Not using this option will create a combined test binary(test_elf_combine.bin) by combining the available test ELFs.
+-   <include_path1>;<include_path2>;...;<include_pathn> is an additional directory to be included into the compiler search path. To compile IPC tests, the include path must point to the path where **psa/client.h**, **psa/service.h**,  **psa/lifecycle.h** and test partition manifest output files(**psa_manifest/sid.h**, **psa_manifest/pid.h** and **psa_manifest/<manifestfilename>.h**) are located in your build system.<br />
 
-For more information about options, refer to **./tools/scripts/setup.sh --help**.
-
-To compile IPC tests for **tgt_ff_mbedos_fvp_mps2_m4** platform, execute the following commands:
+To compile IPC tests for **tgt_ff_tfm_an521** platform, execute the following commands:
 ```
-cd api-tests
-./tools/scripts/setup.sh --target tgt_ff_mbedos_fvp_mps2_m4 --cpu_arch armv7m --suite ipc --build BUILD_IPC --include <include_path1> --include <include_path2> --archive_tests
+    cd api-tests
+    mkdir BUILD
+    cd  BUILD
+    cmake ../ -G"Unix Makefiles" -DTARGET=tgt_ff_tfm_an521 -DCPU_ARCH=armv8m_ml -DSUITE=IPC -DPSA_INCLUDE_PATHS="<include_path1>;<include_path2>;...;<include_pathn>"
+    cmake --build .
 ```
-**Note**: The default compilation flow includes the functional API tests to build the test suite. It does not include panic tests that check for the API's PROGRAMMER ERROR conditions as defined in the PSA-FF specification. You can include the panic tests for building the test suite just by passing **--include_panic_tests** option to script.
+**Note**: The default compilation flow includes the functional API tests to build the test suite. It does not include panic tests that check for the API's PROGRAMMER ERROR conditions as defined in the PSA-FF specification. You can include the panic tests for building the test suite just by passing **-DINCLUDE_PANIC_TESTS=1** to CMake.
 
 ### Build output
 The test suite build generates the following binaries:<br />
 
 NSPE libraries:<br />
-1. **<build_dir>/BUILD/val/val_nspe.a**
-2. **<build_dir>/BUILD/platform/pal_nspe.a**
-3. **<build_dir>/BUILD/ff/<suite_name>/test_combine.a**
+1. **<build_dir>/val/val_nspe.a**
+2. **<build_dir>/platform/pal_nspe.a**
+3. **<build_dir>/ff/<suite_name>/test_combine.a**
 
 SPE libraries explicitly for IPC test suite:<br />
-1. **<build_dir>/BUILD/partition/driver_partition.a**
-2. **<build_dir>/BUILD/partition/client_partition.a**
-3. **<build_dir>/BUILD/partition/server_partition.a**
+1. **<build_dir>/partition/driver_partition.a**
+2. **<build_dir>/partition/client_partition.a**
+3. **<build_dir>/partition/server_partition.a**
 
 ### Integrating the libraries into your target platform
 
diff --git a/api-tests/ff/ipc/suite.cmake b/api-tests/ff/ipc/suite.cmake
new file mode 100644
index 0000000..aaaa0f2
--- /dev/null
+++ b/api-tests/ff/ipc/suite.cmake
@@ -0,0 +1,68 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+foreach(test ${PSA_TEST_LIST})
+	include(${PSA_SUITE_DIR}/${test}/test.cmake)
+	foreach(source_file ${CC_SOURCE})
+		list(APPEND SUITE_CC_SOURCE
+			${PSA_SUITE_DIR}/${test}/${source_file}
+		)
+	endforeach()
+	foreach(asm_file ${AS_SOURCE})
+		list(APPEND SUITE_AS_SOURCE
+			${PSA_SUITE_DIR}/${test}/${asm_file}
+		)
+	endforeach()
+	foreach(source_file ${CC_SOURCE_SPE})
+		list(APPEND SUITE_CC_SOURCE_SPE
+			${PSA_SUITE_DIR}/${test}/${source_file}
+		)
+	endforeach()
+	foreach(asm_file ${AS_SOURCE_SPE})
+		list(APPEND SUITE_AS_SOURCE_SPE
+			${PSA_SUITE_DIR}/${test}/${asm_file}
+		)
+	endforeach()
+	unset(CC_SOURCE)
+	unset(AS_SOURCE)
+	unset(CC_SOURCE_SPE)
+	unset(AS_SOURCE_SPE)
+endforeach()
+
+add_library(${PSA_TARGET_TEST_COMBINE_LIB} STATIC ${SUITE_CC_SOURCE} ${SUITE_AS_SOURCE})
+target_compile_definitions(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE CC_OPTIONS)
+target_compile_definitions(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE AS_OPTIONS)
+target_compile_definitions(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE NONSECURE_TEST_BUILD)
+
+# Test related Include directories
+foreach(test ${PSA_TEST_LIST})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${PSA_SUITE_DIR}/${test})
+endforeach()
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/nspe
+	${PSA_ROOT_DIR}/val/spe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	 ${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+)
diff --git a/api-tests/ff/ipc/test_i001/source.mk b/api-tests/ff/ipc/test_i001/source.mk
deleted file mode 100644
index 3231434..0000000
--- a/api-tests/ff/ipc/test_i001/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i001.c test_i001.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i001.c test_supp_i001.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i001/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i001/test.cmake
index 5bb5a69..698a8ff 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i001/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i001.c
+	test_i001.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i001.c
+	test_supp_i001.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE  )
diff --git a/api-tests/ff/ipc/test_i002/source.mk b/api-tests/ff/ipc/test_i002/source.mk
deleted file mode 100644
index 60cbe40..0000000
--- a/api-tests/ff/ipc/test_i002/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i002.c test_i002.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i002.c test_supp_i002.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i002/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i002/test.cmake
index 5bb5a69..33679bd 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i002/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i002.c
+	test_i002.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i002.c
+	test_supp_i002.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i003/source.mk b/api-tests/ff/ipc/test_i003/source.mk
deleted file mode 100644
index 37f7299..0000000
--- a/api-tests/ff/ipc/test_i003/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i003.c test_i003.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i003.c test_supp_i003.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i003/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i003/test.cmake
index 5bb5a69..aaa5d98 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i003/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i003.c
+	test_i003.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i003.c
+	test_supp_i003.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i004/source.mk b/api-tests/ff/ipc/test_i004/source.mk
deleted file mode 100644
index 2a23e73..0000000
--- a/api-tests/ff/ipc/test_i004/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i004.c test_i004.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i004.c test_supp_i004.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i004/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i004/test.cmake
index 5bb5a69..4ec996e 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i004/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i004.c
+	test_i004.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i004.c
+	test_supp_i004.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i005/source.mk b/api-tests/ff/ipc/test_i005/source.mk
deleted file mode 100644
index b139dbc..0000000
--- a/api-tests/ff/ipc/test_i005/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i005.c test_i005.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i005.c test_supp_i005.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i005/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i005/test.cmake
index 5bb5a69..68c51c5 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i005/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i005.c
+	test_i005.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i005.c
+	test_supp_i005.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i006/source.mk b/api-tests/ff/ipc/test_i006/source.mk
deleted file mode 100644
index f889299..0000000
--- a/api-tests/ff/ipc/test_i006/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i006.c test_i006.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i006.c test_supp_i006.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i006/test.cmake
similarity index 70%
rename from api-tests/ff/ipc/test_i047/source.mk
rename to api-tests/ff/ipc/test_i006/test.cmake
index 5bb5a69..96c034c 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i006/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i006.c
+	test_i006.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i006.c
+	test_supp_i006.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i007/source.mk b/api-tests/ff/ipc/test_i007/source.mk
deleted file mode 100644
index 10aebef..0000000
--- a/api-tests/ff/ipc/test_i007/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i007.c test_i007.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i007.c test_supp_i007.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i007/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i007/test.cmake
index 5bb5a69..f000d65 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i007/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i007.c
+	test_i007.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i007.c
+	test_supp_i007.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i008/source.mk b/api-tests/ff/ipc/test_i008/source.mk
deleted file mode 100644
index 383855d..0000000
--- a/api-tests/ff/ipc/test_i008/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i008.c test_i008.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i008.c test_supp_i008.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i008/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i008/test.cmake
index 5bb5a69..7ed1bf5 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i008/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i008.c
+	test_i008.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i008.c
+	test_supp_i008.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i009/source.mk b/api-tests/ff/ipc/test_i009/source.mk
deleted file mode 100644
index a4f3ef0..0000000
--- a/api-tests/ff/ipc/test_i009/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i009.c test_i009.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i009.c test_supp_i009.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i009/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i009/test.cmake
index 5bb5a69..bad159d 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i009/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i009.c
+	test_i009.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i009.c
+	test_supp_i009.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i010/source.mk b/api-tests/ff/ipc/test_i010/source.mk
deleted file mode 100644
index 02e1d3b..0000000
--- a/api-tests/ff/ipc/test_i010/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i010.c test_i010.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i010.c test_supp_i010.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i010/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i010/test.cmake
index 5bb5a69..6e57eba 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i010/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i010.c
+	test_i010.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i010.c
+	test_supp_i010.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i011/source.mk b/api-tests/ff/ipc/test_i011/source.mk
deleted file mode 100644
index 0e227a8..0000000
--- a/api-tests/ff/ipc/test_i011/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i011.c test_i011.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i011.c test_supp_i011.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i011/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i011/test.cmake
index 5bb5a69..338cce2 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i011/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i011.c
+	test_i011.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i011.c
+	test_supp_i011.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i012/source.mk b/api-tests/ff/ipc/test_i012/source.mk
deleted file mode 100644
index 49cb593..0000000
--- a/api-tests/ff/ipc/test_i012/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i012.c test_i012.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i012.c test_supp_i012.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i012/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i012/test.cmake
index 5bb5a69..299f8ee 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i012/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i012.c
+	test_i012.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i012.c
+	test_supp_i012.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i013/source.mk b/api-tests/ff/ipc/test_i013/source.mk
deleted file mode 100644
index 4a5dde5..0000000
--- a/api-tests/ff/ipc/test_i013/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i013.c test_i013.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i013.c test_supp_i013.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i013/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i013/test.cmake
index 5bb5a69..724efac 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i013/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i013.c
+	test_i013.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i013.c
+	test_supp_i013.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i014/source.mk b/api-tests/ff/ipc/test_i014/source.mk
deleted file mode 100644
index fb8fc6e..0000000
--- a/api-tests/ff/ipc/test_i014/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i014.c test_i014.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i014.c test_supp_i014.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i014/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i014/test.cmake
index 5bb5a69..aabe4e2 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i014/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i014.c
+	test_i014.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i014.c
+	test_supp_i014.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i015/source.mk b/api-tests/ff/ipc/test_i015/source.mk
deleted file mode 100644
index c55f830..0000000
--- a/api-tests/ff/ipc/test_i015/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i015.c test_i015.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i015.c test_supp_i015.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i015/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i015/test.cmake
index 5bb5a69..877f36b 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i015/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i015.c
+	test_i015.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i015.c
+	test_supp_i015.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i016/source.mk b/api-tests/ff/ipc/test_i016/source.mk
deleted file mode 100644
index d1d196f..0000000
--- a/api-tests/ff/ipc/test_i016/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i016.c test_i016.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i016.c test_supp_i016.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i016/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i016/test.cmake
index 5bb5a69..c4e90e4 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i016/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i016.c
+	test_i016.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i016.c
+	test_supp_i016.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i017/source.mk b/api-tests/ff/ipc/test_i017/source.mk
deleted file mode 100644
index 74458cc..0000000
--- a/api-tests/ff/ipc/test_i017/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i017.c test_i017.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i017.c test_supp_i017.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i017/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i017/test.cmake
index 5bb5a69..f8520cf 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i017/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i017.c
+	test_i017.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i017.c
+	test_supp_i017.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i018/source.mk b/api-tests/ff/ipc/test_i018/source.mk
deleted file mode 100644
index 51e7bec..0000000
--- a/api-tests/ff/ipc/test_i018/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i018.c test_i018.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i018.c test_supp_i018.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i018/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i018/test.cmake
index 5bb5a69..3e495dd 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i018/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i018.c
+	test_i018.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i018.c
+	test_supp_i018.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i019/source.mk b/api-tests/ff/ipc/test_i019/source.mk
deleted file mode 100644
index 483b29a..0000000
--- a/api-tests/ff/ipc/test_i019/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i019.c test_i019.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i019.c test_supp_i019.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i019/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i019/test.cmake
index 5bb5a69..3a3305f 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i019/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i019.c
+	test_i019.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i019.c
+	test_supp_i019.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i020/source.mk b/api-tests/ff/ipc/test_i020/source.mk
deleted file mode 100644
index 0d7c05e..0000000
--- a/api-tests/ff/ipc/test_i020/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i020.c test_i020.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i020.c test_supp_i020.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i020/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i020/test.cmake
index 5bb5a69..530cae1 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i020/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i020.c
+	test_i020.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i020.c
+	test_supp_i020.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i021/source.mk b/api-tests/ff/ipc/test_i021/source.mk
deleted file mode 100644
index 2cf268d..0000000
--- a/api-tests/ff/ipc/test_i021/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i021.c test_i021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i021.c test_supp_i021.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i021/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i021/test.cmake
index 5bb5a69..d9ecfed 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i021/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i021.c
+	test_i021.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i021.c
+	test_supp_i021.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i022/source.mk b/api-tests/ff/ipc/test_i022/source.mk
deleted file mode 100644
index 0afb1b9..0000000
--- a/api-tests/ff/ipc/test_i022/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i022.c test_i022.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i022.c test_supp_i022.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i022/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i022/test.cmake
index 5bb5a69..915cddd 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i022/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i022.c
+	test_i022.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i022.c
+	test_supp_i022.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i023/source.mk b/api-tests/ff/ipc/test_i023/source.mk
deleted file mode 100644
index 516deb1..0000000
--- a/api-tests/ff/ipc/test_i023/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i023.c test_i023.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i023.c test_supp_i023.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i023/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i023/test.cmake
index 5bb5a69..176cfc8 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i023/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i023.c
+	test_i023.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i023.c
+	test_supp_i023.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i024/source.mk b/api-tests/ff/ipc/test_i024/source.mk
deleted file mode 100644
index 1213b26..0000000
--- a/api-tests/ff/ipc/test_i024/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i024.c test_i024.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i024.c test_supp_i024.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i024/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i024/test.cmake
index 5bb5a69..f0e0297 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i024/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i024.c
+	test_i024.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i024.c
+	test_supp_i024.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i025/source.mk b/api-tests/ff/ipc/test_i025/source.mk
deleted file mode 100644
index e4b6673..0000000
--- a/api-tests/ff/ipc/test_i025/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i025.c test_i025.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i025.c test_supp_i025.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i025/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i025/test.cmake
index 5bb5a69..e861a9a 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i025/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i025.c
+	test_i025.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i025.c
+	test_supp_i025.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i026/source.mk b/api-tests/ff/ipc/test_i026/source.mk
deleted file mode 100644
index b325585..0000000
--- a/api-tests/ff/ipc/test_i026/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i026.c test_i026.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i026.c test_supp_i026.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i026/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i026/test.cmake
index 5bb5a69..361dfbd 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i026/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i026.c
+	test_i026.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i026.c
+	test_supp_i026.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i027/source.mk b/api-tests/ff/ipc/test_i027/source.mk
deleted file mode 100644
index 7094e76..0000000
--- a/api-tests/ff/ipc/test_i027/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i027.c test_i027.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i027.c test_supp_i027.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i027/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i027/test.cmake
index 5bb5a69..27babcf 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i027/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i027.c
+	test_i027.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i027.c
+	test_supp_i027.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i028/source.mk b/api-tests/ff/ipc/test_i028/source.mk
deleted file mode 100644
index 4cfdd10..0000000
--- a/api-tests/ff/ipc/test_i028/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i028.c test_i028.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i028.c test_supp_i028.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i028/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i028/test.cmake
index 5bb5a69..189e407 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i028/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i028.c
+	test_i028.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i028.c
+	test_supp_i028.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i029/source.mk b/api-tests/ff/ipc/test_i029/source.mk
deleted file mode 100644
index 0d91668..0000000
--- a/api-tests/ff/ipc/test_i029/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i029.c test_i029.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i029.c test_supp_i029.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i029/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i029/test.cmake
index 5bb5a69..b083caa 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i029/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i029.c
+	test_i029.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i029.c
+	test_supp_i029.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i030/source.mk b/api-tests/ff/ipc/test_i030/source.mk
deleted file mode 100644
index 23d38ed..0000000
--- a/api-tests/ff/ipc/test_i030/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i030.c test_i030.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i030.c test_supp_i030.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i030/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i030/test.cmake
index 5bb5a69..877ec83 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i030/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i030.c
+	test_i030.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i030.c
+	test_supp_i030.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i031/source.mk b/api-tests/ff/ipc/test_i031/source.mk
deleted file mode 100644
index 415a8fc..0000000
--- a/api-tests/ff/ipc/test_i031/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i031.c test_i031.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i031.c test_supp_i031.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i031/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i031/test.cmake
index 5bb5a69..a9bbd09 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i031/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i031.c
+	test_i031.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i031.c
+	test_supp_i031.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i032/source.mk b/api-tests/ff/ipc/test_i032/source.mk
deleted file mode 100644
index 0806e3a..0000000
--- a/api-tests/ff/ipc/test_i032/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i032.c test_i032.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i032.c test_supp_i032.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i032/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i032/test.cmake
index 5bb5a69..413d839 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i032/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i032.c
+	test_i032.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i032.c
+	test_supp_i032.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i033/source.mk b/api-tests/ff/ipc/test_i033/source.mk
deleted file mode 100644
index 350d245..0000000
--- a/api-tests/ff/ipc/test_i033/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i033.c test_i033.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i033.c test_supp_i033.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i033/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i033/test.cmake
index 5bb5a69..75a6dd6 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i033/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i033.c
+	test_i033.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i033.c
+	test_supp_i033.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i034/source.mk b/api-tests/ff/ipc/test_i034/source.mk
deleted file mode 100644
index 108a4dc..0000000
--- a/api-tests/ff/ipc/test_i034/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i034.c test_i034.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i034.c test_supp_i034.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i034/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i034/test.cmake
index 5bb5a69..87f1491 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i034/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i034.c
+	test_i034.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i034.c
+	test_supp_i034.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i035/source.mk b/api-tests/ff/ipc/test_i035/source.mk
deleted file mode 100644
index 68ca342..0000000
--- a/api-tests/ff/ipc/test_i035/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i035.c test_i035.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i035.c test_supp_i035.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i035/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i035/test.cmake
index 5bb5a69..571d48a 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i035/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i035.c
+	test_i035.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i035.c
+	test_supp_i035.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i036/source.mk b/api-tests/ff/ipc/test_i036/source.mk
deleted file mode 100644
index ed3dc57..0000000
--- a/api-tests/ff/ipc/test_i036/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i036.c test_i036.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i036.c test_supp_i036.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i036/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i036/test.cmake
index 5bb5a69..4d89727 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i036/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i036.c
+	test_i036.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i036.c
+	test_supp_i036.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i037/source.mk b/api-tests/ff/ipc/test_i037/source.mk
deleted file mode 100644
index cfcf6e4..0000000
--- a/api-tests/ff/ipc/test_i037/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i037.c test_i037.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i037.c test_supp_i037.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i037/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i037/test.cmake
index 5bb5a69..2e64af5 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i037/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i037.c
+	test_i037.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i037.c
+	test_supp_i037.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i038/source.mk b/api-tests/ff/ipc/test_i038/source.mk
deleted file mode 100644
index 0553d67..0000000
--- a/api-tests/ff/ipc/test_i038/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i038.c test_i038.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i038.c test_supp_i038.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i038/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i038/test.cmake
index 5bb5a69..b0d7a96 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i038/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i038.c
+	test_i038.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i038.c
+	test_supp_i038.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i039/source.mk b/api-tests/ff/ipc/test_i039/source.mk
deleted file mode 100644
index 0c2d68e..0000000
--- a/api-tests/ff/ipc/test_i039/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i039.c test_i039.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i039.c test_supp_i039.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i039/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i039/test.cmake
index 5bb5a69..616c732 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i039/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i039.c
+	test_i039.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i039.c
+	test_supp_i039.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i040/source.mk b/api-tests/ff/ipc/test_i040/source.mk
deleted file mode 100644
index ba62c46..0000000
--- a/api-tests/ff/ipc/test_i040/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i040.c test_i040.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i040.c test_supp_i040.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i040/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i040/test.cmake
index 5bb5a69..336af6f 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i040/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i040.c
+	test_i040.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i040.c
+	test_supp_i040.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i041/source.mk b/api-tests/ff/ipc/test_i041/source.mk
deleted file mode 100644
index 40028a7..0000000
--- a/api-tests/ff/ipc/test_i041/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i041.c test_i041.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i041.c test_supp_i041.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i041/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i041/test.cmake
index 5bb5a69..e501752 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i041/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i041.c
+	test_i041.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i041.c
+	test_supp_i041.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i042/source.mk b/api-tests/ff/ipc/test_i042/source.mk
deleted file mode 100644
index a5f0f2e..0000000
--- a/api-tests/ff/ipc/test_i042/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i042.c test_i042.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i042.c test_supp_i042.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i042/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i042/test.cmake
index 5bb5a69..5f01de2 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i042/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i042.c
+	test_i042.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i042.c
+	test_supp_i042.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i043/source.mk b/api-tests/ff/ipc/test_i043/source.mk
deleted file mode 100644
index c7f19e5..0000000
--- a/api-tests/ff/ipc/test_i043/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i043.c test_i043.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i043.c test_supp_i043.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i043/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i043/test.cmake
index 5bb5a69..5dfeb41 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i043/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i043.c
+	test_i043.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i043.c
+	test_supp_i043.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i044/source.mk b/api-tests/ff/ipc/test_i044/source.mk
deleted file mode 100644
index 73fb620..0000000
--- a/api-tests/ff/ipc/test_i044/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i044.c test_i044.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i044.c test_supp_i044.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i044/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i044/test.cmake
index 5bb5a69..f7486d7 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i044/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i044.c
+	test_i044.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i044.c
+	test_supp_i044.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i045/source.mk b/api-tests/ff/ipc/test_i045/source.mk
deleted file mode 100644
index 602e53e..0000000
--- a/api-tests/ff/ipc/test_i045/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i045.c test_i045.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i045.c test_supp_i045.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i045/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i045/test.cmake
index 5bb5a69..c7fd5ba 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i045/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i045.c
+	test_i045.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i045.c
+	test_supp_i045.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i046/source.mk b/api-tests/ff/ipc/test_i046/source.mk
deleted file mode 100644
index 257c177..0000000
--- a/api-tests/ff/ipc/test_i046/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i046.c test_i046.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i046.c test_supp_i046.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i046/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i046/test.cmake
index 5bb5a69..c91735f 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i046/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i046.c
+	test_i046.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i046.c
+	test_supp_i046.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i047/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i047/test.cmake
index 5bb5a69..72be9a4 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i047/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i047.c
+	test_i047.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i047.c
+	test_supp_i047.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i048/source.mk b/api-tests/ff/ipc/test_i048/source.mk
deleted file mode 100644
index 0c8e3a5..0000000
--- a/api-tests/ff/ipc/test_i048/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i048.c test_i048.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i048.c test_supp_i048.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i048/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i048/test.cmake
index 5bb5a69..a7f11bd 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i048/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i048.c
+	test_i048.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i048.c
+	test_supp_i048.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i049/source.mk b/api-tests/ff/ipc/test_i049/source.mk
deleted file mode 100644
index 9e3d969..0000000
--- a/api-tests/ff/ipc/test_i049/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i049.c test_i049.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i049.c test_supp_i049.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i049/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i049/test.cmake
index 5bb5a69..de1b322 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i049/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i049.c
+	test_i049.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i049.c
+	test_supp_i049.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i050/source.mk b/api-tests/ff/ipc/test_i050/source.mk
deleted file mode 100644
index de52ee3..0000000
--- a/api-tests/ff/ipc/test_i050/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i050.c test_i050.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i050.c test_supp_i050.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i050/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i050/test.cmake
index 5bb5a69..b70d3ea 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i050/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i050.c
+	test_i050.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i050.c
+	test_supp_i050.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i051/source.mk b/api-tests/ff/ipc/test_i051/source.mk
deleted file mode 100644
index 5ea476c..0000000
--- a/api-tests/ff/ipc/test_i051/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i051.c test_i051.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i051.c test_supp_i051.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i051/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i051/test.cmake
index 5bb5a69..ac938a9 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i051/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i051.c
+	test_i051.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i051.c
+	test_supp_i051.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i052/source.mk b/api-tests/ff/ipc/test_i052/source.mk
deleted file mode 100644
index e1aaf82..0000000
--- a/api-tests/ff/ipc/test_i052/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i052.c test_i052.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i052.c test_supp_i052.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i052/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i052/test.cmake
index 5bb5a69..c5524a2 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i052/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i052.c
+	test_i052.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i052.c
+	test_supp_i052.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i053/source.mk b/api-tests/ff/ipc/test_i053/source.mk
deleted file mode 100644
index 07e6f54..0000000
--- a/api-tests/ff/ipc/test_i053/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i053.c test_i053.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i053.c test_supp_i053.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i053/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i053/test.cmake
index 5bb5a69..a9be727 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i053/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i053.c
+	test_i053.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i053.c
+	test_supp_i053.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i054/source.mk b/api-tests/ff/ipc/test_i054/source.mk
deleted file mode 100644
index 8aae70f..0000000
--- a/api-tests/ff/ipc/test_i054/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i054.c test_i054.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i054.c test_supp_i054.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i054/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i054/test.cmake
index 5bb5a69..49495a6 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i054/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i054.c
+	test_i054.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i054.c
+	test_supp_i054.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i055/source.mk b/api-tests/ff/ipc/test_i055/source.mk
deleted file mode 100644
index 80a0263..0000000
--- a/api-tests/ff/ipc/test_i055/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i055.c test_i055.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i055.c test_supp_i055.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i055/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i055/test.cmake
index 5bb5a69..dfe9de8 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i055/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i055.c
+	test_i055.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i055.c
+	test_supp_i055.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i056/source.mk b/api-tests/ff/ipc/test_i056/source.mk
deleted file mode 100644
index 108c471..0000000
--- a/api-tests/ff/ipc/test_i056/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i056.c test_i056.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i056.c test_supp_i056.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i056/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i056/test.cmake
index 5bb5a69..553070a 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i056/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i056.c
+	test_i056.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i056.c
+	test_supp_i056.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i057/source.mk b/api-tests/ff/ipc/test_i057/source.mk
deleted file mode 100644
index 25fbaa9..0000000
--- a/api-tests/ff/ipc/test_i057/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i057.c test_i057.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i057.c test_supp_i057.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i057/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i057/test.cmake
index 5bb5a69..97e5bef 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i057/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i057.c
+	test_i057.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i057.c
+	test_supp_i057.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i058/source.mk b/api-tests/ff/ipc/test_i058/source.mk
deleted file mode 100644
index e4adfa9..0000000
--- a/api-tests/ff/ipc/test_i058/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i058.c test_i058.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i058.c test_supp_i058.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i058/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i058/test.cmake
index 5bb5a69..19a8f18 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i058/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i058.c
+	test_i058.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i058.c
+	test_supp_i058.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i059/source.mk b/api-tests/ff/ipc/test_i059/source.mk
deleted file mode 100644
index b72db0b..0000000
--- a/api-tests/ff/ipc/test_i059/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i059.c test_i059.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i059.c test_supp_i059.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i059/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i059/test.cmake
index 5bb5a69..92c44e5 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i059/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i059.c
+	test_i059.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i059.c
+	test_supp_i059.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i060/source.mk b/api-tests/ff/ipc/test_i060/source.mk
deleted file mode 100644
index 5f4d02d..0000000
--- a/api-tests/ff/ipc/test_i060/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i060.c test_i060.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i060.c test_supp_i060.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i060/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i060/test.cmake
index 5bb5a69..aa6cdd5 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i060/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i060.c
+	test_i060.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i060.c
+	test_supp_i060.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i061/source.mk b/api-tests/ff/ipc/test_i061/source.mk
deleted file mode 100644
index dc4d913..0000000
--- a/api-tests/ff/ipc/test_i061/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i061.c test_i061.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i061.c test_supp_i061.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i061/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i061/test.cmake
index 5bb5a69..23f79e3 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i061/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i061.c
+	test_i061.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i061.c
+	test_supp_i061.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i062/source.mk b/api-tests/ff/ipc/test_i062/source.mk
deleted file mode 100644
index b14d3c3..0000000
--- a/api-tests/ff/ipc/test_i062/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i062.c test_i062.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i062.c test_supp_i062.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i062/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i062/test.cmake
index 5bb5a69..b0ae70a 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i062/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i062.c
+	test_i062.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i062.c
+	test_supp_i062.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i063/source.mk b/api-tests/ff/ipc/test_i063/source.mk
deleted file mode 100644
index b23ec71..0000000
--- a/api-tests/ff/ipc/test_i063/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i063.c test_i063.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i063.c test_supp_i063.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i063/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i063/test.cmake
index 5bb5a69..bdbf6e8 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i063/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i063.c
+	test_i063.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i063.c
+	test_supp_i063.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i064/source.mk b/api-tests/ff/ipc/test_i064/source.mk
deleted file mode 100644
index 1796e27..0000000
--- a/api-tests/ff/ipc/test_i064/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i064.c test_i064.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i064.c test_supp_i064.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i064/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i064/test.cmake
index 5bb5a69..4e2a227 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i064/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i064.c
+	test_i064.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i064.c
+	test_supp_i064.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i065/source.mk b/api-tests/ff/ipc/test_i065/source.mk
deleted file mode 100644
index 9f62283..0000000
--- a/api-tests/ff/ipc/test_i065/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i065.c test_i065.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i065.c test_supp_i065.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i065/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i065/test.cmake
index 5bb5a69..567b71f 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i065/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i065.c
+	test_i065.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i065.c
+	test_supp_i065.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i066/source.mk b/api-tests/ff/ipc/test_i066/source.mk
deleted file mode 100644
index 604c13c..0000000
--- a/api-tests/ff/ipc/test_i066/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i066.c test_i066.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i066.c test_supp_i066.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i066/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i066/test.cmake
index 5bb5a69..5de4965 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i066/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i066.c
+	test_i066.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i066.c
+	test_supp_i066.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i067/source.mk b/api-tests/ff/ipc/test_i067/source.mk
deleted file mode 100644
index cce0b53..0000000
--- a/api-tests/ff/ipc/test_i067/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i067.c test_i067.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i067.c test_supp_i067.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i067/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i067/test.cmake
index 5bb5a69..66fabc8 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i067/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i067.c
+	test_i067.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i067.c
+	test_supp_i067.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i067/test_i067.c b/api-tests/ff/ipc/test_i067/test_i067.c
index 6e6f27f..f1f2228 100644
--- a/api-tests/ff/ipc/test_i067/test_i067.c
+++ b/api-tests/ff/ipc/test_i067/test_i067.c
@@ -19,13 +19,13 @@
 #include "val_interfaces.h"
 #include "val_target.h"
 #else
-#include "val/common/val_client_defs.h"
-#include "val/spe/val_partition_common.h"
+#include "val_client_defs.h"
+#include "val_service_defs.h"
 #endif
 
 #include "test_i067.h"
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 void *malloc(size_t size);
 void free(void *ptr);
 #endif
@@ -39,7 +39,7 @@
 int32_t client_test_dynamic_mem_alloc_fn(security_t caller)
 {
   /* Check heap memory support available to secure partition */
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
   uint8_t              *buffer;
 
   val->print(PRINT_TEST, "[Check 1] Test dynamic memory allocation\n", 0);
diff --git a/api-tests/ff/ipc/test_i067/test_supp_i067.c b/api-tests/ff/ipc/test_i067/test_supp_i067.c
index b6d0779..aa5a8bf 100644
--- a/api-tests/ff/ipc/test_i067/test_supp_i067.c
+++ b/api-tests/ff/ipc/test_i067/test_supp_i067.c
@@ -25,7 +25,7 @@
 
 #define SERVER_HEAP_SIZE 0x100 /* The size is same as heap_size field in manifest */
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 void *malloc(size_t size);
 void free(void *ptr);
 void *realloc(void *ptr, size_t size);
@@ -42,7 +42,7 @@
 int32_t server_test_dynamic_mem_alloc_fn(void)
 {
    /* Perform checks only if heap memory support available to secure partition */
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
    uint8_t              *buffer, *buffer1;
    uint8_t              cmpbuff[SERVER_HEAP_SIZE] = {0};
 
diff --git a/api-tests/ff/ipc/test_i068/source.mk b/api-tests/ff/ipc/test_i068/source.mk
deleted file mode 100644
index e85e11e..0000000
--- a/api-tests/ff/ipc/test_i068/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i068.c test_i068.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i068.c test_supp_i068.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i068/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i068/test.cmake
index 5bb5a69..cefebf1 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i068/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i068.c
+	test_i068.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i068.c
+	test_supp_i068.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i068/test_i068.c b/api-tests/ff/ipc/test_i068/test_i068.c
index 0ab92dc..18b3c87 100644
--- a/api-tests/ff/ipc/test_i068/test_i068.c
+++ b/api-tests/ff/ipc/test_i068/test_i068.c
@@ -19,8 +19,8 @@
 #include "val_interfaces.h"
 #include "val_target.h"
 #else
-#include "val/common/val_client_defs.h"
-#include "val/spe/val_partition_common.h"
+#include "val_client_defs.h"
+#include "val_service_defs.h"
 #endif
 
 #include "test_i068.h"
diff --git a/api-tests/ff/ipc/test_i069/source.mk b/api-tests/ff/ipc/test_i069/source.mk
deleted file mode 100644
index 9bedeb2..0000000
--- a/api-tests/ff/ipc/test_i069/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i069.c test_i069.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i069.c test_supp_i069.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i069/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i069/test.cmake
index 5bb5a69..99eb821 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i069/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i069.c
+	test_i069.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i069.c
+	test_supp_i069.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i069/test_i069.c b/api-tests/ff/ipc/test_i069/test_i069.c
index 53afce3..1955b9d 100644
--- a/api-tests/ff/ipc/test_i069/test_i069.c
+++ b/api-tests/ff/ipc/test_i069/test_i069.c
@@ -19,8 +19,8 @@
 #include "val_interfaces.h"
 #include "val_target.h"
 #else
-#include "val/common/val_client_defs.h"
-#include "val/spe/val_partition_common.h"
+#include "val_client_defs.h"
+#include "val_service_defs.h"
 #endif
 
 #include "test_i069.h"
diff --git a/api-tests/ff/ipc/test_i070/source.mk b/api-tests/ff/ipc/test_i070/source.mk
deleted file mode 100644
index 9197155..0000000
--- a/api-tests/ff/ipc/test_i070/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i070.c test_i070.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i070.c test_supp_i070.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i070/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i070/test.cmake
index 5bb5a69..82d9a91 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i070/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i070.c
+	test_i070.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i070.c
+	test_supp_i070.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i070/test_i070.c b/api-tests/ff/ipc/test_i070/test_i070.c
index 45c5dc9..c9d5ac1 100644
--- a/api-tests/ff/ipc/test_i070/test_i070.c
+++ b/api-tests/ff/ipc/test_i070/test_i070.c
@@ -19,8 +19,8 @@
 #include "val_interfaces.h"
 #include "val_target.h"
 #else
-#include "val/common/val_client_defs.h"
-#include "val/spe/val_partition_common.h"
+#include "val_client_defs.h"
+#include "val_service_defs.h"
 #endif
 
 #include "test_i070.h"
diff --git a/api-tests/ff/ipc/test_i071/source.mk b/api-tests/ff/ipc/test_i071/source.mk
deleted file mode 100644
index 2eac129..0000000
--- a/api-tests/ff/ipc/test_i071/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i071.c test_i071.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i071.c test_supp_i071.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i071/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i071/test.cmake
index 5bb5a69..a39ec15 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i071/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i071.c
+	test_i071.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i071.c
+	test_supp_i071.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i071/test_i071.c b/api-tests/ff/ipc/test_i071/test_i071.c
index 1c56a02..3e7774d 100644
--- a/api-tests/ff/ipc/test_i071/test_i071.c
+++ b/api-tests/ff/ipc/test_i071/test_i071.c
@@ -19,8 +19,8 @@
 #include "val_interfaces.h"
 #include "val_target.h"
 #else
-#include "val/common/val_client_defs.h"
-#include "val/spe/val_partition_common.h"
+#include "val_client_defs.h"
+#include "val_service_defs.h"
 #endif
 
 #include "test_i071.h"
diff --git a/api-tests/ff/ipc/test_i072/source.mk b/api-tests/ff/ipc/test_i072/source.mk
deleted file mode 100644
index cdccca5..0000000
--- a/api-tests/ff/ipc/test_i072/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i072.c test_i072.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i072.c test_supp_i072.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i072/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i072/test.cmake
index 5bb5a69..c5fb69e 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i072/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i072.c
+	test_i072.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i072.c
+	test_supp_i072.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i073/source.mk b/api-tests/ff/ipc/test_i073/source.mk
deleted file mode 100644
index d52216e..0000000
--- a/api-tests/ff/ipc/test_i073/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i073.c test_i073.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i073.c test_supp_i073.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i073/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i073/test.cmake
index 5bb5a69..8f3321c 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i073/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i073.c
+	test_i073.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i073.c
+	test_supp_i073.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i074/source.mk b/api-tests/ff/ipc/test_i074/source.mk
deleted file mode 100644
index df3f9bd..0000000
--- a/api-tests/ff/ipc/test_i074/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i074.c test_i074.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i074.c test_supp_i074.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i074/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i074/test.cmake
index 5bb5a69..ce162f8 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i074/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i074.c
+	test_i074.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i074.c
+	test_supp_i074.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i074/test_i074.c b/api-tests/ff/ipc/test_i074/test_i074.c
index 8c58ca9..bc89152 100644
--- a/api-tests/ff/ipc/test_i074/test_i074.c
+++ b/api-tests/ff/ipc/test_i074/test_i074.c
@@ -36,7 +36,7 @@
     NULL,
 };
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 static int32_t get_secure_partition_address(addr_t *addr)
 {
    psa_handle_t            handle = 0;
diff --git a/api-tests/ff/ipc/test_i074/test_supp_i074.c b/api-tests/ff/ipc/test_i074/test_supp_i074.c
index cbc790e..ff79d34 100644
--- a/api-tests/ff/ipc/test_i074/test_supp_i074.c
+++ b/api-tests/ff/ipc/test_i074/test_supp_i074.c
@@ -26,7 +26,7 @@
 int32_t server_test_nspe_read_app_rot_heap(void);
 int32_t server_test_nspe_write_app_rot_heap(void);
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 void *malloc(size_t size);
 void free(void *ptr);
 #endif
@@ -41,7 +41,7 @@
     NULL,
 };
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 static int32_t send_secure_partition_address(uint8_t *heap)
 {
     int32_t         status = VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i075/source.mk b/api-tests/ff/ipc/test_i075/source.mk
deleted file mode 100644
index 55b3a76..0000000
--- a/api-tests/ff/ipc/test_i075/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i075.c test_i075.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i075.c test_supp_i075.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i075/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i075/test.cmake
index 5bb5a69..a7583cf 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i075/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i075.c
+	test_i075.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i075.c
+	test_supp_i075.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i076/source.mk b/api-tests/ff/ipc/test_i076/source.mk
deleted file mode 100644
index 31064b8..0000000
--- a/api-tests/ff/ipc/test_i076/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i076.c test_i076.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i076.c test_supp_i076.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i076/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i076/test.cmake
index 5bb5a69..6e1dd1b 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i076/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i076.c
+	test_i076.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i076.c
+	test_supp_i076.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i077/source.mk b/api-tests/ff/ipc/test_i077/source.mk
deleted file mode 100644
index b5026c3..0000000
--- a/api-tests/ff/ipc/test_i077/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i077.c test_i077.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i077.c test_supp_i077.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i077/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i077/test.cmake
index 5bb5a69..0a060bf 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i077/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i077.c
+	test_i077.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i077.c
+	test_supp_i077.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i078/source.mk b/api-tests/ff/ipc/test_i078/source.mk
deleted file mode 100644
index 7f8dbe7..0000000
--- a/api-tests/ff/ipc/test_i078/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i078.c test_i078.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i078.c test_supp_i078.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i078/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i078/test.cmake
index 5bb5a69..c7273d9 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i078/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i078.c
+	test_i078.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i078.c
+	test_supp_i078.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i078/test_i078.c b/api-tests/ff/ipc/test_i078/test_i078.c
index 338b781..d46365c 100644
--- a/api-tests/ff/ipc/test_i078/test_i078.c
+++ b/api-tests/ff/ipc/test_i078/test_i078.c
@@ -36,7 +36,7 @@
     NULL,
 };
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 static int32_t get_secure_partition_address(psa_handle_t *handle,
                                             addr_t *addr,
                                             driver_test_fn_id_t test_fn_id)
diff --git a/api-tests/ff/ipc/test_i079/source.mk b/api-tests/ff/ipc/test_i079/source.mk
deleted file mode 100644
index e1357c4..0000000
--- a/api-tests/ff/ipc/test_i079/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i079.c test_i079.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i079.c test_supp_i079.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i079/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i079/test.cmake
index 5bb5a69..2cab6b3 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i079/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i079.c
+	test_i079.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i079.c
+	test_supp_i079.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i080/source.mk b/api-tests/ff/ipc/test_i080/source.mk
deleted file mode 100644
index 8f88250..0000000
--- a/api-tests/ff/ipc/test_i080/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i080.c test_i080.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i080.c test_supp_i080.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i080/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i080/test.cmake
index 5bb5a69..6495d40 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i080/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i080.c
+	test_i080.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i080.c
+	test_supp_i080.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i081/source.mk b/api-tests/ff/ipc/test_i081/source.mk
deleted file mode 100644
index 3344b9e..0000000
--- a/api-tests/ff/ipc/test_i081/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i081.c test_i081.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i081.c test_supp_i081.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i081/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i081/test.cmake
index 5bb5a69..da099b7 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i081/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i081.c
+	test_i081.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i081.c
+	test_supp_i081.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i082/source.mk b/api-tests/ff/ipc/test_i082/source.mk
deleted file mode 100644
index 7b568ce..0000000
--- a/api-tests/ff/ipc/test_i082/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i082.c test_i082.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i082.c test_supp_i082.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i082/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i082/test.cmake
index 5bb5a69..e0c7581 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i082/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i082.c
+	test_i082.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i082.c
+	test_supp_i082.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i082/test_i082.c b/api-tests/ff/ipc/test_i082/test_i082.c
index 6ddd6a7..05e3f84 100644
--- a/api-tests/ff/ipc/test_i082/test_i082.c
+++ b/api-tests/ff/ipc/test_i082/test_i082.c
@@ -36,7 +36,7 @@
     NULL,
 };
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 static int32_t get_secure_partition_address(psa_handle_t *handle,
                                             addr_t *addr,
                                             driver_test_fn_id_t test_fn_id)
diff --git a/api-tests/ff/ipc/test_i083/source.mk b/api-tests/ff/ipc/test_i083/source.mk
deleted file mode 100644
index a13ab84..0000000
--- a/api-tests/ff/ipc/test_i083/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i083.c test_i083.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i083.c test_supp_i083.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i083/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i083/test.cmake
index 5bb5a69..74e5fbe 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i083/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i083.c
+	test_i083.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i083.c
+	test_supp_i083.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i084/source.mk b/api-tests/ff/ipc/test_i084/source.mk
deleted file mode 100644
index 428c065..0000000
--- a/api-tests/ff/ipc/test_i084/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i084.c test_i084.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i084.c test_supp_i084.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i084/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i084/test.cmake
index 5bb5a69..f6e9040 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i084/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i084.c
+	test_i084.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i084.c
+	test_supp_i084.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i085/source.mk b/api-tests/ff/ipc/test_i085/source.mk
deleted file mode 100644
index 2a8e13b..0000000
--- a/api-tests/ff/ipc/test_i085/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i085.c test_i085.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i085.c test_supp_i085.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i085/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i085/test.cmake
index 5bb5a69..cb4948f 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i085/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i085.c
+	test_i085.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i085.c
+	test_supp_i085.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i086/source.mk b/api-tests/ff/ipc/test_i086/source.mk
deleted file mode 100644
index d07ace1..0000000
--- a/api-tests/ff/ipc/test_i086/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i086.c test_i086.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i086.c test_supp_i086.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i086/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i086/test.cmake
index 5bb5a69..d8d5f40 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i086/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i086.c
+	test_i086.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i086.c
+	test_supp_i086.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_i086/test_i086.c b/api-tests/ff/ipc/test_i086/test_i086.c
index 7f56cbe..370e935 100644
--- a/api-tests/ff/ipc/test_i086/test_i086.c
+++ b/api-tests/ff/ipc/test_i086/test_i086.c
@@ -36,7 +36,7 @@
     NULL,
 };
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 static int32_t get_secure_partition_address(addr_t *addr)
 {
    psa_handle_t            handle = 0;
diff --git a/api-tests/ff/ipc/test_i086/test_supp_i086.c b/api-tests/ff/ipc/test_i086/test_supp_i086.c
index 52fef11..946273e 100644
--- a/api-tests/ff/ipc/test_i086/test_supp_i086.c
+++ b/api-tests/ff/ipc/test_i086/test_supp_i086.c
@@ -26,7 +26,7 @@
 int32_t server_test_sp_read_other_sp_heap(void);
 int32_t server_test_sp_write_other_sp_heap(void);
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 void *malloc(size_t size);
 void free(void *ptr);
 #endif
@@ -41,7 +41,7 @@
     NULL,
 };
 
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
 static int32_t send_secure_partition_address(uint8_t *heap)
 {
     int32_t         status = VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i087/source.mk b/api-tests/ff/ipc/test_i087/source.mk
deleted file mode 100644
index d0cfd53..0000000
--- a/api-tests/ff/ipc/test_i087/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_i087.c test_i087.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_i087.c test_supp_i087.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_i087/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_i087/test.cmake
index 5bb5a69..4746ba6 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_i087/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_i087.c
+	test_i087.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_i087.c
+	test_supp_i087.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/ipc/test_l088/source.mk b/api-tests/ff/ipc/test_l088/source.mk
deleted file mode 100644
index 69cfbcf..0000000
--- a/api-tests/ff/ipc/test_l088/source.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-CC_SOURCE  = test_entry_l088.c test_l088.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
-
-CC_SOURCE_SPE  = test_l088.c test_supp_l088.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
diff --git a/api-tests/ff/ipc/test_i047/source.mk b/api-tests/ff/ipc/test_l088/test.cmake
similarity index 70%
copy from api-tests/ff/ipc/test_i047/source.mk
copy to api-tests/ff/ipc/test_l088/test.cmake
index 5bb5a69..16026f9 100644
--- a/api-tests/ff/ipc/test_i047/source.mk
+++ b/api-tests/ff/ipc/test_l088/test.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,12 +15,18 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_i047.c test_i047.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+list(APPEND CC_SOURCE
+	test_entry_l088.c
+	test_l088.c
+)
+list(APPEND CC_OPTIONS )
+list(APPEND AS_SOURCE  )
+list(APPEND AS_OPTIONS )
 
-CC_SOURCE_SPE  = test_i047.c test_supp_i047.c
-CC_OPTIONS_SPE =
-AS_SOURCE_SPE  =
-AS_OPTIONS_SPE =
\ No newline at end of file
+list(APPEND CC_SOURCE_SPE
+	test_l088.c
+	test_supp_l088.c
+)
+list(APPEND CC_OPTIONS_SPE )
+list(APPEND AS_SOURCE_SPE  )
+list(APPEND AS_OPTIONS_SPE )
diff --git a/api-tests/ff/partition/common/driver_partition.c b/api-tests/ff/partition/common/driver_partition.c
index 53a6004..1dff45b 100644
--- a/api-tests/ff/partition/common/driver_partition.c
+++ b/api-tests/ff/partition/common/driver_partition.c
@@ -15,7 +15,7 @@
  * limitations under the License.
 **/
 
-#include "val/spe/val_driver_service_apis.h"
+#include "val_driver_service_apis.h"
 
 #define DATA_VALUE  0x1111
 #define BUFFER_SIZE 4
@@ -574,7 +574,7 @@
 
 void driver_test_isolation_psa_rot_heap_rd(psa_msg_t *msg)
 {
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
     uint8_t         *buffer;
 
     buffer = (uint8_t *)malloc(sizeof(uint8_t) * BUFFER_SIZE);
@@ -589,7 +589,7 @@
 
 void driver_test_isolation_psa_rot_heap_wr(psa_msg_t *msg)
 {
-#if (SP_HEAP_MEM_SUPP == 1)
+#ifdef SP_HEAP_MEM_SUPP
     uint8_t         *buffer;
 
     buffer = (uint8_t *)malloc(sizeof(uint8_t) * BUFFER_SIZE);
diff --git a/api-tests/platform/drivers/uart/cmsdk/pal_uart.c b/api-tests/platform/drivers/uart/cmsdk/pal_uart.c
index e55a411..3964371 100644
--- a/api-tests/platform/drivers/uart/cmsdk/pal_uart.c
+++ b/api-tests/platform/drivers/uart/cmsdk/pal_uart.c
@@ -68,7 +68,7 @@
 void pal_cmsdk_print(char *str, int32_t data)
 {
     int8_t  j, buffer[16];
-    int8_t  i = 0, is_neg = 0;
+    int8_t  i = 0, is_neg = 0, k = sizeof(data);
 
     for (; *str != '\0'; ++str)
     {
@@ -96,7 +96,7 @@
             }
             else if (*str == 'x' || *str == 'X')
             {
-                while (data != 0)
+                while (k--)
                 {
                     j         = data & 0xf;
                     data    >>= 4;
diff --git a/api-tests/platform/drivers/uart/pl011/pal_uart.c b/api-tests/platform/drivers/uart/pl011/pal_uart.c
index 9a1095b..20ac237 100644
--- a/api-tests/platform/drivers/uart/pl011/pal_uart.c
+++ b/api-tests/platform/drivers/uart/pl011/pal_uart.c
@@ -69,7 +69,7 @@
 void pal_uart_pl011_print(char *str, int32_t data)
 {
     uint8_t j, buffer[16];
-    int8_t  i = 0, is_neg = 0;
+    int8_t  i = 0, is_neg = 0, k = sizeof(data);
 
     for (; *str != '\0'; ++str)
     {
@@ -97,7 +97,7 @@
             }
             else if (*str == 'x' || *str == 'X')
             {
-                while (data != 0)
+                while (k--)
                 {
                     j         = data & 0xf;
                     data    >>= 4;
diff --git a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/Makefile b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/Makefile
deleted file mode 100644
index f757e4b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/Makefile
+++ /dev/null
@@ -1,160 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-# Make variables to select correct instances of PAL files
-
-## PSA_IPC_IMPLEMENTED must be true for IPC SUITE
-PSA_IPC_IMPLEMENTED:=0
-
-## PSA_CRYPTO_IMPLEMENTED must be true for CRYPTO SUITE
-PSA_CRYPTO_IMPLEMENTED:=1
-
-## PSA_PROTECTED_STORAGE_IMPLEMENTED must be true for PROTECTED_STORAGE SUITE
-PSA_PROTECTED_STORAGE_IMPLEMENTED:=0
-
-## PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED must be true for INTERNAL_TRUSTED_STORAGE SUITE
-PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED:=1
-
-## PSA_INITIAL_ATTESTATION_IMPLEMENTED must be true for INITIAL_ATTESTATION SUITE
-PSA_INITIAL_ATTESTATION_IMPLEMENTED:=0
-
-# Make variables holding NSPE/SPE source files
-
-## PAL C source files part of NSPE library
-SRC_C_NSPE=
-
-## PAL ASM source files part of NSPE library
-SRC_ASM_NSPE=
-
-## PAL C source files part of SPE library - driver partition
-SRC_C_DRIVER_SP=
-
-## PAL ASM source files part of SPE library - driver partition
-SRC_ASM_DRIVER_SP=
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-# When PSA_IPC_IMPLEMENTED=1, driver functionalities are implemented as RoT-services
-# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-SRC_C_NSPE += pal_client_api_intf.c
-SRC_C_NSPE += pal_driver_ipc_intf.c
-
-# Driver files will be compiled as part of driver partition
-SRC_C_DRIVER_SP += pal_driver_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-else
-
-# When PSA_IPC_IMPLEMENTED=0, driver files will be compiled as part of NSPE
-SRC_C_NSPE += pal_client_api_empty_intf.c
-SRC_C_NSPE += pal_driver_ns_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-endif
-
-ifeq (${PSA_CRYPTO_IMPLEMENTED},1)
-SRC_C_NSPE += pal_crypto_intf.c
-else
-SRC_C_NSPE += pal_crypto_empty_intf.c
-endif
-
-ifeq (${PSA_PROTECTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_protected_storage_intf.c
-else
-SRC_C_NSPE += pal_protected_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_internal_trusted_storage_intf.c
-else
-SRC_C_NSPE += pal_internal_trusted_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INITIAL_ATTESTATION_IMPLEMENTED},1)
-SRC_C_NSPE += pal_attestation_intf.c
-SRC_C_NSPE += pal_attestation_eat.c
-SRC_C_NSPE += pal_attestation_crypto.c
-else
-SRC_C_NSPE += pal_attestation_empty_intf.c
-endif
-
-INCLUDE= -I$(SOURCE)/platform/targets/$(TARGET)/nspe \
-         -I$(SOURCE)/platform/targets/$(TARGET)/spe \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(SOURCE)/platform/drivers/uart/cmsdk \
-         -I$(SOURCE)/platform/drivers/nvmem/ \
-         -I$(SOURCE)/platform/drivers/watchdog/cmsdk \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/inc \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage \
-
-VPATH=$(SOURCE)/platform/targets/$(TARGET)/: \
-      $(SOURCE)/platform/targets/$(TARGET)/spe: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe: \
-      $(SOURCE)/platform/drivers/uart/cmsdk: \
-      $(SOURCE)/platform/drivers/nvmem: \
-      $(SOURCE)/platform/drivers/watchdog/cmsdk: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/common: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/crypto: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/src: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage: \
-
-all: build
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-build: mkdir build_nspe_pal build_spe_pal
-else
-build: mkdir build_nspe_pal
-endif
-
-mkdir:
-	@mkdir -p $(BUILD)/platform/nspe/
-	@mkdir -p $(BUILD)/platform/spe/
-
-# BUILD NSPE PAL
-build_nspe_pal: build_c_nspe build_asm_nspe pal_nspe.a
-
-build_c_nspe: $(SRC_C_NSPE:%.c=$(BUILD)/platform/nspe/%.o)
-build_asm_nspe: $(SRC_ASM_NSPE:%.s=$(BUILD)/platform/nspe/%.o)
-
-$(BUILD)/platform/nspe/%.o : %.c
-	$(CC) $(PAL_CDEFS) $(INCLUDE) -o $@ -c $<
-
-$(BUILD)/platform/nspe/%.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-pal_nspe.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/platform/pal_nspe.a $(BUILD)/platform/nspe/*.o
-
-# BUILD SPE PAL
-build_spe_pal: build_driver_sp
-
-build_driver_sp: build_c_driver_sp build_asm_driver_sp
-
-build_c_driver_sp: $(SRC_C_DRIVER_SP:%.c=$(BUILD)/platform/spe/%_driver_sp.o)
-build_asm_driver_sp: $(SRC_ASM_DRIVER_SP:%.s=$(BUILD)/platform/spe/%_driver_sp.o)
-
-# Generated %_driver_sp.o(s) are used in spbuild.mk to create final driver_partition.a
-$(BUILD)/platform/spe/%_driver_sp.o : %.c
-	$(CC) $(INCLUDE) -DSPE_BUILD -o $@ -c $<
-
-$(BUILD)/platform/spe/%_driver_sp.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-clean:
-	@rm -rf $(BUILD)/platform/nspe/* $(BUILD)/platform/spe/*.a
diff --git a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_common.h
index 3ebe1e1..0a63b02 100644
--- a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_common.h
+++ b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_common.h
@@ -24,10 +24,8 @@
 #include <limits.h>
 #include <stdarg.h>
 
-#ifndef TARGET_CFG_BUILD
 #include "pal_config.h"
 #include "pal_crypto_config.h"
-#endif
 
 /* typedef's */
 typedef uint8_t             bool_t;
@@ -87,7 +85,7 @@
  * Redefining some of the client.h elements for compilation to go through
  * when PSA IPC APIs are not implemented.
  */
-#if (PSA_IPC_IMPLEMENTED == 0)
+#ifndef IPC
 
 #ifndef PSA_VERSION_NONE
 #define PSA_VERSION_NONE            (0)
@@ -113,6 +111,6 @@
     size_t len;
 } psa_outvec;
 
-#endif /* PSA_IPC_IMPLEMENTED */
+#endif /* IPC */
 
 #endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_config.h
index e3f70ad..289dc5d 100644
--- a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/common/pal_config.h
@@ -18,66 +18,32 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
-/*
- * List of macros used by test suite
- */
-#if !defined(PSA_IPC_IMPLEMENTED)
-#define PSA_IPC_IMPLEMENTED 0
-#endif
+/* Define PSA test suite dependent macros for non-cmake build */
+#if !defined(PSA_CMAKE_BUILD)
 
-#if !defined(PSA_CRYPTO_IMPLEMENTED)
-#define PSA_CRYPTO_IMPLEMENTED 0
-#endif
+/* Print verbosity = TEST */
+#define VERBOSE 3
 
-#if !defined(PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED)
-#define PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE VAL build? */
+#define VAL_NSPE_BUILD
 
-#if !defined(PSA_PROTECTED_STORAGE_IMPLEMENTED)
-#define PSA_PROTECTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE TEST build? */
+#define NONSECURE_TEST_BUILD
 
-#if !defined(PSA_INITIAL_ATTESTATION_IMPLEMENTED)
-#define PSA_INITIAL_ATTESTATION_IMPLEMENTED 0
-#endif
+/* Combine test archive or binary? */
+#define TEST_COMBINE_ARCHIVE
 
-#if (PSA_IPC_IMPLEMENTED == 0) && \
-    (PSA_CRYPTO_IMPLEMENTED == 0) && \
-    (PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_PROTECTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_INITIAL_ATTESTATION_IMPLEMENTED == 0)
-#error "You must define at least one of these macros to run test suite"
-#endif
+/* If not defined, skip watchdog programming */
+#define WATCHDOG_AVAILABLE
 
-#if !defined(VERBOSE)
-#define VERBOSE 3 /* Print verbosity = TEST */
-#endif
-
-#if (!defined(VAL_NSPE_BUILD) && !defined(SPE_BUILD))
-#define VAL_NSPE_BUILD 1
-#endif
-
-#if (!defined(NONSECURE_TEST_BUILD) && !defined(SPE_BUILD))
-#define NONSECURE_TEST_BUILD 1
-#endif
-
-#if !defined(TEST_COMBINE_ARCHIVE)
-#define TEST_COMBINE_ARCHIVE 0 /* Combine test archive or binary? */
-#endif
-
-#if !defined(WATCHDOG_AVAILABLE)
-#define WATCHDOG_AVAILABLE 0 /* If zero, skip watchdog programming */
-#endif
-
-#if !defined(SP_HEAP_MEM_SUPP)
-#define SP_HEAP_MEM_SUPP 0 /* Are Dynamic funcs available to secure partition? */
-#endif
+/* Are Dynamic memory APIs available to secure partition? */
+#define SP_HEAP_MEM_SUPP
+#endif /* PSA_CMAKE_BUILD */
 
 /*
  * Include of PSA defined Header files
  */
-
-#if PSA_IPC_IMPLEMENTED
+#ifdef IPC
 /* psa/client.h: Contains the PSA Client API elements */
 #include "psa/client.h"
 
@@ -96,22 +62,22 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#if PSA_CRYPTO_IMPLEMENTED
+#ifdef CRYPTO
 /* psa/crypto.h: Contains the PSA Crypto API elements */
 #include "psa/crypto.h"
 #endif
 
-#if PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED
+#ifdef INTERNAL_TRUSTED_STORAGE
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#if PSA_PROTECTED_STORAGE_IMPLEMENTED
+#ifdef PROTECTED_STORAGE
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
 
-#if PSA_INITIAL_ATTESTATION_IMPLEMENTED
+#ifdef INITIAL_ATTESTATION
 /* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
 #include "psa/initial_attestation.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/target.cmake b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/target.cmake
new file mode 100644
index 0000000..5c5c942
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/target.cmake
@@ -0,0 +1,106 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# PAL C source files part of NSPE library
+list(APPEND PAL_SRC_C_NSPE )
+
+# PAL ASM source files part of NSPE library
+list(APPEND PAL_SRC_ASM_NSPE )
+
+# PAL C source files part of SPE library - driver partition
+list(APPEND PAL_SRC_C_DRIVER_SP )
+
+# PAL ASM source files part of SPE library - driver partition
+list(APPEND PAL_SRC_ASM_DRIVER_SP )
+
+
+# Listing all the sources required for given target
+if(${SUITE} STREQUAL "IPC")
+	list(APPEND PAL_SRC_C_NSPE
+		# driver functionalities are implemented as RoT-services
+		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+	)
+	list(APPEND PAL_SRC_C_DRIVER_SP
+		# Driver files will be compiled as part of driver partition
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+else()
+	list(APPEND PAL_SRC_C_NSPE
+		# driver files will be compiled as part of NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+endif()
+if(${SUITE} STREQUAL "CRYPTO")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_eat.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+	)
+endif()
+
+# Create NSPE library
+add_library(${PSA_TARGET_PAL_NSPE_LIB} STATIC ${PAL_SRC_C_NSPE} ${PAL_SRC_ASM_NSPE})
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+list(APPEND PAL_DRIVER_INCLUDE_PATHS
+	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk
+)
+
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PAL_DRIVER_INCLUDE_PATHS}
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+)
+
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PSA_QCBOR_INCLUDE_PATH}
+)
+endif()
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/Makefile b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/Makefile
deleted file mode 100644
index 473879d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/Makefile
+++ /dev/null
@@ -1,160 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-# Make variables to select correct instances of PAL files
-
-## PSA_IPC_IMPLEMENTED must be true for IPC SUITE
-PSA_IPC_IMPLEMENTED:=0
-
-## PSA_CRYPTO_IMPLEMENTED must be true for CRYPTO SUITE
-PSA_CRYPTO_IMPLEMENTED:=1
-
-## PSA_PROTECTED_STORAGE_IMPLEMENTED must be true for PROTECTED_STORAGE SUITE
-PSA_PROTECTED_STORAGE_IMPLEMENTED:=1
-
-## PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED must be true for INTERNAL_TRUSTED_STORAGE SUITE
-PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED:=0
-
-## PSA_INITIAL_ATTESTATION_IMPLEMENTED must be true for INITIAL_ATTESTATION SUITE
-PSA_INITIAL_ATTESTATION_IMPLEMENTED:=1
-
-# Make variables holding NSPE/SPE source files
-
-## PAL C source files part of NSPE library
-SRC_C_NSPE=
-
-## PAL ASM source files part of NSPE library
-SRC_ASM_NSPE=
-
-## PAL C source files part of SPE library - driver partition
-SRC_C_DRIVER_SP=
-
-## PAL ASM source files part of SPE library - driver partition
-SRC_ASM_DRIVER_SP=
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-# When PSA_IPC_IMPLEMENTED=1, driver functionalities are implemented as RoT-services
-# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-SRC_C_NSPE += pal_client_api_intf.c
-SRC_C_NSPE += pal_driver_ipc_intf.c
-
-# Driver files will be compiled as part of driver partition
-SRC_C_DRIVER_SP += pal_driver_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-else
-
-# When PSA_IPC_IMPLEMENTED=0, driver files will be compiled as part of NSPE
-SRC_C_NSPE += pal_client_api_empty_intf.c
-SRC_C_NSPE += pal_driver_ns_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-endif
-
-ifeq (${PSA_CRYPTO_IMPLEMENTED},1)
-SRC_C_NSPE += pal_crypto_intf.c
-else
-SRC_C_NSPE += pal_crypto_empty_intf.c
-endif
-
-ifeq (${PSA_PROTECTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_protected_storage_intf.c
-else
-SRC_C_NSPE += pal_protected_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_internal_trusted_storage_intf.c
-else
-SRC_C_NSPE += pal_internal_trusted_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INITIAL_ATTESTATION_IMPLEMENTED},1)
-SRC_C_NSPE += pal_attestation_intf.c
-SRC_C_NSPE += pal_attestation_eat.c
-SRC_C_NSPE += pal_attestation_crypto.c
-else
-SRC_C_NSPE += pal_attestation_empty_intf.c
-endif
-
-INCLUDE= -I$(SOURCE)/platform/targets/$(TARGET)/nspe \
-         -I$(SOURCE)/platform/targets/$(TARGET)/spe \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(SOURCE)/platform/drivers/uart/cmsdk \
-         -I$(SOURCE)/platform/drivers/nvmem/ \
-         -I$(SOURCE)/platform/drivers/watchdog/cmsdk \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/inc \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage \
-
-VPATH=$(SOURCE)/platform/targets/$(TARGET)/: \
-      $(SOURCE)/platform/targets/$(TARGET)/spe: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe: \
-      $(SOURCE)/platform/drivers/uart/cmsdk: \
-      $(SOURCE)/platform/drivers/nvmem: \
-      $(SOURCE)/platform/drivers/watchdog/cmsdk: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/common: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/crypto: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/src: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage: \
-
-all: build
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-build: mkdir build_nspe_pal build_spe_pal
-else
-build: mkdir build_nspe_pal
-endif
-
-mkdir:
-	@mkdir -p $(BUILD)/platform/nspe/
-	@mkdir -p $(BUILD)/platform/spe/
-
-# BUILD NSPE PAL
-build_nspe_pal: build_c_nspe build_asm_nspe pal_nspe.a
-
-build_c_nspe: $(SRC_C_NSPE:%.c=$(BUILD)/platform/nspe/%.o)
-build_asm_nspe: $(SRC_ASM_NSPE:%.s=$(BUILD)/platform/nspe/%.o)
-
-$(BUILD)/platform/nspe/%.o : %.c
-	$(CC) $(PAL_CDEFS) $(INCLUDE) -o $@ -c $<
-
-$(BUILD)/platform/nspe/%.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-pal_nspe.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/platform/pal_nspe.a $(BUILD)/platform/nspe/*.o
-
-# BUILD SPE PAL
-build_spe_pal: build_driver_sp
-
-build_driver_sp: build_c_driver_sp build_asm_driver_sp
-
-build_c_driver_sp: $(SRC_C_DRIVER_SP:%.c=$(BUILD)/platform/spe/%_driver_sp.o)
-build_asm_driver_sp: $(SRC_ASM_DRIVER_SP:%.s=$(BUILD)/platform/spe/%_driver_sp.o)
-
-# Generated %_driver_sp.o(s) are used in spbuild.mk to create final driver_partition.a
-$(BUILD)/platform/spe/%_driver_sp.o : %.c
-	$(CC) $(INCLUDE) -DSPE_BUILD -o $@ -c $<
-
-$(BUILD)/platform/spe/%_driver_sp.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-clean:
-	@rm -rf $(BUILD)/platform/nspe/* $(BUILD)/platform/spe/*.a
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_common.h
index 3ebe1e1..0a63b02 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_common.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_common.h
@@ -24,10 +24,8 @@
 #include <limits.h>
 #include <stdarg.h>
 
-#ifndef TARGET_CFG_BUILD
 #include "pal_config.h"
 #include "pal_crypto_config.h"
-#endif
 
 /* typedef's */
 typedef uint8_t             bool_t;
@@ -87,7 +85,7 @@
  * Redefining some of the client.h elements for compilation to go through
  * when PSA IPC APIs are not implemented.
  */
-#if (PSA_IPC_IMPLEMENTED == 0)
+#ifndef IPC
 
 #ifndef PSA_VERSION_NONE
 #define PSA_VERSION_NONE            (0)
@@ -113,6 +111,6 @@
     size_t len;
 } psa_outvec;
 
-#endif /* PSA_IPC_IMPLEMENTED */
+#endif /* IPC */
 
 #endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
index e3f70ad..289dc5d 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
@@ -18,66 +18,32 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
-/*
- * List of macros used by test suite
- */
-#if !defined(PSA_IPC_IMPLEMENTED)
-#define PSA_IPC_IMPLEMENTED 0
-#endif
+/* Define PSA test suite dependent macros for non-cmake build */
+#if !defined(PSA_CMAKE_BUILD)
 
-#if !defined(PSA_CRYPTO_IMPLEMENTED)
-#define PSA_CRYPTO_IMPLEMENTED 0
-#endif
+/* Print verbosity = TEST */
+#define VERBOSE 3
 
-#if !defined(PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED)
-#define PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE VAL build? */
+#define VAL_NSPE_BUILD
 
-#if !defined(PSA_PROTECTED_STORAGE_IMPLEMENTED)
-#define PSA_PROTECTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE TEST build? */
+#define NONSECURE_TEST_BUILD
 
-#if !defined(PSA_INITIAL_ATTESTATION_IMPLEMENTED)
-#define PSA_INITIAL_ATTESTATION_IMPLEMENTED 0
-#endif
+/* Combine test archive or binary? */
+#define TEST_COMBINE_ARCHIVE
 
-#if (PSA_IPC_IMPLEMENTED == 0) && \
-    (PSA_CRYPTO_IMPLEMENTED == 0) && \
-    (PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_PROTECTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_INITIAL_ATTESTATION_IMPLEMENTED == 0)
-#error "You must define at least one of these macros to run test suite"
-#endif
+/* If not defined, skip watchdog programming */
+#define WATCHDOG_AVAILABLE
 
-#if !defined(VERBOSE)
-#define VERBOSE 3 /* Print verbosity = TEST */
-#endif
-
-#if (!defined(VAL_NSPE_BUILD) && !defined(SPE_BUILD))
-#define VAL_NSPE_BUILD 1
-#endif
-
-#if (!defined(NONSECURE_TEST_BUILD) && !defined(SPE_BUILD))
-#define NONSECURE_TEST_BUILD 1
-#endif
-
-#if !defined(TEST_COMBINE_ARCHIVE)
-#define TEST_COMBINE_ARCHIVE 0 /* Combine test archive or binary? */
-#endif
-
-#if !defined(WATCHDOG_AVAILABLE)
-#define WATCHDOG_AVAILABLE 0 /* If zero, skip watchdog programming */
-#endif
-
-#if !defined(SP_HEAP_MEM_SUPP)
-#define SP_HEAP_MEM_SUPP 0 /* Are Dynamic funcs available to secure partition? */
-#endif
+/* Are Dynamic memory APIs available to secure partition? */
+#define SP_HEAP_MEM_SUPP
+#endif /* PSA_CMAKE_BUILD */
 
 /*
  * Include of PSA defined Header files
  */
-
-#if PSA_IPC_IMPLEMENTED
+#ifdef IPC
 /* psa/client.h: Contains the PSA Client API elements */
 #include "psa/client.h"
 
@@ -96,22 +62,22 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#if PSA_CRYPTO_IMPLEMENTED
+#ifdef CRYPTO
 /* psa/crypto.h: Contains the PSA Crypto API elements */
 #include "psa/crypto.h"
 #endif
 
-#if PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED
+#ifdef INTERNAL_TRUSTED_STORAGE
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#if PSA_PROTECTED_STORAGE_IMPLEMENTED
+#ifdef PROTECTED_STORAGE
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
 
-#if PSA_INITIAL_ATTESTATION_IMPLEMENTED
+#ifdef INITIAL_ATTESTATION
 /* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
 #include "psa/initial_attestation.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cmake
new file mode 100644
index 0000000..5c5c942
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cmake
@@ -0,0 +1,106 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# PAL C source files part of NSPE library
+list(APPEND PAL_SRC_C_NSPE )
+
+# PAL ASM source files part of NSPE library
+list(APPEND PAL_SRC_ASM_NSPE )
+
+# PAL C source files part of SPE library - driver partition
+list(APPEND PAL_SRC_C_DRIVER_SP )
+
+# PAL ASM source files part of SPE library - driver partition
+list(APPEND PAL_SRC_ASM_DRIVER_SP )
+
+
+# Listing all the sources required for given target
+if(${SUITE} STREQUAL "IPC")
+	list(APPEND PAL_SRC_C_NSPE
+		# driver functionalities are implemented as RoT-services
+		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+	)
+	list(APPEND PAL_SRC_C_DRIVER_SP
+		# Driver files will be compiled as part of driver partition
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+else()
+	list(APPEND PAL_SRC_C_NSPE
+		# driver files will be compiled as part of NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+endif()
+if(${SUITE} STREQUAL "CRYPTO")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_eat.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+	)
+endif()
+
+# Create NSPE library
+add_library(${PSA_TARGET_PAL_NSPE_LIB} STATIC ${PAL_SRC_C_NSPE} ${PAL_SRC_ASM_NSPE})
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+list(APPEND PAL_DRIVER_INCLUDE_PATHS
+	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk
+)
+
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PAL_DRIVER_INCLUDE_PATHS}
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+)
+
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PSA_QCBOR_INCLUDE_PATH}
+)
+endif()
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/common/driver_partition_psa.json b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/common/driver_partition_psa.json
new file mode 100644
index 0000000..e3cec92
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/common/driver_partition_psa.json
@@ -0,0 +1,75 @@
+{
+  "psa_framework_version": 1.0,
+  "name": "DRIVER_PARTITION",
+  "type": "PSA-ROT",
+  "priority": "NORMAL",
+  "description": "Implements device services such print, flash read/write,. etc.",
+  "entry_point": "driver_main",
+  "stack_size": "0x400",
+  "services": [{
+      "name": "DRIVER_UART_SID",
+      "sid": "0x0000FC01",
+      "signal": "DRIVER_UART_SIG",
+      "non_secure_clients": true,
+      "minor_version": 1,
+      "minor_policy": "RELAXED"
+    },
+    {
+      "name": "DRIVER_WATCHDOG_SID",
+      "sid": "0x0000FC02",
+      "signal": "DRIVER_WATCHDOG_SIG",
+      "non_secure_clients": true,
+      "minor_version": 1,
+      "minor_policy": "RELAXED"
+    },
+    {
+      "name": "DRIVER_NVMEM_SID",
+      "sid": "0x0000FC03",
+      "signal": "DRIVER_NVMEM_SIG",
+      "non_secure_clients": true,
+      "minor_version": 1,
+      "minor_policy": "RELAXED"
+    },
+    {
+      "name": "DRIVER_TEST_SID",
+      "sid": "0x0000FC04",
+      "signal": "DRIVER_TEST_SIG",
+      "non_secure_clients": true,
+      "minor_version": 1,
+      "minor_policy": "RELAXED"
+    }
+  ],
+  "mmio_regions" : [
+    {
+      "name": "UART_REGION",
+      "base": "0x40004000",
+      "size": "0x1000",
+      "permission": "READ-WRITE"
+    },
+    {
+      "name": "WATCHDOG_REGION",
+      "base": "0x40008000",
+      "size": "0x1000",
+      "permission": "READ-WRITE"
+    },
+    {
+      "name": "NVMEM_REGION",
+      "base": "0x2002F000",
+      "size": "0x400",
+      "permission": "READ-WRITE"
+    },
+    {
+      "name": "DRIVER_PARTITION_MMIO",
+      "base": "0x200AF040",
+      "size": "0x20",
+      "permission": "READ-WRITE"
+    }
+  ],
+  "irqs": [
+    {
+       "description": "Using UART TX interrupt to test psa_wait and psa_eoi for irq_signal",
+       "signal": "DRIVER_UART_INTR_SIG",
+       "line_num": 37
+    }
+  ]
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/ipc/client_partition_psa.json b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/ipc/client_partition_psa.json
new file mode 100644
index 0000000..b93377b
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/ipc/client_partition_psa.json
@@ -0,0 +1,37 @@
+{
+  "psa_framework_version": 1.0,
+  "name": "CLIENT_PARTITION",
+  "type": "APPLICATION-ROT",
+  "priority": "NORMAL",
+  "description": "Client partition executing client test func from SPE",
+  "entry_point": "client_main",
+  "stack_size": "0x400",
+  "services": [{
+      "name": "CLIENT_TEST_DISPATCHER_SID",
+      "sid": "0x0000FA01",
+      "signal": "CLIENT_TEST_DISPATCHER_SIG",
+      "non_secure_clients": true,
+      "minor_version": 1,
+      "minor_policy": "RELAXED"
+    }
+  ],
+  "dependencies": [
+    "DRIVER_UART_SID",
+    "DRIVER_NVMEM_SID",
+    "DRIVER_TEST_SID",
+    "SERVER_TEST_DISPATCHER_SID",
+    "SERVER_UNSPECIFED_MINOR_V_SID",
+    "SERVER_STRICT_MINOR_VERSION_SID",
+    "SERVER_RELAX_MINOR_VERSION_SID",
+    "SERVER_SECURE_CONNECT_ONLY_SID",
+    "SERVER_CONNECTION_DROP_SID"
+  ],
+  "mmio_regions" : [
+    {
+      "name": "CLIENT_PARTITION_MMIO",
+      "base": "0x200AF000",
+      "size": "0x20",
+      "permission": "READ-WRITE"
+    }
+   ]
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/ipc/server_partition_psa.json b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/ipc/server_partition_psa.json
new file mode 100644
index 0000000..146b8fb
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/manifests/ipc/server_partition_psa.json
@@ -0,0 +1,69 @@
+{
+  "psa_framework_version": 1.0,
+  "name": "SERVER_PARTITION",
+  "type": "APPLICATION-ROT",
+  "priority": "NORMAL",
+  "description": "Server partition executing server test func",
+  "entry_point": "server_main",
+  "stack_size": "0x400",
+  "heap_size": "0x100",
+  "services": [{
+      "name": "SERVER_TEST_DISPATCHER_SID",
+      "sid": "0x0000FB01",
+      "signal": "SERVER_TEST_DISPATCHER_SIG",
+      "non_secure_clients": true,
+      "minor_version": 1,
+      "minor_policy": "RELAXED"
+    },
+    {
+      "name": "SERVER_SECURE_CONNECT_ONLY_SID",
+      "sid": "0x0000FB02",
+      "signal": "SERVER_SECURE_CONNECT_ONLY_SIG",
+      "non_secure_clients": false,
+      "minor_version": 2,
+      "minor_policy": "RELAXED"
+    },
+    {
+      "name": "SERVER_STRICT_MINOR_VERSION_SID",
+      "sid": "0x0000FB03",
+      "signal": "SERVER_STRICT_MINOR_VERSION_SIG",
+      "non_secure_clients": true,
+      "minor_version": 2,
+      "minor_policy": "STRICT"
+    },
+    {
+      "name": "SERVER_UNSPECIFED_MINOR_V_SID",
+      "sid": "0x0000FB04",
+      "signal": "SERVER_UNSPECIFED_MINOR_V_SIG",
+      "non_secure_clients": true
+    },
+    {
+      "name": "SERVER_RELAX_MINOR_VERSION_SID",
+      "sid": "0x0000FB05",
+      "signal": "SERVER_RELAX_MINOR_VERSION_SIG",
+      "non_secure_clients": true,
+      "minor_version": 2,
+      "minor_policy": "RELAXED"
+    },
+    {
+      "name": "SERVER_UNEXTERN_SID",
+      "sid": "0x0000FB06",
+      "signal": "SERVER_UNEXTERN_SIG",
+      "non_secure_clients": true,
+      "minor_version": 2,
+      "minor_policy": "RELAXED"
+    },
+    {
+      "name": "SERVER_CONNECTION_DROP_SID",
+      "sid": "0x0000FB07",
+      "signal": "SERVER_CONNECTION_DROP_SIG",
+      "non_secure_clients": true,
+      "minor_version": 2,
+      "minor_policy": "RELAXED"
+    }
+  ],
+  "dependencies": [
+    "DRIVER_UART_SID",
+    "DRIVER_NVMEM_SID"
+  ]
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_empty_intf.c
new file mode 100644
index 0000000..578b4ce
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_empty_intf.c
@@ -0,0 +1,93 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "pal_common.h"
+#include "pal_client_api_intf.h"
+
+/**
+ * @brief - Retrieve the version of the PSA Framework API that is implemented.
+ * This is a wrapper API for psa_framework_version API.
+ * @param    - void
+ * @return   - The PSA Framework API version.
+ */
+
+uint32_t pal_ipc_framework_version(void)
+{
+    return 0;
+}
+
+/**
+ * @brief - Retrieve the minor version of a Root of Trust Service by its SID.
+ * This is a wrapper API for the psa_version API.
+ * @param - sid The Root of Trust Service ID
+ * @return - Minor version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
+ *           Service not present on the system.
+ */
+
+uint32_t pal_ipc_version(uint32_t sid)
+{
+    return PSA_VERSION_NONE;
+}
+
+/**
+ * @brief   - Connect to given sid.
+ *            This is a wrapper API for the psa_connect API.
+ * @param   - sid : RoT service id
+ * @param   - minor_version : minor_version of RoT service
+ * @return  - psa_handle_t : return connection handle
+ */
+
+psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t minor_version)
+{
+    return PSA_NULL_HANDLE;
+}
+
+/**
+ * @brief Call a connected Root of Trust Service.
+ * This is a wrapper API for the psa_call API.
+ * The caller must provide an array of ::psa_invec_t structures as the input payload.
+ *
+ * @param  -handle   Handle for the connection.
+ * @param  -in_vec   Array of psa_invec structures.
+ * @param  -in_len   Number of psa_invec structures in in_vec.
+ * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
+ * @param  -out_len  Number of psa_outvec structures in out_vec.
+ * @return -psa_status_t
+ */
+
+psa_status_t pal_ipc_call(psa_handle_t handle,
+                         const psa_invec *in_vec,
+                         size_t in_len,
+                         psa_outvec *out_vec,
+                         size_t out_len)
+{
+    return (PSA_SUCCESS - 1);
+}
+
+/**
+ * @brief Close a connection to a Root of Trust Service.
+ * This is a wrapper API for the psa_close API.
+ * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
+ *
+ * @param handle Handle for the connection.
+ * @return void
+ */
+
+void pal_ipc_close(psa_handle_t handle)
+{
+    return;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.c
new file mode 100644
index 0000000..20ddd11
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.c
@@ -0,0 +1,97 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "pal_common.h"
+#include "pal_client_api_intf.h"
+
+/**
+ * @brief   - Retrieve the version of the PSA Framework API that is implemented.
+ * This is a wrapper API for psa_framework_version API.
+ * @param    - void
+ * @return   - The PSA Framework API version.
+ *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
+ */
+
+uint32_t pal_ipc_framework_version(void)
+{
+    return (psa_framework_version());
+}
+
+/**
+ * @brief   - Retrieve the minor version of a Root of Trust Service by its SID.
+ * This is a wrapper API for the psa_version API.
+ * @param - sid The Root of Trust Service ID
+ * @return - Minor version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
+ *           Service not present on the system.
+ *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
+ */
+
+uint32_t pal_ipc_version(uint32_t sid)
+{
+    return (psa_version(sid));
+}
+
+/**
+ * @brief   - Connect to given sid.
+ *            This is a wrapper API for the psa_connect API.
+ * @param   - sid : RoT service id
+ * @param   - minor_version : minor_version of RoT service
+ * @return  - psa_handle_t : return connection handle
+ *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
+ */
+
+psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t minor_version)
+{
+    return (psa_connect(sid, minor_version));
+}
+
+/**
+ * @brief Call a connected Root of Trust Service.
+ * This is a wrapper API for the psa_call API.
+ * The caller must provide an array of ::psa_invec_t structures as the input payload.
+ *
+ * @param  -handle   Handle for the connection.
+ * @param  -in_vec   Array of psa_invec structures.
+ * @param  -in_len   Number of psa_invec structures in in_vec.
+ * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
+ * @param  -out_len  Number of psa_outvec structures in out_vec.
+ * @return -psa_status_t
+ *          Note - Return -1 if PSA IPC is not implemented.
+ */
+
+psa_status_t pal_ipc_call(psa_handle_t handle,
+                         const psa_invec *in_vec,
+                         size_t in_len,
+                         psa_outvec *out_vec,
+                         size_t out_len)
+{
+    return (psa_call(handle, in_vec, in_len, out_vec, out_len));
+}
+
+/**
+ * @brief Close a connection to a Root of Trust Service.
+ * This is a wrapper API for the psa_close API.
+ * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
+ *
+ * @param  - handle Handle for the connection.
+ * @return - void
+ */
+
+void pal_ipc_close(psa_handle_t handle)
+{
+    psa_close(handle);
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.h
new file mode 100644
index 0000000..3f5741e
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.h
@@ -0,0 +1,32 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_CLIENT_API_H_
+#define _PAL_CLIENT_API_H_
+
+#include "pal_common.h"
+
+uint32_t pal_ipc_framework_version(void);
+uint32_t pal_ipc_version(uint32_t sid);
+psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t minor_version);
+psa_status_t pal_ipc_call(psa_handle_t handle,
+                      const psa_invec *in_vec,
+                      size_t in_len,
+                      psa_outvec *out_vec,
+                      size_t out_len);
+void pal_ipc_close(psa_handle_t handle);
+#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_common.h
new file mode 100644
index 0000000..0a63b02
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_common.h
@@ -0,0 +1,116 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_COMMON_H_
+#define _PAL_COMMON_H_
+
+#include <string.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <stdarg.h>
+
+#include "pal_config.h"
+#include "pal_crypto_config.h"
+
+/* typedef's */
+typedef uint8_t             bool_t;
+typedef uint32_t            addr_t;
+typedef uint32_t            test_id_t;
+typedef uint32_t            block_id_t;
+typedef char                char8_t;
+typedef uint32_t            cfg_id_t;
+
+#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
+
+typedef enum
+{
+    PAL_STATUS_SUCCESS = 0x0,
+    PAL_STATUS_ERROR   = 0x80
+} pal_status_t;
+
+typedef enum {
+    NVMEM_READ             = 0x1,
+    NVMEM_WRITE            = 0x2,
+} nvmem_fn_type_t;
+
+typedef struct {
+    nvmem_fn_type_t nvmem_fn_type;
+    addr_t base;
+    uint32_t offset;
+    int size;
+} nvmem_param_t;
+
+typedef enum {
+    WD_INIT_SEQ         = 0x1,
+    WD_ENABLE_SEQ       = 0x2,
+    WD_DISABLE_SEQ      = 0x3,
+    WD_STATUS_SEQ       = 0x4,
+} wd_fn_type_t;
+
+typedef enum {
+    WD_LOW_TIMEOUT      = 0x1,
+    WD_MEDIUM_TIMEOUT   = 0x2,
+    WD_HIGH_TIMEOUT     = 0x3,
+    WD_CRYPTO_TIMEOUT   = 0x4,
+} wd_timeout_type_t;
+
+typedef struct {
+    wd_fn_type_t wd_fn_type;
+    addr_t       wd_base_addr;
+    uint32_t     wd_time_us;
+    uint32_t     wd_timer_tick_us;
+} wd_param_t;
+
+typedef enum {
+    UART_INIT             = 0x1,
+    UART_PRINT            = 0x2,
+} uart_fn_type_t;
+
+/*
+ * Redefining some of the client.h elements for compilation to go through
+ * when PSA IPC APIs are not implemented.
+ */
+#ifndef IPC
+
+#ifndef PSA_VERSION_NONE
+#define PSA_VERSION_NONE            (0)
+#endif
+
+#ifndef PSA_SUCCESS
+#define PSA_SUCCESS                 (0)
+typedef int32_t psa_status_t;
+#endif
+typedef int32_t psa_handle_t;
+
+#ifndef PSA_NULL_HANDLE
+#define PSA_NULL_HANDLE             ((psa_handle_t)0)
+#endif
+
+typedef struct psa_invec {
+    const void *base;
+    size_t len;
+} psa_invec;
+
+typedef struct psa_outvec {
+    void *base;
+    size_t len;
+} psa_outvec;
+
+#endif /* IPC */
+
+#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_config.h
new file mode 100644
index 0000000..289dc5d
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_config.h
@@ -0,0 +1,85 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_CONFIG_H_
+#define _PAL_CONFIG_H_
+
+/* Define PSA test suite dependent macros for non-cmake build */
+#if !defined(PSA_CMAKE_BUILD)
+
+/* Print verbosity = TEST */
+#define VERBOSE 3
+
+/* NSPE or SPE VAL build? */
+#define VAL_NSPE_BUILD
+
+/* NSPE or SPE TEST build? */
+#define NONSECURE_TEST_BUILD
+
+/* Combine test archive or binary? */
+#define TEST_COMBINE_ARCHIVE
+
+/* If not defined, skip watchdog programming */
+#define WATCHDOG_AVAILABLE
+
+/* Are Dynamic memory APIs available to secure partition? */
+#define SP_HEAP_MEM_SUPP
+#endif /* PSA_CMAKE_BUILD */
+
+/*
+ * Include of PSA defined Header files
+ */
+#ifdef IPC
+/* psa/client.h: Contains the PSA Client API elements */
+#include "psa/client.h"
+
+/*
+ * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
+ * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
+ * of this file.
+*/
+#include "psa_manifest/sid.h"
+
+/*
+ * psa_manifest/pid.h: Secure Partition IDs
+ * Macro definitions that map from Secure Partition names to Secure Partition IDs.
+ * Partition manifest parse build tool must provide the implementation of this file.
+*/
+#include "psa_manifest/pid.h"
+#endif
+
+#ifdef CRYPTO
+/* psa/crypto.h: Contains the PSA Crypto API elements */
+#include "psa/crypto.h"
+#endif
+
+#ifdef INTERNAL_TRUSTED_STORAGE
+/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
+#include "psa/internal_trusted_storage.h"
+#endif
+
+#ifdef PROTECTED_STORAGE
+/* psa/protected_storage.h: Contains the PSA PS API elements */
+#include "psa/protected_storage.h"
+#endif
+
+#ifdef INITIAL_ATTESTATION
+/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
+#include "psa/initial_attestation.h"
+#endif
+
+#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ipc_intf.c
new file mode 100644
index 0000000..f8f773f
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ipc_intf.c
@@ -0,0 +1,305 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "pal_common.h"
+#include "pal_client_api_intf.h"
+
+/**
+    @brief    - This function initializes the UART
+    @param    - uart base addr
+    @return   - SUCCESS/FAILURE
+**/
+int pal_uart_init_ns(uint32_t uart_base_addr)
+{
+    psa_handle_t            print_handle = 0;
+    psa_status_t            status_of_call = PSA_SUCCESS;
+    uart_fn_type_t          uart_fn = UART_INIT;
+
+    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
+                         {&uart_base_addr, sizeof(uart_base_addr)},
+                         {NULL, 0}};
+
+    print_handle = pal_ipc_connect(DRIVER_UART_SID, 0);
+    if (print_handle < 0)
+    {
+        return(PAL_STATUS_ERROR);
+    }
+
+    status_of_call = pal_ipc_call(print_handle, data, 3, NULL, 0);
+    if (status_of_call != PSA_SUCCESS)
+    {
+        return(PAL_STATUS_ERROR);
+    }
+
+    pal_ipc_close(print_handle);
+    return PAL_STATUS_SUCCESS;
+}
+
+/**
+    @brief    - This function parses the input string and writes bytes into UART TX FIFO
+    @param    - str      : Input String
+              - data     : Value for format specifier
+    @return   - SUCCESS/FAILURE
+**/
+
+int pal_print_ns(char *str, int32_t data)
+{
+    int             string_len = 0;
+    char            *p = str;
+    psa_handle_t    print_handle = 0;
+    psa_status_t    status_of_call = PSA_SUCCESS;
+    pal_status_t    status = PAL_STATUS_SUCCESS;
+    uart_fn_type_t  uart_fn = UART_PRINT;
+
+    while (*p != '\0')
+    {
+        string_len++;
+        p++;
+    }
+
+    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
+                          {str, string_len+1},
+                          {&data, sizeof(data)}};
+    print_handle = pal_ipc_connect(DRIVER_UART_SID, 0);
+
+    if (print_handle < 0)
+    {
+        return PAL_STATUS_ERROR;
+    }
+    else
+    {
+        status_of_call = pal_ipc_call(print_handle, data1, 3, NULL, 0);
+        if (status_of_call != PSA_SUCCESS)
+        {
+            status = PAL_STATUS_ERROR;
+        }
+    }
+    pal_ipc_close(print_handle);
+    return status;
+}
+
+/**
+    @brief           - Initializes an hardware watchdog timer
+    @param           - base_addr       : Base address of the watchdog module
+                     - time_us         : Time in micro seconds
+                     - timer_tick_us   : Number of ticks per micro second
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
+{
+    wd_param_t              wd_param;
+    psa_handle_t            handle = 0;
+    psa_status_t            status_of_call = PSA_SUCCESS;
+
+    wd_param.wd_fn_type = WD_INIT_SEQ;
+    wd_param.wd_base_addr = base_addr;
+    wd_param.wd_time_us = time_us;
+    wd_param.wd_timer_tick_us = timer_tick_us;
+    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
+
+    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, 0);
+    if (handle < 0)
+    {
+        return PAL_STATUS_ERROR;
+    }
+    else
+    {
+        status_of_call = pal_ipc_call(handle, invec, 1, NULL, 0);
+        if (status_of_call != PSA_SUCCESS)
+        {
+            pal_ipc_close(handle);
+            return PAL_STATUS_ERROR;
+        }
+    }
+   pal_ipc_close(handle);
+   return PAL_STATUS_SUCCESS;
+}
+
+/**
+    @brief           - Enables a hardware watchdog timer
+    @param           - base_addr       : Base address of the watchdog module
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_enable_ns(addr_t base_addr)
+{
+    wd_param_t              wd_param;
+    psa_handle_t            handle = 0;
+    psa_status_t            status_of_call = PSA_SUCCESS;
+
+    wd_param.wd_fn_type = WD_ENABLE_SEQ;
+    wd_param.wd_base_addr = base_addr;
+    wd_param.wd_time_us = 0;
+    wd_param.wd_timer_tick_us = 0;
+    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
+
+    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, 0);
+    if (handle < 0)
+    {
+        return PAL_STATUS_ERROR;
+    }
+    else
+    {
+        status_of_call = pal_ipc_call(handle, invec, 1, NULL, 0);
+        if (status_of_call != PSA_SUCCESS)
+        {
+            pal_ipc_close(handle);
+            return PAL_STATUS_ERROR;
+        }
+    }
+   pal_ipc_close(handle);
+   return PAL_STATUS_SUCCESS;
+}
+
+/**
+    @brief           - Disables a hardware watchdog timer
+    @param           - base_addr  : Base address of the watchdog module
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_disable_ns(addr_t base_addr)
+{
+    wd_param_t              wd_param;
+    psa_handle_t            handle = 0;
+    psa_status_t            status_of_call = PSA_SUCCESS;
+
+    wd_param.wd_fn_type = WD_DISABLE_SEQ;
+    wd_param.wd_base_addr = base_addr;
+    wd_param.wd_time_us = 0;
+    wd_param.wd_timer_tick_us = 0;
+    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
+
+    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, 0);
+    if (handle < 0)
+    {
+        return PAL_STATUS_ERROR;
+    }
+    else
+    {
+        status_of_call = pal_ipc_call(handle, invec, 1, NULL, 0);
+        if (status_of_call != PSA_SUCCESS)
+        {
+            pal_ipc_close(handle);
+            return PAL_STATUS_ERROR;
+        }
+    }
+   pal_ipc_close(handle);
+   return PAL_STATUS_SUCCESS;
+}
+
+/**
+    @brief    - Reads from given non-volatile address.
+    @param    - base    : Base address of nvmem
+                offset  : Offset
+                buffer  : Pointer to source address
+                size    : Number of bytes
+    @return   - SUCCESS/FAILURE
+**/
+int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
+{
+    nvmem_param_t   nvmem_param;
+    psa_handle_t    handle = 0;
+    psa_status_t    status_of_call = PSA_SUCCESS;
+
+    nvmem_param.nvmem_fn_type = NVMEM_READ;
+    nvmem_param.base = base;
+    nvmem_param.offset = offset;
+    nvmem_param.size = size;
+    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
+    psa_outvec outvec[1] = {{buffer, size}};
+
+    handle = pal_ipc_connect(DRIVER_NVMEM_SID, 0);
+    if (handle < 0)
+    {
+        return PAL_STATUS_ERROR;
+    }
+    else
+    {
+        status_of_call = pal_ipc_call(handle, invec, 1, outvec, 1);
+        if (status_of_call != PSA_SUCCESS)
+        {
+            pal_ipc_close(handle);
+            return PAL_STATUS_ERROR;
+        }
+    }
+   psa_close(handle);
+   return PAL_STATUS_SUCCESS;
+}
+
+/**
+    @brief    - Writes into given non-volatile address.
+    @param    - base    : Base address of nvmem
+                offset  : Offset
+                buffer  : Pointer to source address
+                size    : Number of bytes
+    @return   - SUCCESS/FAILURE
+**/
+int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
+{
+    nvmem_param_t   nvmem_param;
+    psa_handle_t    handle = 0;
+    psa_status_t    status_of_call = PSA_SUCCESS;
+
+    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
+    nvmem_param.base = base;
+    nvmem_param.offset = offset;
+    nvmem_param.size = size;
+    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
+
+    handle = pal_ipc_connect(DRIVER_NVMEM_SID, 0);
+    if (handle < 0)
+    {
+        return PAL_STATUS_ERROR;
+    }
+    else
+    {
+        status_of_call = pal_ipc_call(handle, invec, 2, NULL, 0);
+        if (status_of_call != PSA_SUCCESS)
+        {
+            pal_ipc_close(handle);
+            return PAL_STATUS_ERROR;
+        }
+    }
+   pal_ipc_close(handle);
+   return PAL_STATUS_SUCCESS;
+}
+
+/**
+ *   @brief    - This function will read peripherals using SPI commands
+ *   @param    - addr : address of the peripheral
+ *               data : read buffer
+ *               len  : length of the read buffer in bytes
+ *   @return   - error status
+**/
+int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
+{
+    return 0xFF;
+}
+
+/**
+ *   @brief    - Terminates the simulation at the end of all tests completion.
+ *               By default, it put cpus into power down mode.
+ *   @param    - void
+ *   @return   - void
+**/
+void pal_terminate_simulation(void)
+{
+    /* Add logic to terminate the simluation */
+
+    while(1)
+    {
+        asm volatile("WFI");
+    }
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ns_intf.c
new file mode 100644
index 0000000..2af6fcc
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ns_intf.c
@@ -0,0 +1,145 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "pal_common.h"
+#include "pal_uart.h"
+#include "pal_nvmem.h"
+#include "pal_wd_cmsdk.h"
+
+/**
+    @brief    - This function initializes the UART
+    @param    - uart base addr
+    @return   - SUCCESS/FAILURE
+**/
+int pal_uart_init_ns(uint32_t uart_base_addr)
+{
+    pal_uart_cmsdk_init(uart_base_addr);
+    return PAL_STATUS_SUCCESS;
+}
+
+/**
+    @brief    - This function parses the input string and writes bytes into UART TX FIFO
+    @param    - str      : Input String
+              - data     : Value for format specifier
+    @return   - SUCCESS/FAILURE
+**/
+
+int pal_print_ns(char *str, int32_t data)
+{
+    pal_cmsdk_print(str, data);
+    return PAL_STATUS_SUCCESS;
+}
+
+/**
+    @brief           - Initializes an hardware watchdog timer
+    @param           - base_addr       : Base address of the watchdog module
+                     - time_us         : Time in micro seconds
+                     - timer_tick_us   : Number of ticks per micro second
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
+{
+    return(pal_wd_cmsdk_init(base_addr,time_us, timer_tick_us));
+}
+
+/**
+    @brief           - Enables a hardware watchdog timer
+    @param           - base_addr       : Base address of the watchdog module
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_enable_ns(addr_t base_addr)
+{
+    return(pal_wd_cmsdk_enable(base_addr));
+}
+
+/**
+    @brief           - Disables a hardware watchdog timer
+    @param           - base_addr  : Base address of the watchdog module
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_disable_ns(addr_t base_addr)
+{
+    return (pal_wd_cmsdk_disable(base_addr));
+}
+
+/**
+    @brief    - Reads from given non-volatile address.
+    @param    - base    : Base address of nvmem
+                offset  : Offset
+                buffer  : Pointer to source address
+                size    : Number of bytes
+    @return   - SUCCESS/FAILURE
+**/
+int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
+{
+    if (nvmem_read(base, offset, buffer, size))
+    {
+        return PAL_STATUS_SUCCESS;
+    }
+    else
+    {
+        return PAL_STATUS_ERROR;
+    }
+}
+
+/**
+    @brief    - Writes into given non-volatile address.
+    @param    - base    : Base address of nvmem
+                offset  : Offset
+                buffer  : Pointer to source address
+                size    : Number of bytes
+    @return   - SUCCESS/FAILURE
+**/
+int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
+{
+    if (nvmem_write(base, offset, buffer, size))
+    {
+        return PAL_STATUS_SUCCESS;
+    }
+    else
+    {
+        return PAL_STATUS_ERROR;
+    }
+}
+
+/**
+ *   @brief    - This function will read peripherals using SPI commands
+ *   @param    - addr : address of the peripheral
+ *               data : read buffer
+ *               len  : length of the read buffer in bytes
+ *   @return   - error status
+**/
+int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
+{
+    return 0xFF;
+}
+
+/**
+ *   @brief    - Terminates the simulation at the end of all tests completion.
+ *               By default, it put cpus into power down mode.
+ *   @param    - void
+ *   @return   - void
+**/
+void pal_terminate_simulation(void)
+{
+    /* Add logic to terminate the simluation */
+
+    while(1)
+    {
+        asm volatile("WFI");
+    }
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config.h
new file mode 100644
index 0000000..ab11fd1
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config.h
@@ -0,0 +1,323 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+/*
+ * \file pal_crypto_config.h
+ *
+ * \brief Configuration options for crypto tests (set of defines)
+ *
+ *  This set of compile-time options may be used to enable
+ *  or disable features selectively for crypto test suite
+ */
+
+#ifndef _PAL_CRYPTO_CONFIG_H_
+#define _PAL_CRYPTO_CONFIG_H_
+/**
+ * \def ARCH_TEST_RSA
+ *
+ * Enable the RSA public-key cryptosystem.
+ * By default all supported keys are enabled.
+ *
+ * Comment macros to disable the types
+ */
+#define ARCH_TEST_RSA
+#define ARCH_TEST_RSA_1024
+#define ARCH_TEST_RSA_2048
+#define ARCH_TEST_RSA_3072
+
+/**
+ * \def  ARCH_TEST_ECC
+ * \def  ARCH_TEST_ECC_CURVE_SECPXXXR1
+ *
+ * Enable the elliptic curve
+ * Enable specific curves within the Elliptic Curve
+ * module.  By default all supported curves are enabled.
+ *
+ * Requires: ARCH_TEST_ECC
+ * Comment macros to disable the curve
+ */
+#define ARCH_TEST_ECC
+#define ARCH_TEST_ECC_CURVE_SECP192R1
+#define ARCH_TEST_ECC_CURVE_SECP224R1
+#define ARCH_TEST_ECC_CURVE_SECP256R1
+#define ARCH_TEST_ECC_CURVE_SECP384R1
+
+/**
+ * \def ARCH_TEST_AES
+ *
+ * Enable the AES block cipher.
+ * By default all supported keys are enabled.
+ *
+ * Comment macros to disable the types
+ */
+#define ARCH_TEST_AES
+#define ARCH_TEST_AES_128
+#define ARCH_TEST_AES_192
+#define ARCH_TEST_AES_256
+#define ARCH_TEST_AES_512
+
+/**
+ * \def  ARCH_TEST_DES
+ *
+ * Enable the DES block cipher.
+ * By default all supported keys are enabled.
+ *
+ * Comment macros to disable the types
+ */
+//#define ARCH_TEST_DES
+//#define ARCH_TEST_DES_1KEY
+//#define ARCH_TEST_DES_2KEY
+//#define ARCH_TEST_DES_3KEY
+
+/**
+ * \def  ARCH_TEST_RAW
+ *
+ * A "key" of this type cannot be used for any cryptographic operation.
+ * Applications may use this type to store arbitrary data in the keystore.
+ */
+#define ARCH_TEST_RAW
+
+/**
+ * \def ARCH_TEST_CIPER
+ *
+ * Enable the generic cipher layer.
+ */
+
+#define ARCH_TEST_CIPER
+
+/**
+ * \def ARCH_TEST_ARC4
+ *
+ * Enable the ARC4 key type.
+ */
+//#define ARCH_TEST_ARC4
+
+/**
+ * \def ARCH_TEST_CIPER_MODE_CTR
+ *
+ * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
+ *
+ * Requires: ARCH_TEST_CIPER
+ */
+#define ARCH_TEST_CIPER_MODE_CTR
+
+/**
+ * \def ARCH_TEST_CIPER_MODE_CFB
+ *
+ * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
+ *
+ * Requires: ARCH_TEST_CIPER
+ */
+#define ARCH_TEST_CIPER_MODE_CFB
+
+/**
+ * \def ARCH_TEST_CIPER_MODE_CBC
+ *
+ * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
+ *
+ * Requires: ARCH_TEST_CIPER
+ */
+#define ARCH_TEST_CIPER_MODE_CBC
+
+/**
+ * \def ARCH_TEST_CTR_AES
+ *
+ * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CTR
+ */
+#define ARCH_TEST_CTR_AES
+
+/**
+ * \def ARCH_TEST_CBC_AES
+ *
+ * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CBC
+ *
+ * Comment macros to disable the types
+ */
+#define ARCH_TEST_CBC_AES
+#define ARCH_TEST_CBC_AES_NO_PADDING
+
+/**
+ * \def ARCH_TEST_CBC_NO_PADDING
+ *
+ * Requires: ARCH_TEST_CIPER, ARCH_TEST_CIPER_MODE_CBC
+ *
+ * Comment macros to disable the types
+ */
+#define ARCH_TEST_CBC_NO_PADDING
+
+/**
+ * \def ARCH_TEST_CFB_AES
+ *
+ * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CFB
+ */
+#define ARCH_TEST_CFB_AES
+
+/**
+ * \def ARCH_TEST_PKCS1V15_*
+ *
+ * Enable support for PKCS#1 v1.5 encoding.
+ * Enable support for PKCS#1 v1.5 operations.
+ * Enable support for RSA-OAEP
+ *
+ * Requires: ARCH_TEST_RSA, ARCH_TEST_PKCS1V15
+ *
+ * Comment macros to disable the types
+ */
+#define ARCH_TEST_PKCS1V15
+#define ARCH_TEST_RSA_PKCS1V15_SIGN
+#define ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
+#define ARCH_TEST_RSA_PKCS1V15_CRYPT
+#define ARCH_TEST_RSA_OAEP
+
+/**
+ * \def ARCH_TEST_CBC_PKCS7
+ *
+ * Requires: ARCH_TEST_CIPER_MODE_CBC
+ *
+ * Comment macros to disable the types
+ */
+#define ARCH_TEST_CBC_PKCS7
+
+/**
+ * \def ARCH_TEST_ASYMMETRIC_ENCRYPTION
+ *
+ * Enable support for Asymmetric encryption algorithms
+ */
+#define ARCH_TEST_ASYMMETRIC_ENCRYPTION
+
+/**
+ * \def ARCH_TEST_HASH
+ *
+ * Enable the hash algorithm.
+ */
+#define ARCH_TEST_HASH
+
+/**
+ * \def  ARCH_TEST_HMAC
+ *
+ * The key policy determines which underlying hash algorithm the key can be
+ * used for.
+ *
+ * Requires: ARCH_TEST_HASH
+ */
+#define ARCH_TEST_HMAC
+
+/**
+ * \def ARCH_TEST_MDX
+ * \def ARCH_TEST_SHAXXX
+ *
+ * Enable the MDX algorithm.
+ * Enable the SHAXXX algorithm.
+ *
+ * Requires: ARCH_TEST_HASH
+ *
+ * Comment macros to disable the types
+ */
+//#define ARCH_TEST_MD2
+//#define ARCH_TEST_MD4
+//#define ARCH_TEST_MD5
+//#define ARCH_TEST_RIPEMD160
+#define ARCH_TEST_SHA1
+#define ARCH_TEST_SHA224
+#define ARCH_TEST_SHA256
+#define ARCH_TEST_SHA384
+#define ARCH_TEST_SHA512
+//#define ARCH_TEST_SHA512_224
+//#define ARCH_TEST_SHA512_256
+//#define ARCH_TEST_SHA3_224
+//#define ARCH_TEST_SHA3_256
+//#define ARCH_TEST_SHA3_384
+//#define ARCH_TEST_SHA3_512
+
+/**
+ * \def ARCH_TEST_HKDF
+ *
+ * Enable the HKDF algorithm (RFC 5869).
+ *
+ * Requires: ARCH_TEST_HASH
+*/
+#define ARCH_TEST_HKDF
+
+/**
+ * \def ARCH_TEST_xMAC
+ *
+ * Enable the xMAC (Cipher/Hash/G-based Message Authentication Code) mode for block
+ * ciphers.
+ * Requires: ARCH_TEST_AES or ARCH_TEST_DES
+ *
+ * Comment macros to disable the types
+ */
+#define ARCH_TEST_CMAC
+#define ARCH_TEST_GMAC
+#define ARCH_TEST_HMAC
+
+/**
+ * \def ARCH_TEST_CCM
+ *
+ * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.
+ *
+ * Requires: ARCH_TEST_AES
+ */
+#define ARCH_TEST_CCM
+
+/**
+ * \def ARCH_TEST_GCM
+ *
+ * Enable the Galois/Counter Mode (GCM) for AES.
+ *
+ * Requires: ARCH_TEST_AES
+ *
+ */
+#define ARCH_TEST_GCM
+
+/**
+ * \def ARCH_TEST_TRUNCATED_MAC
+ *
+ * Enable support for RFC 6066 truncated HMAC in SSL.
+ *
+ * Comment this macro to disable support for truncated HMAC in SSL
+ */
+#define ARCH_TEST_TRUNCATED_MAC
+
+
+/**
+ * \def ARCH_TEST_ECDH
+ *
+ * Enable the elliptic curve Diffie-Hellman library.
+ *
+ * Requires: ARCH_TEST_ECC
+ */
+#define ARCH_TEST_ECDH
+
+/**
+ * \def ARCH_TEST_ECDSA
+ *
+ * Enable the elliptic curve DSA library.
+ * Requires: ARCH_TEST_ECC
+ */
+#define ARCH_TEST_ECDSA
+
+/**
+ * \def ARCH_TEST_DETERMINISTIC_ECDSA
+ *
+ * Enable deterministic ECDSA (RFC 6979).
+*/
+#define ARCH_TEST_DETERMINISTIC_ECDSA
+
+#include "pal_crypto_config_check.h"
+
+#endif /* _PAL_CRYPTO_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config_check.h
new file mode 100644
index 0000000..f18a785
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config_check.h
@@ -0,0 +1,223 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+/**
+ * \file pal_crypto_config_check.h
+ *
+ * \brief Consistency checks for configuration options
+ *
+ */
+
+#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
+#define _PAL_CRYPTO_CONFIG_CHECK_H_
+
+#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
+#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
+#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
+#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
+#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
+#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
+#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
+#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
+#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
+#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
+#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
+#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
+#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
+#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CTR_AES) &&\
+    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
+#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
+#endif
+
+#if (defined(ARCH_TEST_CBC_AES)|| defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
+    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
+#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
+#endif
+
+#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
+    (!defined(ARCH_TEST_CIPER) ||!defined(ARCH_TEST_CIPER_MODE_CBC))
+#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CFB_AES) &&\
+    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
+#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
+    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
+#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
+    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
+#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
+    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
+#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
+#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_HMAC defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_MD2 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_MD4 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_MD5 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
+#error "ARCH_TEST_HKDF defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_CMAC defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_GMAC defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_HMAC defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_CCM defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
+#error "ARCH_TEST_GCM defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
+#error "ARCH_TEST_ECDH defined, but not all prerequisites"
+#endif
+
+#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
+#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
+#endif
+
+#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_empty_intf.c
new file mode 100644
index 0000000..2a28f39
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_empty_intf.c
@@ -0,0 +1,30 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include <stdarg.h>
+#include "pal_common.h"
+
+/**
+    @brief    - This API will call the requested crypto function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+int32_t pal_crypto_function(int type, va_list valist)
+{
+    return PAL_STATUS_ERROR;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.c
new file mode 100644
index 0000000..3df6aa8
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.c
@@ -0,0 +1,340 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+
+#include "pal_crypto_intf.h"
+
+#define  PAL_KEY_SLOT_COUNT  32
+
+/**
+    @brief    - This API will call the requested crypto function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+int32_t pal_crypto_function(int type, va_list valist)
+{
+    int                     i;
+    size_t                  size, *length, salt_length, label_length, ciphertext_size;
+    uint8_t                 *buffer, *ciphertext;
+    const uint8_t           *salt, *label, *nonce, *additional_data;
+    uint8_t                 *plaintext;
+    uint32_t                status;
+    const void              *extra;
+    size_t                  extra_size, capacity, *gen_cap, nonce_length, additional_data_length;
+    psa_key_handle_t        handle, *key_handle, target_handle;
+    psa_key_type_t          key_type, *key_type_out;
+    psa_key_policy_t        *policy;
+    psa_key_usage_t         usage, *usage_out;
+    psa_key_lifetime_t      *lifetime_out;
+    psa_algorithm_t         alg, *alg_out;
+    psa_hash_operation_t    *hash_operation;
+    psa_mac_operation_t     *mac_operation;
+    psa_cipher_operation_t  *cipher_operation;
+    psa_crypto_generator_t  *generator;
+
+    switch (type)
+    {
+        case PAL_CRYPTO_INIT:
+            return psa_crypto_init();
+        case PAL_CRYPTO_GENERATE_RANDOM:
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, int);
+            return psa_generate_random(buffer, size);
+        case PAL_CRYPTO_IMPORT_KEY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            key_type = va_arg(valist, psa_key_type_t);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, int);
+            status = psa_import_key(handle, key_type, buffer, size);
+            return status;
+        case PAL_CRYPTO_EXPORT_KEY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            buffer = (uint8_t *)(va_arg(valist, uint8_t*));
+            size = va_arg(valist, int);
+            length = (size_t *)va_arg(valist, size_t*);
+            status = psa_export_key(handle, buffer, size, length);
+            return status;
+        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            buffer = (uint8_t *)(va_arg(valist, uint8_t*));
+            size = va_arg(valist, int);
+            length = (size_t *)va_arg(valist, size_t*);
+            status = psa_export_public_key(handle, buffer, size, length);
+            return status;
+        case PAL_CRYPTO_KEY_POLICY_INIT:
+            policy = va_arg(valist, psa_key_policy_t*);
+            memset(policy, 0, sizeof(psa_key_policy_t));
+            return 0;
+        case PAL_CRYPTO_KEY_POLICY_SET_USAGE:
+            policy = va_arg(valist, psa_key_policy_t*);
+            usage = va_arg(valist, psa_key_usage_t);
+            alg = va_arg(valist, psa_algorithm_t);
+            psa_key_policy_set_usage(policy, usage, alg);
+            return 0;
+        case PAL_CRYPTO_SET_KEY_POLICY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            policy = va_arg(valist, psa_key_policy_t*);
+            return psa_set_key_policy(handle, policy);
+        case PAL_CRYPTO_DESTROY_KEY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            status = psa_destroy_key(handle);
+            return status;
+        case PAL_CRYPTO_GET_KEY_INFORMATION:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            key_type_out = va_arg(valist, psa_key_type_t*);
+            length = (size_t *)va_arg(valist, size_t*);
+            status = psa_get_key_information(handle, key_type_out, length);
+            return status;
+        case PAL_CRYPTO_GET_KEY_POLICY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            policy = va_arg(valist, psa_key_policy_t*);
+            return psa_get_key_policy(handle, policy);
+        case PAL_CRYPTO_KEY_POLICY_GET_USAGE:
+            policy = va_arg(valist, psa_key_policy_t*);
+            usage_out = va_arg(valist, psa_key_usage_t*);
+            *usage_out = psa_key_policy_get_usage(policy);
+            return 0;
+        case PAL_CRYPTO_KEY_POLICY_GET_ALGORITHM:
+            policy = va_arg(valist, psa_key_policy_t*);
+            alg_out = va_arg(valist, psa_algorithm_t*);
+            *alg_out = psa_key_policy_get_algorithm(policy);
+            return 0;
+        case PAL_CRYPTO_GET_KEY_LIFETIME:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            lifetime_out = va_arg(valist, psa_key_lifetime_t*);
+            return psa_get_key_lifetime(handle, lifetime_out);
+        case PAL_CRYPTO_HASH_SETUP:
+            hash_operation = va_arg(valist, psa_hash_operation_t*);
+            alg = va_arg(valist, psa_algorithm_t);
+            return psa_hash_setup(hash_operation, alg);
+        case PAL_CRYPTO_HASH_UPDATE:
+            hash_operation = va_arg(valist, psa_hash_operation_t*);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            return psa_hash_update(hash_operation, buffer, size);
+        case PAL_CRYPTO_HASH_VERIFY:
+            hash_operation = va_arg(valist, psa_hash_operation_t*);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            return psa_hash_verify(hash_operation, buffer, size);
+        case PAL_CRYPTO_HASH_FINISH:
+            hash_operation = va_arg(valist, psa_hash_operation_t*);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_hash_finish(hash_operation, buffer, size, length);
+        case PAL_CRYPTO_HASH_ABORT:
+            hash_operation = va_arg(valist, psa_hash_operation_t*);
+            return psa_hash_abort(hash_operation);
+        case PAL_CRYPTO_GENERATE_KEY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            key_type = va_arg(valist, psa_key_type_t);
+            size     = va_arg(valist, size_t);
+            extra    = va_arg(valist, const void*);
+            extra_size  = va_arg(valist, size_t);
+            return psa_generate_key(handle, key_type, size, extra, extra_size);
+        case PAL_CRYPTO_GENERATOR_READ:
+            generator = va_arg(valist, psa_crypto_generator_t*);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, int);
+            return psa_generator_read(generator, buffer, size);
+        case PAL_CRYPTO_KEY_DERIVATION:
+            generator = va_arg(valist, psa_crypto_generator_t*);
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            salt = va_arg(valist, const uint8_t *);
+            salt_length = va_arg(valist, size_t);
+            label = va_arg(valist, const uint8_t *);
+            label_length = va_arg(valist, size_t);
+            capacity = va_arg(valist, size_t);
+            return psa_key_derivation(generator, handle, alg, salt, salt_length, label,
+                                                                  label_length, capacity);
+        case PAL_CRYPTO_GET_GENERATOR_CAPACITY:
+            generator = va_arg(valist, psa_crypto_generator_t*);
+            gen_cap   = va_arg(valist, size_t*);
+            return psa_get_generator_capacity(generator, gen_cap);
+        case PAL_CRYPTO_GENERATOR_IMPORT_KEY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            key_type = va_arg(valist, psa_key_type_t);
+            size     = va_arg(valist, size_t);
+            generator = va_arg(valist, psa_crypto_generator_t*);
+            return psa_generator_import_key(handle, key_type, size, generator);
+        case PAL_CRYPTO_GENERATOR_ABORT:
+            generator = va_arg(valist, psa_crypto_generator_t*);
+            return psa_generator_abort(generator);
+        case PAL_CRYPTO_AEAD_ENCRYPT:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            nonce = va_arg(valist, const uint8_t *);
+            nonce_length = va_arg(valist, size_t);
+            additional_data = va_arg(valist, const uint8_t *);
+            additional_data_length = va_arg(valist, size_t);
+            plaintext = va_arg(valist, uint8_t *);
+            size = va_arg(valist, size_t);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_aead_encrypt(handle, alg, nonce, nonce_length, additional_data,
+                    additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
+        case PAL_CRYPTO_AEAD_DECRYPT:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            nonce = va_arg(valist, const uint8_t *);
+            nonce_length = va_arg(valist, size_t);
+            additional_data = va_arg(valist, const uint8_t *);
+            additional_data_length = va_arg(valist, size_t);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            plaintext = va_arg(valist, uint8_t *);
+            size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_aead_decrypt(handle, alg, nonce, nonce_length, additional_data,
+                    additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
+        case PAL_CRYPTO_MAC_SIGN_SETUP:
+            mac_operation = va_arg(valist, psa_mac_operation_t*);
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            return psa_mac_sign_setup(mac_operation, handle, alg);
+        case PAL_CRYPTO_MAC_UPDATE:
+            mac_operation = va_arg(valist, psa_mac_operation_t*);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            return psa_mac_update(mac_operation, buffer, size);
+        case PAL_CRYPTO_MAC_SIGN_FINISH:
+            mac_operation = va_arg(valist, psa_mac_operation_t*);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            length = (size_t *)va_arg(valist, size_t*);
+            return psa_mac_sign_finish(mac_operation, buffer, size, length);
+        case PAL_CRYPTO_MAC_VERIFY_SETUP:
+            mac_operation = va_arg(valist, psa_mac_operation_t*);
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            return psa_mac_verify_setup(mac_operation, handle, alg);
+        case PAL_CRYPTO_MAC_VERIFY_FINISH:
+            mac_operation = va_arg(valist, psa_mac_operation_t*);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            return psa_mac_verify_finish(mac_operation, buffer, size);
+        case PAL_CRYPTO_MAC_ABORT:
+            mac_operation = va_arg(valist, psa_mac_operation_t*);
+            return psa_mac_abort(mac_operation);
+        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            plaintext = va_arg(valist, uint8_t *);
+            size = va_arg(valist, size_t);
+            salt = va_arg(valist, const uint8_t *);
+            salt_length = va_arg(valist, size_t);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_asymmetric_encrypt(handle, alg, plaintext, size, salt, salt_length,
+                    ciphertext, ciphertext_size, length);
+        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            plaintext = va_arg(valist, uint8_t *);
+            size = va_arg(valist, size_t);
+            salt = va_arg(valist, const uint8_t *);
+            salt_length = va_arg(valist, size_t);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_asymmetric_decrypt(handle, alg, plaintext, size, salt, salt_length,
+                    ciphertext, ciphertext_size, length);
+        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
+            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            return psa_cipher_encrypt_setup(cipher_operation, handle, alg);
+        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
+            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            return psa_cipher_decrypt_setup(cipher_operation, handle, alg);
+        case PAL_CRYPTO_CIPHER_GENERATE_IV:
+            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
+        case PAL_CRYPTO_CIPHER_SET_IV:
+            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            return psa_cipher_set_iv(cipher_operation, buffer, size);
+        case PAL_CRYPTO_CIPHER_UPDATE:
+            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
+            plaintext = va_arg(valist, uint8_t *);
+            size = va_arg(valist, size_t);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
+                                     length);
+        case PAL_CRYPTO_CIPHER_FINISH:
+            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
+        case PAL_CRYPTO_CIPHER_ABORT:
+            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
+            return psa_cipher_abort(cipher_operation);
+        case PAL_CRYPTO_ASYMMTERIC_SIGN:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            length = va_arg(valist, size_t*);
+            return psa_asymmetric_sign(handle, alg, buffer, size, ciphertext, ciphertext_size,
+                                       length);
+        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            alg = va_arg(valist, psa_algorithm_t);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            ciphertext = va_arg(valist, uint8_t *);
+            ciphertext_size = va_arg(valist, size_t);
+            return psa_asymmetric_verify(handle, alg, buffer, size, ciphertext, ciphertext_size);
+        case PAL_CRYPTO_KEY_AGREEMENT:
+            generator = va_arg(valist, psa_crypto_generator_t*);
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            buffer = va_arg(valist, uint8_t*);
+            size = va_arg(valist, size_t);
+            alg = va_arg(valist, psa_algorithm_t);
+            return psa_key_agreement(generator, handle, buffer, size, alg);
+        case PAL_CRYPTO_ALLOCATE_KEY:
+            key_handle = (psa_key_handle_t *)va_arg(valist, int*);
+            return psa_allocate_key(key_handle);
+        case PAL_CRYPTO_COPY_KEY:
+            handle = (psa_key_handle_t)va_arg(valist, int);
+            target_handle = (psa_key_handle_t)va_arg(valist, int);
+            policy = va_arg(valist, psa_key_policy_t*);
+            return psa_copy_key(handle, target_handle, policy);
+        case PAL_CRYPTO_FREE:
+            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
+                psa_destroy_key(i);
+            return 0;
+        default:
+            return PAL_STATUS_UNSUPPORTED_FUNC;
+    }
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.h
new file mode 100644
index 0000000..d1dabfa
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.h
@@ -0,0 +1,76 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_CRYPTO_H_
+#define _PAL_CRYPTO_H_
+
+#include "pal_common.h"
+
+enum crypto_function_code {
+    PAL_CRYPTO_INIT                     = 0x1,
+    PAL_CRYPTO_GENERATE_RANDOM          = 0x2,
+    PAL_CRYPTO_IMPORT_KEY               = 0x3,
+    PAL_CRYPTO_EXPORT_KEY               = 0x4,
+    PAL_CRYPTO_EXPORT_PUBLIC_KEY        = 0x5,
+    PAL_CRYPTO_DESTROY_KEY              = 0x6,
+    PAL_CRYPTO_GET_KEY_INFO             = 0x7,
+    PAL_CRYPTO_KEY_POLICY_INIT          = 0x8,
+    PAL_CRYPTO_KEY_POLICY_SET_USAGE     = 0x9,
+    PAL_CRYPTO_KEY_POLICY_GET_USAGE     = 0xA,
+    PAL_CRYPTO_KEY_POLICY_GET_ALGORITHM = 0xB,
+    PAL_CRYPTO_SET_KEY_POLICY           = 0xC,
+    PAL_CRYPTO_GET_KEY_POLICY           = 0xD,
+    PAL_CRYPTO_GET_KEY_INFORMATION      = 0xE,
+    PAL_CRYPTO_GET_KEY_LIFETIME         = 0xF,
+    PAL_CRYPTO_HASH_SETUP               = 0x11,
+    PAL_CRYPTO_HASH_UPDATE              = 0x12,
+    PAL_CRYPTO_HASH_VERIFY              = 0x13,
+    PAL_CRYPTO_HASH_FINISH              = 0x14,
+    PAL_CRYPTO_HASH_ABORT               = 0x15,
+    PAL_CRYPTO_GENERATE_KEY             = 0x16,
+    PAL_CRYPTO_GENERATOR_READ           = 0x17,
+    PAL_CRYPTO_KEY_DERIVATION           = 0x18,
+    PAL_CRYPTO_GET_GENERATOR_CAPACITY   = 0x19,
+    PAL_CRYPTO_GENERATOR_IMPORT_KEY     = 0x1A,
+    PAL_CRYPTO_GENERATOR_ABORT          = 0x1B,
+    PAL_CRYPTO_AEAD_ENCRYPT             = 0x1C,
+    PAL_CRYPTO_AEAD_DECRYPT             = 0x1D,
+    PAL_CRYPTO_MAC_SIGN_SETUP           = 0x1E,
+    PAL_CRYPTO_MAC_UPDATE               = 0x1F,
+    PAL_CRYPTO_MAC_SIGN_FINISH          = 0x20,
+    PAL_CRYPTO_MAC_VERIFY_SETUP         = 0x21,
+    PAL_CRYPTO_MAC_VERIFY_FINISH        = 0x22,
+    PAL_CRYPTO_MAC_ABORT                = 0x23,
+    PAL_CRYPTO_ASYMMTERIC_ENCRYPT       = 0x24,
+    PAL_CRYPTO_ASYMMTERIC_DECRYPT       = 0x25,
+    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP     = 0x26,
+    PAL_CRYPTO_CIPHER_DECRYPT_SETUP     = 0x2A,
+    PAL_CRYPTO_CIPHER_GENERATE_IV       = 0x2B,
+    PAL_CRYPTO_CIPHER_SET_IV            = 0x2C,
+    PAL_CRYPTO_CIPHER_UPDATE            = 0x2D,
+    PAL_CRYPTO_CIPHER_FINISH            = 0x2E,
+    PAL_CRYPTO_CIPHER_ABORT             = 0x2F,
+    PAL_CRYPTO_ASYMMTERIC_SIGN          = 0x30,
+    PAL_CRYPTO_ASYMMTERIC_VERIFY        = 0x31,
+    PAL_CRYPTO_KEY_AGREEMENT            = 0x32,
+    PAL_CRYPTO_ALLOCATE_KEY             = 0x33,
+    PAL_CRYPTO_COPY_KEY                 = 0x34,
+    PAL_CRYPTO_FREE                     = 0xFE,
+};
+
+int32_t pal_crypto_function(int type, va_list valist);
+#endif /* _PAL_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.c
new file mode 100644
index 0000000..ae2bdba
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.c
@@ -0,0 +1,346 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "pal_attestation_crypto.h"
+
+static uint32_t  public_key_registered = 0;
+
+static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
+                                                  size_t amount)
+{
+    return UsefulBuf_Head(buf, amount);
+}
+
+static uint32_t check_hash_sizes(void)
+{
+    if (T_COSE_CRYPTO_SHA256_SIZE != PSA_HASH_SIZE(PSA_ALG_SHA_256))
+    {
+        return PAL_ATTEST_HASH_FAIL;
+    }
+
+    return PAL_ATTEST_SUCCESS;
+}
+
+static psa_ecc_curve_t attest_map_elliptic_curve_type(int32_t cose_curve)
+{
+    psa_ecc_curve_t psa_curve;
+
+    /*FixMe: Mapping is not complete, missing ones: P384, P521, ED25519, ED448 */
+    switch (cose_curve)
+    {
+    case P_256:
+        psa_curve = PSA_ECC_CURVE_SECP256R1;
+        break;
+    default:
+        psa_curve = USHRT_MAX;
+    }
+
+    return psa_curve;
+}
+
+static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
+{
+    psa_algorithm_t status;
+
+    switch (cose_hash_alg_id)
+    {
+    case COSE_ALG_SHA256_PROPRIETARY:
+        status = PSA_ALG_SHA_256;
+        break;
+    default:
+        status = PSA_ALG_MD4;
+        break;
+    }
+
+    return status;
+}
+
+static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
+{
+    switch (cose_sig_alg_id)
+    {
+        case COSE_ALGORITHM_ES256:
+            return COSE_ALG_SHA256_PROPRIETARY;
+        default:
+            return INT32_MAX;
+    }
+}
+
+int32_t pal_cose_crypto_hash_start(struct pal_cose_crypto_hash *hash_ctx, int32_t cose_hash_alg_id)
+{
+    int32_t                          cose_ret = PAL_ATTEST_SUCCESS;
+    psa_status_t                     psa_ret;
+    struct pal_cose_psa_crypto_hash *psa_hash_ctx;
+
+    cose_ret = check_hash_sizes();
+    if (cose_ret)
+    {
+        goto error;
+    }
+
+    if (sizeof(struct pal_cose_crypto_hash) < sizeof(struct pal_cose_psa_crypto_hash))
+    {
+        cose_ret = PAL_ATTEST_HASH_FAIL;
+        goto error;
+    }
+
+    psa_hash_ctx = (struct pal_cose_psa_crypto_hash *)hash_ctx;
+    psa_ret = psa_hash_setup(&psa_hash_ctx->operation, cose_hash_alg_id_to_psa(cose_hash_alg_id));
+
+    if (psa_ret == PAL_ATTEST_SUCCESS)
+    {
+        psa_hash_ctx->status = PAL_ATTEST_SUCCESS;
+        cose_ret = PAL_ATTEST_SUCCESS;
+    }
+    else if (psa_ret == PSA_ERROR_NOT_SUPPORTED)
+    {
+        cose_ret = PAL_ATTEST_HASH_UNSUPPORTED;
+    }
+    else
+    {
+        cose_ret = PAL_ATTEST_HASH_FAIL;
+    }
+
+error:
+    return cose_ret;
+}
+
+void pal_cose_crypto_hash_update(struct pal_cose_crypto_hash *hash_ctx,
+                                 struct q_useful_buf_c data_to_hash)
+{
+    struct pal_cose_psa_crypto_hash *psa_hash_ctx;
+
+    if (sizeof(struct pal_cose_crypto_hash) < sizeof(struct pal_cose_psa_crypto_hash))
+    {
+        return;
+    }
+
+    psa_hash_ctx = (struct pal_cose_psa_crypto_hash *)hash_ctx;
+
+    if (psa_hash_ctx->status == PAL_ATTEST_SUCCESS)
+    {
+        if (data_to_hash.ptr != NULL)
+        {
+            psa_hash_ctx->status = psa_hash_update(&psa_hash_ctx->operation,
+                                                   data_to_hash.ptr,
+                                                   data_to_hash.len);
+        }
+        else
+        {
+            /* Intentionally do nothing, just computing the size of the token */
+        }
+    }
+}
+
+int32_t pal_cose_crypto_hash_finish(struct pal_cose_crypto_hash *hash_ctx,
+                                    struct q_useful_buf buffer_to_hold_result,
+                                    struct q_useful_buf_c *hash_result)
+{
+    uint32_t                         cose_ret = PAL_ATTEST_SUCCESS;
+    psa_status_t                     psa_ret;
+    struct pal_cose_psa_crypto_hash *psa_hash_ctx;
+
+    if (sizeof(struct pal_cose_crypto_hash) < sizeof(struct pal_cose_psa_crypto_hash))
+    {
+        cose_ret = PAL_ATTEST_HASH_FAIL;
+        goto error;
+    }
+
+    psa_hash_ctx = (struct pal_cose_psa_crypto_hash *)hash_ctx;
+
+    if (psa_hash_ctx->status == PAL_ATTEST_SUCCESS)
+    {
+        psa_ret = psa_hash_finish(&psa_hash_ctx->operation,
+                                  buffer_to_hold_result.ptr,
+                                  buffer_to_hold_result.len,
+                                  &(hash_result->len));
+
+        if (psa_ret == PAL_ATTEST_SUCCESS)
+        {
+            hash_result->ptr = buffer_to_hold_result.ptr;
+            cose_ret = 0;
+        }
+        else if (psa_ret == PSA_ERROR_BUFFER_TOO_SMALL)
+        {
+            cose_ret = PAL_ATTEST_HASH_BUFFER_SIZE;
+        }
+        else
+        {
+            cose_ret = PAL_ATTEST_HASH_FAIL;
+        }
+    }
+    else
+    {
+        cose_ret = PAL_ATTEST_HASH_FAIL;
+    }
+
+error:
+    return cose_ret;
+}
+
+int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
+                      struct q_useful_buf_c *hash)
+{
+    uint32_t                      status = PAL_ATTEST_SUCCESS;
+    struct pal_cose_crypto_hash   hash_ctx;
+
+    status = pal_cose_crypto_hash_start(&hash_ctx, COSE_ALG_SHA256_PROPRIETARY);
+    if (status)
+        return status;
+
+    pal_cose_crypto_hash_update(&hash_ctx, bytes_to_hash);
+    status = pal_cose_crypto_hash_finish(&hash_ctx, buffer_for_hash, hash);
+
+    return status;
+}
+
+uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
+                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
+                          struct q_useful_buf_c payload)
+{
+    uint32_t                    status;
+    QCBOREncodeContext          cbor_encode_ctx;
+    struct q_useful_buf_c       tbs_first_part;
+    QCBORError                  qcbor_result;
+    struct pal_cose_crypto_hash hash_ctx = {{0}};
+    int32_t                     hash_alg_id;
+    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
+
+    /* This builds the CBOR-format to-be-signed bytes */
+    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
+    QCBOREncode_OpenArray(&cbor_encode_ctx);
+    /* context */
+    QCBOREncode_AddSZString(&cbor_encode_ctx,
+                            COSE_SIG_CONTEXT_STRING_SIGNATURE1);
+    /* body_protected */
+    QCBOREncode_AddBytes(&cbor_encode_ctx,
+                         protected_headers);
+    /* sign_protected */
+    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
+    /* external_aad */
+    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
+    /* fake payload */
+    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
+    QCBOREncode_CloseArray(&cbor_encode_ctx);
+
+    /* Get the result and convert it to struct q_useful_buf_c representation */
+    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
+    if (qcbor_result)
+    {
+        /* Mainly means that the protected_headers were too big
+         (which should never happen) */
+        status = PAL_ATTEST_ERR_SIGN_STRUCT;
+        goto Done;
+    }
+
+    /* Start the hashing */
+    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
+
+    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
+     * will handle it properly
+     */
+    status = pal_cose_crypto_hash_start(&hash_ctx, hash_alg_id);
+    if (status)
+        goto Done;
+
+    /* Hash the first part of the TBS. Take all but the last two
+     * bytes. The last two bytes are the fake payload from above. It
+     * is replaced by the real payload which is hashed next. The fake
+     * payload is needed so the array count is right. This is one of
+     * the main things that make it possible to implement with one
+     * buffer for the whole cose sign1.
+     */
+    pal_cose_crypto_hash_update(&hash_ctx, useful_buf_head(tbs_first_part,
+                                              tbs_first_part.len - 2));
+
+    /* Hash the payload */
+    pal_cose_crypto_hash_update(&hash_ctx, payload);
+
+    /* Finish the hash and set up to return it */
+    status = pal_cose_crypto_hash_finish(&hash_ctx,
+                                             buffer_for_hash,
+                                             hash);
+
+Done:
+    return status;
+}
+
+uint32_t pal_import_attest_key(int32_t alg)
+{
+    psa_key_type_t   attest_key_type;
+    size_t           public_key_size;
+    psa_status_t     status = PSA_SUCCESS;
+    psa_key_policy_t policy;
+    psa_ecc_curve_t  psa_curve;
+    psa_key_handle_t public_key_handle;
+
+    /* Mapping of COSE curve type to PSA curve types */
+    psa_curve = attest_map_elliptic_curve_type(P_256);
+    if (psa_curve == USHRT_MAX)
+        return PAL_ATTEST_ERROR;
+
+    /* Setup the key policy for public key */
+    policy = psa_key_policy_init();
+    psa_key_policy_set_usage(&policy, PSA_KEY_USAGE_VERIFY, alg);
+
+    status = psa_allocate_key(&public_key_handle);
+    if (status != PSA_SUCCESS)
+        return status;
+
+    status = psa_set_key_policy(public_key_handle, &policy);
+    if (status != PSA_SUCCESS)
+        return status;
+
+    attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(psa_curve);
+
+    /* Register public key to crypto service */
+    public_key_size = attest_key.pubx_key_size + attest_key.puby_key_size;
+
+    status = psa_import_key(public_key_handle,
+                                attest_key_type,
+                                (const uint8_t *)&attest_public_key,
+                                public_key_size + 1);
+
+    return status;
+}
+
+
+uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
+                                   struct q_useful_buf_c token_hash,
+                                   struct q_useful_buf_c signature)
+{
+    uint32_t status = PAL_ATTEST_SUCCESS;
+
+    if (!public_key_registered)
+    {
+        status = pal_import_attest_key(cose_algorithm_id);
+        if (status != PAL_ATTEST_SUCCESS)
+            return status;
+
+        public_key_registered = 1;
+    }
+
+/*
+ * Enable the verify function when Trusted Firmare - M Supports
+
+ *  Verify the signature a hash or short message using a public key.
+    status = psa_asymmetric_verify(public_key_handle,
+                                    cose_algorithm_id, token_hash.ptr, token_hash.len,
+                                    signature.ptr, signature.len);
+*/
+    return status;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.h
new file mode 100644
index 0000000..2d63ad1
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.h
@@ -0,0 +1,102 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "pal_common.h"
+#include "pal_attestation_eat.h"
+
+#define ATTEST_PUBLIC_KEY_SLOT            4
+
+typedef struct{
+    uint8_t  *pubx_key;
+    uint32_t  pubx_key_size;
+    uint8_t  *puby_key;
+    uint32_t  puby_key_size;
+} ecc_key_t;
+
+struct ecc_public_key_t {
+    const uint8_t a;
+    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
+};
+
+static const struct ecc_public_key_t attest_public_key = {
+     /* Constant byte */
+     0x04,
+     /* X-coordinate */
+     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
+      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
+      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
+      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
+     /* Y-coordinate */
+      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
+      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
+      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
+      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
+};
+
+struct pal_cose_crypto_hash {
+    /* Can't put the actual size here without creating dependecy on
+     * actual hash implementation, so this is a fairly large and
+     * accommodating size.
+     */
+    uint8_t bytes[128];
+};
+
+struct pal_cose_psa_crypto_hash {
+    psa_status_t         status;
+    psa_hash_operation_t operation;
+};
+
+static const uint8_t initial_attestation_public_x_key[] =
+{
+    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
+    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
+    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
+    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
+};
+
+static const uint8_t initial_attestation_public_y_key[] =
+{
+    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
+    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
+    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
+    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
+};
+
+/* Initialize the structure with given public key */
+static const ecc_key_t attest_key = {
+        (uint8_t *)initial_attestation_public_x_key,
+        sizeof(initial_attestation_public_x_key),
+        (uint8_t *)initial_attestation_public_y_key,
+        sizeof(initial_attestation_public_y_key)
+};
+
+int32_t pal_cose_crypto_hash_start(struct pal_cose_crypto_hash *hash_ctx, int32_t cose_hash_alg_id);
+void pal_cose_crypto_hash_update(struct pal_cose_crypto_hash *hash_ctx,
+                                 struct q_useful_buf_c data_to_hash);
+int32_t pal_cose_crypto_hash_finish(struct pal_cose_crypto_hash *hash_ctx,
+                                    struct q_useful_buf buffer_to_hold_result,
+                                    struct q_useful_buf_c *hash_result);
+int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
+                      struct q_useful_buf_c *hash);
+uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
+                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
+                          struct q_useful_buf_c payload);
+uint32_t pal_import_attest_key(int32_t alg);
+uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
+                                   struct q_useful_buf_c signature);
+
+
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.c
new file mode 100644
index 0000000..178fdc9
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.c
@@ -0,0 +1,491 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "pal_attestation_crypto.h"
+
+uint32_t    mandatory_claims = 0;
+uint32_t    mandaroty_sw_components = 0;
+bool_t      sw_component_present = 0;
+
+static int pal_encode_cose_key(struct q_useful_buf_c *cose_key,
+                               struct q_useful_buf buffer_for_cose_key,
+                               struct q_useful_buf_c x_cord, struct q_useful_buf_c y_cord)
+{
+    uint32_t                  return_value;
+    QCBORError                qcbor_result;
+    QCBOREncodeContext        cbor_encode_ctx;
+    int32_t                   cose_curve_id = P_256;
+    struct q_useful_buf_c       encoded_key_id;
+
+    /* Get the public key x and y */
+    /* Encode it into a COSE_Key structure */
+    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_cose_key);
+    QCBOREncode_OpenMap(&cbor_encode_ctx);
+    QCBOREncode_AddInt64ToMapN(&cbor_encode_ctx,
+                               COSE_KEY_COMMON_KTY,
+                               COSE_KEY_TYPE_EC2);
+    QCBOREncode_AddInt64ToMapN(&cbor_encode_ctx,
+                               COSE_KEY_PARAM_CRV,
+                               cose_curve_id);
+    QCBOREncode_AddBytesToMapN(&cbor_encode_ctx,
+                               COSE_KEY_PARAM_X_COORDINATE,
+                               x_cord);
+    QCBOREncode_AddBytesToMapN(&cbor_encode_ctx,
+                               COSE_KEY_PARAM_Y_COORDINATE,
+                               y_cord);
+    QCBOREncode_CloseMap(&cbor_encode_ctx);
+
+    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &encoded_key_id);
+    if (qcbor_result != QCBOR_SUCCESS)
+    {
+        /* Mainly means that the COSE_Key was too big for buffer_for_cose_key */
+        return_value = PAL_ATTEST_ERR_PROTECTED_HEADERS;
+        goto Done;
+    }
+
+    /* Finish up and return */
+    *cose_key = encoded_key_id;
+    return_value = PAL_ATTEST_SUCCESS;
+
+Done:
+    return return_value;
+}
+
+
+static int get_items_in_map(QCBORDecodeContext *decode_context,
+                            struct items_to_get_t *item_list)
+{
+    int                     item_index;
+    QCBORItem               item;
+    struct items_to_get_t  *item_ptr = item_list;
+
+    /* initialize the data type of all items in the list */
+    while (item_ptr->label != 0)
+    {
+        item_ptr->item.uDataType = QCBOR_TYPE_NONE;
+        item_ptr++;
+    }
+
+    QCBORDecode_GetNext(decode_context, &item);
+    if (item.uDataType != QCBOR_TYPE_MAP)
+    {
+        return PAL_ATTEST_ERROR;
+    }
+
+    for (item_index = item.val.uCount; item_index != 0; item_index--)
+    {
+        if (QCBORDecode_GetNext(decode_context, &item) != QCBOR_SUCCESS)
+        {
+            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+        }
+        if (item.uLabelType != QCBOR_TYPE_INT64)
+        {
+            continue;
+        }
+
+        item_ptr = item_list;
+        while (item_ptr->label != 0)
+        {
+            if (item.label.int64 == item_ptr->label)
+            {
+                item_ptr->item = item;
+            }
+            item_ptr++;
+        }
+    }
+
+    return PAL_ATTEST_SUCCESS;
+}
+
+static int get_item_in_map(QCBORDecodeContext *decode_context,
+                           int32_t label,
+                           QCBORItem *item)
+{
+    struct items_to_get_t   item_list[2];
+
+    item_list[0].label = label;
+    item_list[1].label = 0;
+
+    if (get_items_in_map(decode_context, item_list))
+    {
+        return PAL_ATTEST_ERROR;
+    }
+
+    if (item_list[0].item.uDataType == QCBOR_TYPE_NONE)
+    {
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+    }
+
+    *item = item_list[0].item;
+
+    return PAL_ATTEST_SUCCESS;
+}
+
+static int parse_unprotected_headers(QCBORDecodeContext *decode_context,
+                                     struct q_useful_buf_c *child,
+                                     bool *loop_back)
+{
+    struct items_to_get_t   item_list[3];
+
+    item_list[0].label = COSE_HEADER_PARAM_KID;
+    item_list[1].label = T_COSE_SHORT_CIRCUIT_LABEL;
+    item_list[2].label = 0;
+    *loop_back = false;
+
+    if (get_items_in_map(decode_context, item_list))
+    {
+        return PAL_ATTEST_ERROR;
+    }
+
+    if (item_list[1].item.uDataType == QCBOR_TYPE_TRUE)
+    {
+        *loop_back = true;
+    }
+
+    if (item_list[0].item.uDataType != QCBOR_TYPE_BYTE_STRING)
+    {
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+    }
+
+    *child = item_list[0].item.val.string;
+
+    return PAL_ATTEST_SUCCESS;
+}
+
+static int parse_protected_headers(struct q_useful_buf_c protected_headers,
+                                   int32_t *alg_id)
+{
+    QCBORDecodeContext  decode_context;
+    QCBORItem           item;
+
+    QCBORDecode_Init(&decode_context, protected_headers, 0);
+
+    if (get_item_in_map(&decode_context, COSE_HEADER_PARAM_ALG, &item))
+    {
+        return PAL_ATTEST_ERROR;
+    }
+
+    if (QCBORDecode_Finish(&decode_context))
+    {
+        return PAL_ATTEST_ERROR;
+    }
+
+    if ((item.uDataType != QCBOR_TYPE_INT64) || (item.val.int64 > INT32_MAX))
+    {
+        return PAL_ATTEST_ERROR;
+    }
+
+    *alg_id = (int32_t)item.val.int64;
+
+    return PAL_ATTEST_SUCCESS;
+}
+
+/**
+    @brief    - This API will verify the claims
+    @param    - decode_context      : The buffer containing the challenge
+                item                : context for decoding the data items
+                completed_challenge : Buffer containing the challenge
+    @return   - error status
+**/
+static int parse_claims(QCBORDecodeContext *decode_context, QCBORItem item,
+                                   struct q_useful_buf_c completed_challenge)
+{
+    int i, count = 0;
+    int status = PAL_ATTEST_SUCCESS;
+
+    /* Parse each claim and validate their data type */
+    while (status == PAL_ATTEST_SUCCESS)
+    {
+        status = QCBORDecode_GetNext(decode_context, &item);
+        if (status != PAL_ATTEST_SUCCESS)
+            break;
+
+        mandatory_claims |= 1 << (EAT_CBOR_ARM_RANGE_BASE - item.label.int64);
+        if (item.uLabelType == QCBOR_TYPE_INT64)
+        {
+            if (item.label.int64 == EAT_CBOR_ARM_LABEL_NONCE)
+            {
+                if (item.uDataType == QCBOR_TYPE_BYTE_STRING)
+                {
+                    /* Given challenge vs challenge in token */
+                    if (UsefulBuf_Compare(item.val.string, completed_challenge))
+                        return PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH;
+                }
+                else
+                    return PAL_ATTEST_TOKEN_NOT_SUPPORTED;
+            }
+            else if (item.label.int64 == EAT_CBOR_ARM_LABEL_BOOT_SEED ||
+                     item.label.int64 == EAT_CBOR_ARM_LABEL_IMPLEMENTATION_ID ||
+                     item.label.int64 == EAT_CBOR_ARM_LABEL_UEID)
+            {
+                if (item.uDataType != QCBOR_TYPE_BYTE_STRING)
+                    return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+            }
+            else if (item.label.int64 == EAT_CBOR_ARM_LABEL_ORIGINATION ||
+                     item.label.int64 == EAT_CBOR_ARM_LABEL_PROFILE_DEFINITION ||
+                     item.label.int64 == EAT_CBOR_ARM_LABEL_HW_VERSION)
+            {
+                if (item.uDataType != QCBOR_TYPE_TEXT_STRING)
+                    return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+            }
+            else if (item.label.int64 == EAT_CBOR_ARM_LABEL_CLIENT_ID ||
+                     item.label.int64 == EAT_CBOR_ARM_LABEL_SECURITY_LIFECYCLE)
+            {
+                if (item.uDataType != QCBOR_TYPE_INT64)
+                    return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+            }
+            else if (item.label.int64 == EAT_CBOR_ARM_LABEL_SW_COMPONENTS)
+            {
+                if (item.uDataType != QCBOR_TYPE_ARRAY)
+                    return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+
+                sw_component_present = 1;
+                status = QCBORDecode_GetNext(decode_context, &item);
+                if (status != PAL_ATTEST_SUCCESS)
+                    continue;
+
+                count = item.val.uCount;
+                for (i = 0; i <= count; i++)
+                {
+                    mandaroty_sw_components |= 1 << item.label.int64;
+
+                    if (item.label.int64 == EAT_CBOR_SW_COMPONENT_MEASUREMENT)
+                    {
+                         if (item.uDataType != QCBOR_TYPE_BYTE_STRING)
+                            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+                    }
+                    else if (item.label.int64 == EAT_CBOR_SW_COMPONENT_MEASUREMENT_DESC)
+                    {
+                        if (item.uDataType != QCBOR_TYPE_TEXT_STRING)
+                            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+                    }
+                    else if (item.label.int64 == EAT_CBOR_SW_COMPONENT_VERSION)
+                    {
+                        if (item.uDataType != QCBOR_TYPE_TEXT_STRING)
+                            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+                    }
+                    else if (item.label.int64 == EAT_CBOR_SW_COMPONENT_SIGNER_ID)
+                    {
+                        if (item.uDataType != QCBOR_TYPE_BYTE_STRING)
+                            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+                    }
+                    else if (item.label.int64 == EAT_CBOR_SW_COMPONENT_EPOCH)
+                    {
+                        if (item.uDataType != QCBOR_TYPE_INT64)
+                            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+                    }
+                    else if (item.label.int64 == EAT_CBOR_SW_COMPONENT_TYPE)
+                    {
+                        if (item.uDataType != QCBOR_TYPE_TEXT_STRING)
+                            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+                    }
+
+                    if (i < count)
+                    {
+                        status = QCBORDecode_GetNext(decode_context, &item);
+                        if (status != PAL_ATTEST_SUCCESS)
+                            return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+                    }
+                }
+
+            }
+        }
+        else
+        {
+            /* ToDo: Add other claim types */
+        }
+    }
+
+    if (status == QCBOR_ERR_HIT_END)
+        return PAL_ATTEST_SUCCESS;
+    else
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+}
+
+/**
+    @brief    - This API will verify the attestation token
+    @param    - challenge       : The buffer containing the challenge
+                challenge_size  : Size of the challenge buffer
+                token           : The buffer containing the attestation token
+                token_size      : Size of the token buffer
+    @return   - error status
+**/
+int32_t pal_initial_attest_verify_token(uint8_t *challenge, uint32_t challenge_size,
+                                        uint8_t *token, uint32_t token_size)
+{
+    int32_t             status = PAL_ATTEST_SUCCESS;
+    bool                short_circuit;
+    int32_t             cose_algorithm_id;
+    QCBORItem           item;
+    QCBORDecodeContext  decode_context;
+    struct q_useful_buf_c completed_challenge;
+    struct q_useful_buf_c completed_token;
+    struct q_useful_buf_c payload;
+    struct q_useful_buf_c signature;
+    struct q_useful_buf_c protected_headers;
+    struct q_useful_buf_c kid;
+    struct q_useful_buf_c x_cord;
+    struct q_useful_buf_c y_cord;
+    struct q_useful_buf_c cose_key_to_hash;
+    struct q_useful_buf_c key_hash;
+    struct q_useful_buf_c token_hash;
+    USEFUL_BUF_MAKE_STACK_UB(buf_to_hold_x_coord, T_COSE_CRYPTO_EC_P256_COORD_SIZE);
+    USEFUL_BUF_MAKE_STACK_UB(buf_to_hold_y_coord, T_COSE_CRYPTO_EC_P256_COORD_SIZE);
+    USEFUL_BUF_MAKE_STACK_UB(buffer_for_kid, T_COSE_CRYPTO_SHA256_SIZE);
+    USEFUL_BUF_MAKE_STACK_UB(buffer_for_cose_key, MAX_ENCODED_COSE_KEY_SIZE);
+    USEFUL_BUF_MAKE_STACK_UB(buffer_for_encoded_key, MAX_ENCODED_COSE_KEY_SIZE);
+    USEFUL_BUF_MAKE_STACK_UB(buffer_for_token_hash, T_COSE_CRYPTO_SHA256_SIZE);
+
+    kid.ptr = buffer_for_encoded_key.ptr;
+
+    memcpy(buf_to_hold_x_coord.ptr, (const void *)attest_key.pubx_key, attest_key.pubx_key_size);
+    memcpy(buf_to_hold_y_coord.ptr, (const void *)attest_key.puby_key, attest_key.puby_key_size);
+
+    /* Update size */
+    buf_to_hold_x_coord.len = attest_key.pubx_key_size;
+    buf_to_hold_y_coord.len = attest_key.puby_key_size;
+
+    x_cord.ptr = buf_to_hold_x_coord.ptr;
+    x_cord.len = buf_to_hold_x_coord.len;
+    y_cord.ptr = buf_to_hold_y_coord.ptr;
+    y_cord.len = buf_to_hold_y_coord.len;
+
+    /* Construct the token buffer for validation */
+    completed_token.ptr = token;
+    completed_token.len = token_size;
+
+    /* Construct the challenge buffer for validation */
+    completed_challenge.ptr = challenge;
+    completed_challenge.len = challenge_size;
+
+/*
+    -------------------------
+    |  CBOR Array Type      |
+    -------------------------
+    |  Protected Headers    |
+    -------------------------
+    |  Unprotected Headers  |
+    -------------------------
+    |  Payload              |
+    -------------------------
+    |  Signature            |
+    -------------------------
+*/
+
+    /* Initialize the decorder */
+    QCBORDecode_Init(&decode_context, completed_token, QCBOR_DECODE_MODE_NORMAL);
+
+    /* Get the Header */
+    QCBORDecode_GetNext(&decode_context, &item);
+
+    /* Check the CBOR Array type. Check if the count is 4.
+     * Only COSE_SIGN1 is supported now.
+     */
+    if (item.uDataType != QCBOR_TYPE_ARRAY || item.val.uCount != 4 ||
+       !QCBORDecode_IsTagged(&decode_context, &item, CBOR_TAG_COSE_SIGN1))
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+
+    /* Get the next headers */
+    QCBORDecode_GetNext(&decode_context, &item);
+    if (item.uDataType != QCBOR_TYPE_BYTE_STRING)
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+
+    protected_headers = item.val.string;
+
+    /* Parse the protected headers and check the data type and value*/
+    status = parse_protected_headers(protected_headers, &cose_algorithm_id);
+    if (status != PAL_ATTEST_SUCCESS)
+        return status;
+
+    /* Parse the unprotected headers and check the data type and value */
+    short_circuit = false;
+    status = parse_unprotected_headers(&decode_context, &kid, &short_circuit);
+    if (status != PAL_ATTEST_SUCCESS)
+        return status;
+
+    /* Encode the given public key */
+    status = pal_encode_cose_key(&cose_key_to_hash, buffer_for_cose_key, x_cord, y_cord);
+    if (status != PAL_ATTEST_SUCCESS)
+        return status;
+
+    /* Create hash of the given public key */
+    status = pal_create_sha256(cose_key_to_hash, buffer_for_kid, &key_hash);
+    if (status != PSA_SUCCESS)
+        return status;
+
+    /* Compare the hash of the public key in token and hash of the given public key */
+    if (kid.len != key_hash.len)
+    {
+        return PAL_ATTEST_HASH_LENGTH_MISMATCH;
+    }
+
+    if (memcmp(kid.ptr, key_hash.ptr, kid.len) != 0)
+    {
+        return PAL_ATTEST_HASH_MISMATCH;
+    }
+
+    /* Get the payload */
+    QCBORDecode_GetNext(&decode_context, &item);
+    if (item.uDataType != QCBOR_TYPE_BYTE_STRING)
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+
+    payload = item.val.string;
+
+    /* Get the digital signature */
+    QCBORDecode_GetNext(&decode_context, &item);
+    if (item.uDataType != QCBOR_TYPE_BYTE_STRING)
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+
+    signature = item.val.string;
+
+    /* Compute the hash from the token */
+    status = pal_compute_hash(cose_algorithm_id, buffer_for_token_hash, &token_hash,
+                              protected_headers, payload);
+    if (status != PAL_ATTEST_SUCCESS)
+        return status;
+
+    /* Verify the signature */
+    status = pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
+    if (status != PAL_ATTEST_SUCCESS)
+        return status;
+
+    /* Initialize the Decoder and validate the payload format */
+    QCBORDecode_Init(&decode_context, payload, QCBOR_DECODE_MODE_NORMAL);
+    status = QCBORDecode_GetNext(&decode_context, &item);
+    if (status != PAL_ATTEST_SUCCESS)
+        return status;
+
+    if (item.uDataType != QCBOR_TYPE_MAP)
+        return PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING;
+
+    /* Parse the payload and check the data type of each claim */
+    status = parse_claims(&decode_context, item, completed_challenge);
+    if (status != PAL_ATTEST_SUCCESS)
+        return status;
+
+    if ((mandatory_claims & MANDATORY_CLAIM_WITH_SW_COMP) == MANDATORY_CLAIM_WITH_SW_COMP)
+    {
+        if ((mandaroty_sw_components & MANDATORY_SW_COMP) != MANDATORY_SW_COMP)
+            return PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS;
+    }
+    else if ((mandatory_claims & MANDATORY_CLAIM_NO_SW_COMP) != MANDATORY_CLAIM_NO_SW_COMP)
+    {
+        return PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS;
+    }
+
+    return PAL_ATTEST_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.h
new file mode 100644
index 0000000..8a0c545
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.h
@@ -0,0 +1,170 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "qcbor.h"
+#include "pal_common.h"
+#include "psa/crypto.h"
+
+#define PAL_ATTEST_MIN_ERROR              30
+
+/* NIST P-256 also known as secp256r1 */
+#define P_256                             1
+
+#define COSE_HEADER_PARAM_ALG             1
+#define COSE_HEADER_PARAM_KID             4
+
+#define COSE_KEY_COMMON_KTY               1
+#define COSE_KEY_TYPE_EC2                 2
+#define COSE_KEY_PARAM_CRV               -1
+#define COSE_KEY_PARAM_X_COORDINATE      -2
+#define COSE_KEY_PARAM_Y_COORDINATE      -3
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+/**
+ * The size of X and Y coordinate in 2 parameter style EC public
+ * key. Format is as defined in [COSE (RFC 8152)]
+ * (https://tools.ietf.org/html/rfc8152) and [SEC 1: Elliptic Curve
+ * Cryptography](http://www.secg.org/sec1-v2.pdf).
+ *
+ * This size is well-known and documented in public standards.
+ */
+#define T_COSE_CRYPTO_EC_P256_COORD_SIZE  32
+#define T_COSE_CRYPTO_SHA256_SIZE         32
+
+#define MAX_ENCODED_COSE_KEY_SIZE \
+    1 + /* 1 byte to encode map */ \
+    2 + /* 2 bytes to encode key type */ \
+    2 + /* 2 bytes to encode curve */ \
+    2 * /* the X and Y coordinates at 32 bytes each */ \
+        (T_COSE_CRYPTO_EC_P256_COORD_SIZE + 1 + 2)
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * ( /* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    )
+
+/*
+ CBOR Label for proprietary header indicating short-circuit
+ signing was used. Just a random number in the proprietary
+ label space */
+#define T_COSE_SHORT_CIRCUIT_LABEL              (-8675309)
+
+#define EAT_CBOR_ARM_RANGE_BASE                 (-75000)
+#define EAT_CBOR_ARM_LABEL_PROFILE_DEFINITION   (EAT_CBOR_ARM_RANGE_BASE - 0)
+#define EAT_CBOR_ARM_LABEL_CLIENT_ID            (EAT_CBOR_ARM_RANGE_BASE - 1)
+#define EAT_CBOR_ARM_LABEL_SECURITY_LIFECYCLE   (EAT_CBOR_ARM_RANGE_BASE - 2)
+#define EAT_CBOR_ARM_LABEL_IMPLEMENTATION_ID    (EAT_CBOR_ARM_RANGE_BASE - 3)
+#define EAT_CBOR_ARM_LABEL_BOOT_SEED            (EAT_CBOR_ARM_RANGE_BASE - 4)
+#define EAT_CBOR_ARM_LABEL_HW_VERSION           (EAT_CBOR_ARM_RANGE_BASE - 5)
+#define EAT_CBOR_ARM_LABEL_SW_COMPONENTS        (EAT_CBOR_ARM_RANGE_BASE - 6)
+#define EAT_CBOR_ARM_LABEL_NO_SW_COMPONENTS     (EAT_CBOR_ARM_RANGE_BASE - 7)
+#define EAT_CBOR_ARM_LABEL_NONCE                (EAT_CBOR_ARM_RANGE_BASE - 8)
+#define EAT_CBOR_ARM_LABEL_UEID                 (EAT_CBOR_ARM_RANGE_BASE - 9)
+#define EAT_CBOR_ARM_LABEL_ORIGINATION          (EAT_CBOR_ARM_RANGE_BASE - 10)
+
+#define CBOR_ARM_TOTAL_CLAIM_INSTANCE           10
+
+#define EAT_CBOR_SW_COMPONENT_TYPE              (1u)
+#define EAT_CBOR_SW_COMPONENT_MEASUREMENT       (2u)
+#define EAT_CBOR_SW_COMPONENT_EPOCH             (3u)
+#define EAT_CBOR_SW_COMPONENT_VERSION           (4u)
+#define EAT_CBOR_SW_COMPONENT_SIGNER_ID         (5u)
+#define EAT_CBOR_SW_COMPONENT_MEASUREMENT_DESC  (6u)
+
+#define MANDATORY_CLAIM_WITH_SW_COMP           (1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_NONCE)              |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_UEID)               |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_IMPLEMENTATION_ID)  |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_CLIENT_ID)          |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_SECURITY_LIFECYCLE) |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_BOOT_SEED)          |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_SW_COMPONENTS))
+
+#define MANDATORY_CLAIM_NO_SW_COMP             (1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_NONCE)              |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_UEID)               |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_IMPLEMENTATION_ID)  |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_CLIENT_ID)          |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_SECURITY_LIFECYCLE) |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_BOOT_SEED)          |     \
+                                                1 << (EAT_CBOR_ARM_RANGE_BASE                      \
+                                                    - EAT_CBOR_ARM_LABEL_NO_SW_COMPONENTS))
+
+#define MANDATORY_SW_COMP                      (1 << EAT_CBOR_SW_COMPONENT_MEASUREMENT      |     \
+                                                1 << EAT_CBOR_SW_COMPONENT_SIGNER_ID)
+
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
+
+enum attestation_error_code {
+    PAL_ATTEST_SUCCESS = 0,
+    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
+    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
+    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
+    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
+    PAL_ATTEST_HASH_LENGTH_MISMATCH,
+    PAL_ATTEST_HASH_MISMATCH,
+    PAL_ATTEST_HASH_FAIL,
+    PAL_ATTEST_HASH_UNSUPPORTED,
+    PAL_ATTEST_HASH_BUFFER_SIZE,
+    PAL_ATTEST_ERR_PROTECTED_HEADERS,
+    PAL_ATTEST_ERR_SIGN_STRUCT,
+    PAL_ATTEST_ERROR,
+};
+
+struct items_to_get_t {
+    int64_t label;
+    QCBORItem item;
+};
+
+int32_t pal_initial_attest_verify_token(uint8_t *challenge, uint32_t challenge_size,
+                                        uint8_t *token, uint32_t token_size);
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_empty_intf.c
new file mode 100644
index 0000000..faf3f49
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_empty_intf.c
@@ -0,0 +1,30 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include <stdarg.h>
+#include "pal_common.h"
+
+/**
+    @brief    - This API will call the requested attestation function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+int32_t pal_attestation_function(int type, va_list valist)
+{
+    return PAL_STATUS_ERROR;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.c
new file mode 100644
index 0000000..2d99f74
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.c
@@ -0,0 +1,54 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+
+#include "pal_attestation_intf.h"
+
+/**
+    @brief    - This API will call the requested attestation function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+int32_t pal_attestation_function(int type, va_list valist)
+{
+    uint8_t     *challenge, *token;
+    uint32_t    challenge_size, *token_size, verify_token_size;
+
+    switch (type)
+    {
+        case PAL_INITIAL_ATTEST_GET_TOKEN:
+            challenge = va_arg(valist, uint8_t*);
+            challenge_size = va_arg(valist, uint32_t);
+            token = va_arg(valist, uint8_t*);
+            token_size = va_arg(valist, uint32_t*);
+            return psa_initial_attest_get_token(challenge, challenge_size, token, token_size);
+        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
+            challenge_size = va_arg(valist, uint32_t);
+            token_size = va_arg(valist, uint32_t*);
+            return psa_initial_attest_get_token_size(challenge_size, token_size);
+        case PAL_INITIAL_ATTEST_VERIFY_TOKEN:
+            challenge = va_arg(valist, uint8_t*);
+            challenge_size = va_arg(valist, uint32_t);
+            token = va_arg(valist, uint8_t*);
+            verify_token_size = va_arg(valist, uint32_t);
+            return pal_initial_attest_verify_token(challenge, challenge_size,
+                                                   token, verify_token_size);
+        default:
+            return PAL_STATUS_UNSUPPORTED_FUNC;
+    }
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.h
new file mode 100644
index 0000000..12f6ee9
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.h
@@ -0,0 +1,30 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_INITIAL_ATTESTATION_H_
+#define _PAL_INITIAL_ATTESTATION_H_
+
+#include "pal_attestation_crypto.h"
+
+enum attestation_function_code {
+    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
+    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
+    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
+};
+
+int32_t pal_attestation_function(int type, va_list valist);
+#endif /* _PAL_INITIAL_ATTESTATION_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
new file mode 100644
index 0000000..133cfa9
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
@@ -0,0 +1,30 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include <stdarg.h>
+#include "pal_common.h"
+
+/**
+    @brief    - This API will call the requested internal trusted storage function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+uint32_t pal_its_function(int type, va_list valist)
+{
+    return PAL_STATUS_ERROR;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
new file mode 100644
index 0000000..4f04ab0
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
@@ -0,0 +1,60 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+
+#include "pal_internal_trusted_storage_intf.h"
+
+/**
+    @brief    - This API will call the requested internal trusted storage function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+uint32_t pal_its_function(int type, va_list valist)
+{
+    psa_its_uid_t           uid;
+    uint32_t                data_length, offset;
+    const void              *p_write_data;
+    void                    *p_read_data;
+    psa_its_create_flags_t  its_create_flags;
+    struct psa_its_info_t   *its_p_info;
+
+    switch (type)
+    {
+    case PAL_ITS_SET:
+        uid = va_arg(valist, psa_its_uid_t);
+        data_length = va_arg(valist, uint32_t);
+        p_write_data = va_arg(valist, const void*);
+        its_create_flags = va_arg(valist, psa_its_create_flags_t);
+        return psa_its_set(uid, data_length, p_write_data, its_create_flags);
+    case PAL_ITS_GET:
+        uid = va_arg(valist, psa_its_uid_t);
+        offset = va_arg(valist, uint32_t);
+        data_length = va_arg(valist, uint32_t);
+        p_read_data = va_arg(valist, void*);
+        return psa_its_get(uid, offset, data_length, p_read_data);
+    case PAL_ITS_GET_INFO:
+        uid = va_arg(valist, psa_its_uid_t);
+        its_p_info = va_arg(valist, struct psa_its_info_t*);
+        return psa_its_get_info(uid, its_p_info);
+    case PAL_ITS_REMOVE:
+        uid = va_arg(valist, psa_its_uid_t);
+        return psa_its_remove(uid);
+    default:
+        return PAL_STATUS_UNSUPPORTED_FUNC;
+    }
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
new file mode 100644
index 0000000..6db6aac
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
@@ -0,0 +1,31 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
+#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
+
+#include "pal_common.h"
+
+enum its_function_code {
+    PAL_ITS_SET                         = 0x1,
+    PAL_ITS_GET                         = 0x2,
+    PAL_ITS_GET_INFO                    = 0x3,
+    PAL_ITS_REMOVE                      = 0x4,
+};
+
+uint32_t pal_its_function(int type, va_list valist);
+#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_empty_intf.c
new file mode 100644
index 0000000..ee9b13d
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_empty_intf.c
@@ -0,0 +1,30 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include <stdarg.h>
+#include "pal_common.h"
+
+/**
+    @brief    - This API will call the requested protected storage function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+uint32_t pal_ps_function(int type, va_list valist)
+{
+    return PAL_STATUS_ERROR;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.c
new file mode 100644
index 0000000..a424153
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.c
@@ -0,0 +1,75 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+
+#include "pal_protected_storage_intf.h"
+
+/**
+    @brief    - This API will call the requested protected storage function
+    @param    - type    : function code
+                valist  : variable argument list
+    @return   - error status
+**/
+uint32_t pal_ps_function(int type, va_list valist)
+{
+    psa_ps_uid_t            uid;
+    uint32_t                data_length, size, offset;
+    const void              *p_write_data;
+    void                    *p_read_data;
+    psa_ps_create_flags_t   ps_create_flags;
+    struct psa_ps_info_t    *ps_p_info;
+
+    switch (type)
+    {
+     case PAL_PS_SET:
+         uid = va_arg(valist, psa_ps_uid_t);
+         data_length = va_arg(valist, uint32_t);
+         p_write_data = va_arg(valist, const void*);
+         ps_create_flags = va_arg(valist, psa_ps_create_flags_t);
+         return psa_ps_set(uid, data_length, p_write_data, ps_create_flags);
+     case PAL_PS_GET:
+         uid = va_arg(valist, psa_ps_uid_t);
+         offset = va_arg(valist, uint32_t);
+         data_length = va_arg(valist, uint32_t);
+         p_read_data = va_arg(valist, void*);
+         return psa_ps_get(uid, offset, data_length, p_read_data);
+     case PAL_PS_GET_INFO:
+         uid = va_arg(valist, psa_ps_uid_t);
+         ps_p_info = va_arg(valist, struct psa_ps_info_t*);
+         return psa_ps_get_info(uid, ps_p_info);
+     case PAL_PS_REMOVE:
+         uid = va_arg(valist, psa_ps_uid_t);
+         return psa_ps_remove(uid);
+     case PAL_PS_CREATE:
+         uid = va_arg(valist, psa_ps_uid_t);
+         size = va_arg(valist, uint32_t);
+         ps_create_flags = va_arg(valist, psa_ps_create_flags_t);
+         return psa_ps_create(uid, size, ps_create_flags);
+     case PAL_PS_SET_EXTENDED:
+         uid = va_arg(valist, psa_ps_uid_t);
+         offset = va_arg(valist, uint32_t);
+         data_length = va_arg(valist, uint32_t);
+         p_write_data = va_arg(valist, const void*);
+         return psa_ps_set_extended(uid, offset, data_length, p_write_data);
+     case PAL_PS_GET_SUPPORT:
+         return psa_ps_get_support();
+    default:
+        return PAL_STATUS_UNSUPPORTED_FUNC;
+    }
+
+    return PAL_STATUS_UNSUPPORTED_FUNC;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.h
new file mode 100644
index 0000000..a338cdf
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.h
@@ -0,0 +1,34 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
+#define _PAL_PROTECTED_STORAGE_INTF_H_
+
+#include "pal_common.h"
+
+enum ps_function_code {
+    PAL_PS_SET                          = 0x1,
+    PAL_PS_GET                          = 0x2,
+    PAL_PS_GET_INFO                     = 0x3,
+    PAL_PS_REMOVE                       = 0x4,
+    PAL_PS_CREATE                       = 0x5,
+    PAL_PS_SET_EXTENDED                 = 0x6,
+    PAL_PS_GET_SUPPORT                  = 0x7,
+};
+
+uint32_t pal_ps_function(int type, va_list valist);
+#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/spe/pal_driver_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/spe/pal_driver_intf.c
new file mode 100644
index 0000000..fd30783
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/spe/pal_driver_intf.c
@@ -0,0 +1,132 @@
+ /** @file
+  * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+  * SPDX-License-Identifier : Apache-2.0
+  *
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *  http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+ **/
+
+#include "pal_driver_intf.h"
+
+/**
+    @brief    - This function initializes the UART
+    @param    - uart base addr
+    @return   - void
+**/
+void pal_uart_init(uint32_t uart_base_addr)
+{
+    pal_uart_cmsdk_init(uart_base_addr);
+}
+
+/**
+    @brief    - This function parses the input string and writes bytes into UART TX FIFO
+    @param    - str      : Input String
+              - data     : Value for format specifier
+**/
+
+void pal_print(char *str, int32_t data)
+{
+  pal_cmsdk_print(str,data);
+
+}
+
+
+/**
+    @brief    - Writes into given non-volatile address.
+    @param    - base    : Base address of nvmem
+                offset  : Offset
+                buffer  : Pointer to source address
+                size    : Number of bytes
+    @return   - 1/0
+**/
+int pal_nvmem_write(addr_t base, uint32_t offset, void *buffer, int size)
+{
+    return nvmem_write(base, offset, buffer, size);
+}
+
+/**
+    @brief    - Reads from given non-volatile address.
+    @param    - base    : Base address of nvmem
+                offset  : Offset
+                buffer  : Pointer to source address
+                size    : Number of bytes
+    @return   - 1/0
+**/
+int pal_nvmem_read(addr_t base, uint32_t offset, void *buffer, int size)
+{
+    return nvmem_read(base, offset, buffer, size);
+}
+
+
+/**
+    @brief           - Initializes an hardware watchdog timer
+    @param           - base_addr       : Base address of the watchdog module
+                     - time_us         : Time in micro seconds
+                     - timer_tick_us   : Number of ticks per micro second
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_init(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
+{
+    return(pal_wd_cmsdk_init(base_addr,time_us, timer_tick_us));
+
+}
+
+/**
+    @brief           - Enables a hardware watchdog timer
+    @param           - base_addr       : Base address of the watchdog module
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_enable(addr_t base_addr)
+{
+    return(pal_wd_cmsdk_enable(base_addr));
+}
+
+/**
+    @brief           - Disables a hardware watchdog timer
+    @param           - base_addr       : Base address of the watchdog module
+    @return          - SUCCESS/FAILURE
+**/
+int pal_wd_timer_disable(addr_t base_addr)
+{
+    return (pal_wd_cmsdk_disable(base_addr));
+}
+
+/**
+    @brief           - Checks whether hardware watchdog timer is enabled
+    @param           - base_addr       : Base address of the watchdog module
+    @return          - Enabled : 1, Disabled : 0
+**/
+int pal_wd_timer_is_enabled(addr_t base_addr)
+{
+    return (pal_wd_cmsdk_is_enabled(base_addr));
+}
+
+/**
+    @brief   - Trigger interrupt for irq signal assigned to driver partition
+               before return to caller.
+    @param   - void
+    @return  - void
+**/
+void pal_generate_interrupt(void)
+{
+    pal_uart_cmsdk_generate_irq();
+}
+
+/**
+    @brief   - Disable interrupt that was generated using pal_generate_interrupt API.
+    @param   - void
+    @return  - void
+**/
+void pal_disable_interrupt(void)
+{
+    pal_uart_cmsdk_disable_irq();
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/spe/pal_driver_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/spe/pal_driver_intf.h
new file mode 100644
index 0000000..cef34ca
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/spe/pal_driver_intf.h
@@ -0,0 +1,35 @@
+ /** @file
+  * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+  * SPDX-License-Identifier : Apache-2.0
+  *
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *  http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+ **/
+
+#ifndef _PAL_DRIVER_INTF_H_
+#define _PAL_DRIVER_INTF_H_
+
+#include "pal_uart.h"
+#include "pal_nvmem.h"
+#include "pal_wd_cmsdk.h"
+
+void pal_uart_init(uint32_t uart_base_addr);
+void pal_print(char *str, int32_t data);
+int pal_nvmem_write(addr_t base, uint32_t offset, void *buffer, int size);
+int pal_nvmem_read(addr_t base, uint32_t offset, void *buffer, int size);
+int pal_wd_timer_init(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);
+int pal_wd_timer_enable(addr_t base_addr);
+int pal_wd_timer_disable(addr_t base_addr);
+int pal_wd_timer_is_enabled(addr_t base_addr);
+void pal_generate_interrupt(void);
+void pal_disable_interrupt(void);
+#endif /* _PAL_DRIVER_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cfg
new file mode 100644
index 0000000..a8f3700
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cfg
@@ -0,0 +1,57 @@
+///** @file
+// * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+// * SPDX-License-Identifier : Apache-2.0
+// *
+// * Licensed under the Apache License, Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// *  http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+//**/
+
+// UART device info
+uart.num=1;
+uart.0.base = 0x41303000; // UART0_NS
+uart.0.size = 0xFFF;
+uart.0.intr_id = 0xFF;
+uart.0.permission = TYPE_READ_WRITE;
+
+// Watchdog device info
+watchdog.num = 1;
+watchdog.0.base = 0x40081000;
+watchdog.0.size = 0xFFF;
+watchdog.0.intr_id = 0xFF;
+watchdog.0.permission = TYPE_READ_WRITE;
+watchdog.0.num_of_tick_per_micro_sec = 0x3;         //(sys_feq/1000000)
+watchdog.0.timeout_in_micro_sec_low = 0xF4240;      //1.0  sec :  1 * 1000 * 1000
+watchdog.0.timeout_in_micro_sec_medium = 0x1E8480;  //2.0  sec :  2 * 1000 * 1000
+watchdog.0.timeout_in_micro_sec_high = 0x4C4B40;    //5.0  sec :  5 * 1000 * 1000
+watchdog.0.timeout_in_micro_sec_crypto = 0x1312D00; //18.0 sec : 18 * 1000 * 1000
+
+// Range of 1KB Non-volatile memory to preserve data over reset. Ex, NVRAM and FLASH
+nvmem.num =1;
+nvmem.0.start = 0x20018000;
+nvmem.0.end = 0x200183FF;
+nvmem.0.permission = TYPE_READ_WRITE;
+
+// Miscellaneous - Test scatter info
+dut.num = 1;
+
+// Start address of 12KB NS memory for test ELF
+dut.0.ns_test_addr = 0x28110000;
+
+// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
+// Size of combine_test_binary = Summation of size of each test ELF file.
+dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
+
+// Is combine_test_binary available in RAM?
+dut.0.combine_test_binary_in_ram = AVAILABLE;
+
+// Level of Isolation
+dut.0.implemented_psa_firmware_isolation_level = LEVEL1;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cmake
new file mode 100644
index 0000000..5c5c942
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cmake
@@ -0,0 +1,106 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# PAL C source files part of NSPE library
+list(APPEND PAL_SRC_C_NSPE )
+
+# PAL ASM source files part of NSPE library
+list(APPEND PAL_SRC_ASM_NSPE )
+
+# PAL C source files part of SPE library - driver partition
+list(APPEND PAL_SRC_C_DRIVER_SP )
+
+# PAL ASM source files part of SPE library - driver partition
+list(APPEND PAL_SRC_ASM_DRIVER_SP )
+
+
+# Listing all the sources required for given target
+if(${SUITE} STREQUAL "IPC")
+	list(APPEND PAL_SRC_C_NSPE
+		# driver functionalities are implemented as RoT-services
+		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+	)
+	list(APPEND PAL_SRC_C_DRIVER_SP
+		# Driver files will be compiled as part of driver partition
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+else()
+	list(APPEND PAL_SRC_C_NSPE
+		# driver files will be compiled as part of NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+endif()
+if(${SUITE} STREQUAL "CRYPTO")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_eat.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+	)
+endif()
+
+# Create NSPE library
+add_library(${PSA_TARGET_PAL_NSPE_LIB} STATIC ${PAL_SRC_C_NSPE} ${PAL_SRC_ASM_NSPE})
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+list(APPEND PAL_DRIVER_INCLUDE_PATHS
+	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk
+)
+
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PAL_DRIVER_INCLUDE_PATHS}
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+)
+
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PSA_QCBOR_INCLUDE_PATH}
+)
+endif()
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/Makefile b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/Makefile
deleted file mode 100644
index aa7e10b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/Makefile
+++ /dev/null
@@ -1,160 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-# Make variables to select correct instances of PAL files
-
-## PSA_IPC_IMPLEMENTED must be true for IPC SUITE
-PSA_IPC_IMPLEMENTED:=0
-
-## PSA_CRYPTO_IMPLEMENTED must be true for CRYPTO SUITE
-PSA_CRYPTO_IMPLEMENTED:=1
-
-## PSA_PROTECTED_STORAGE_IMPLEMENTED must be true for PROTECTED_STORAGE SUITE
-PSA_PROTECTED_STORAGE_IMPLEMENTED:=1
-
-## PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED must be true for INTERNAL_TRUSTED_STORAGE SUITE
-PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED:=0
-
-## PSA_INITIAL_ATTESTATION_IMPLEMENTED must be true for INITIAL_ATTESTATION SUITE
-PSA_INITIAL_ATTESTATION_IMPLEMENTED:=1
-
-# Make variables holding NSPE/SPE source files
-
-## PAL C source files part of NSPE library
-SRC_C_NSPE=
-
-## PAL ASM source files part of NSPE library
-SRC_ASM_NSPE=
-
-## PAL C source files part of SPE library - driver partition
-SRC_C_DRIVER_SP=
-
-## PAL ASM source files part of SPE library - driver partition
-SRC_ASM_DRIVER_SP=
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-# When PSA_IPC_IMPLEMENTED=1, driver functionalities are implemented as RoT-services
-# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-SRC_C_NSPE += pal_client_api_intf.c
-SRC_C_NSPE += pal_driver_ipc_intf.c
-
-# Driver files will be compiled as part of driver partition
-SRC_C_DRIVER_SP += pal_driver_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-else
-
-# When PSA_IPC_IMPLEMENTED=0, driver files will be compiled as part of NSPE
-SRC_C_NSPE += pal_client_api_empty_intf.c
-SRC_C_NSPE += pal_driver_ns_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-endif
-
-ifeq (${PSA_CRYPTO_IMPLEMENTED},1)
-SRC_C_NSPE += pal_crypto_intf.c
-else
-SRC_C_NSPE += pal_crypto_empty_intf.c
-endif
-
-ifeq (${PSA_PROTECTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_protected_storage_intf.c
-else
-SRC_C_NSPE += pal_protected_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_internal_trusted_storage_intf.c
-else
-SRC_C_NSPE += pal_internal_trusted_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INITIAL_ATTESTATION_IMPLEMENTED},1)
-SRC_C_NSPE += pal_attestation_intf.c
-SRC_C_NSPE += pal_attestation_eat.c
-SRC_C_NSPE += pal_attestation_crypto.c
-else
-SRC_C_NSPE += pal_attestation_empty_intf.c
-endif
-
-INCLUDE= -I$(SOURCE)/platform/targets/$(TARGET)/nspe \
-         -I$(SOURCE)/platform/targets/$(TARGET)/spe \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(SOURCE)/platform/drivers/uart/pl011 \
-         -I$(SOURCE)/platform/drivers/nvmem/ \
-         -I$(SOURCE)/platform/drivers/watchdog/cmsdk \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/inc \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage \
-
-VPATH=$(SOURCE)/platform/targets/$(TARGET)/: \
-      $(SOURCE)/platform/targets/$(TARGET)/spe: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe: \
-      $(SOURCE)/platform/drivers/uart/pl011: \
-      $(SOURCE)/platform/drivers/nvmem: \
-      $(SOURCE)/platform/drivers/watchdog/cmsdk: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/common: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/crypto: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/src: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage: \
-
-all: build
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-build: mkdir build_nspe_pal build_spe_pal
-else
-build: mkdir build_nspe_pal
-endif
-
-mkdir:
-	@mkdir -p $(BUILD)/platform/nspe/
-	@mkdir -p $(BUILD)/platform/spe/
-
-# BUILD NSPE PAL
-build_nspe_pal: build_c_nspe build_asm_nspe pal_nspe.a
-
-build_c_nspe: $(SRC_C_NSPE:%.c=$(BUILD)/platform/nspe/%.o)
-build_asm_nspe: $(SRC_ASM_NSPE:%.s=$(BUILD)/platform/nspe/%.o)
-
-$(BUILD)/platform/nspe/%.o : %.c
-	$(CC) $(PAL_CDEFS) $(INCLUDE) -o $@ -c $<
-
-$(BUILD)/platform/nspe/%.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-pal_nspe.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/platform/pal_nspe.a $(BUILD)/platform/nspe/*.o
-
-# BUILD SPE PAL
-build_spe_pal: build_driver_sp
-
-build_driver_sp: build_c_driver_sp build_asm_driver_sp
-
-build_c_driver_sp: $(SRC_C_DRIVER_SP:%.c=$(BUILD)/platform/spe/%_driver_sp.o)
-build_asm_driver_sp: $(SRC_ASM_DRIVER_SP:%.s=$(BUILD)/platform/spe/%_driver_sp.o)
-
-# Generated %_driver_sp.o(s) are used in spbuild.mk to create final driver_partition.a
-$(BUILD)/platform/spe/%_driver_sp.o : %.c
-	$(CC) $(INCLUDE) -DSPE_BUILD -o $@ -c $<
-
-$(BUILD)/platform/spe/%_driver_sp.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-clean:
-	@rm -rf $(BUILD)/platform/nspe/* $(BUILD)/platform/spe/*.a
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_common.h
index 3ebe1e1..0a63b02 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_common.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_common.h
@@ -24,10 +24,8 @@
 #include <limits.h>
 #include <stdarg.h>
 
-#ifndef TARGET_CFG_BUILD
 #include "pal_config.h"
 #include "pal_crypto_config.h"
-#endif
 
 /* typedef's */
 typedef uint8_t             bool_t;
@@ -87,7 +85,7 @@
  * Redefining some of the client.h elements for compilation to go through
  * when PSA IPC APIs are not implemented.
  */
-#if (PSA_IPC_IMPLEMENTED == 0)
+#ifndef IPC
 
 #ifndef PSA_VERSION_NONE
 #define PSA_VERSION_NONE            (0)
@@ -113,6 +111,6 @@
     size_t len;
 } psa_outvec;
 
-#endif /* PSA_IPC_IMPLEMENTED */
+#endif /* IPC */
 
 #endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_config.h
index e3f70ad..289dc5d 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_config.h
@@ -18,66 +18,32 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
-/*
- * List of macros used by test suite
- */
-#if !defined(PSA_IPC_IMPLEMENTED)
-#define PSA_IPC_IMPLEMENTED 0
-#endif
+/* Define PSA test suite dependent macros for non-cmake build */
+#if !defined(PSA_CMAKE_BUILD)
 
-#if !defined(PSA_CRYPTO_IMPLEMENTED)
-#define PSA_CRYPTO_IMPLEMENTED 0
-#endif
+/* Print verbosity = TEST */
+#define VERBOSE 3
 
-#if !defined(PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED)
-#define PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE VAL build? */
+#define VAL_NSPE_BUILD
 
-#if !defined(PSA_PROTECTED_STORAGE_IMPLEMENTED)
-#define PSA_PROTECTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE TEST build? */
+#define NONSECURE_TEST_BUILD
 
-#if !defined(PSA_INITIAL_ATTESTATION_IMPLEMENTED)
-#define PSA_INITIAL_ATTESTATION_IMPLEMENTED 0
-#endif
+/* Combine test archive or binary? */
+#define TEST_COMBINE_ARCHIVE
 
-#if (PSA_IPC_IMPLEMENTED == 0) && \
-    (PSA_CRYPTO_IMPLEMENTED == 0) && \
-    (PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_PROTECTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_INITIAL_ATTESTATION_IMPLEMENTED == 0)
-#error "You must define at least one of these macros to run test suite"
-#endif
+/* If not defined, skip watchdog programming */
+#define WATCHDOG_AVAILABLE
 
-#if !defined(VERBOSE)
-#define VERBOSE 3 /* Print verbosity = TEST */
-#endif
-
-#if (!defined(VAL_NSPE_BUILD) && !defined(SPE_BUILD))
-#define VAL_NSPE_BUILD 1
-#endif
-
-#if (!defined(NONSECURE_TEST_BUILD) && !defined(SPE_BUILD))
-#define NONSECURE_TEST_BUILD 1
-#endif
-
-#if !defined(TEST_COMBINE_ARCHIVE)
-#define TEST_COMBINE_ARCHIVE 0 /* Combine test archive or binary? */
-#endif
-
-#if !defined(WATCHDOG_AVAILABLE)
-#define WATCHDOG_AVAILABLE 0 /* If zero, skip watchdog programming */
-#endif
-
-#if !defined(SP_HEAP_MEM_SUPP)
-#define SP_HEAP_MEM_SUPP 0 /* Are Dynamic funcs available to secure partition? */
-#endif
+/* Are Dynamic memory APIs available to secure partition? */
+#define SP_HEAP_MEM_SUPP
+#endif /* PSA_CMAKE_BUILD */
 
 /*
  * Include of PSA defined Header files
  */
-
-#if PSA_IPC_IMPLEMENTED
+#ifdef IPC
 /* psa/client.h: Contains the PSA Client API elements */
 #include "psa/client.h"
 
@@ -96,22 +62,22 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#if PSA_CRYPTO_IMPLEMENTED
+#ifdef CRYPTO
 /* psa/crypto.h: Contains the PSA Crypto API elements */
 #include "psa/crypto.h"
 #endif
 
-#if PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED
+#ifdef INTERNAL_TRUSTED_STORAGE
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#if PSA_PROTECTED_STORAGE_IMPLEMENTED
+#ifdef PROTECTED_STORAGE
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
 
-#if PSA_INITIAL_ATTESTATION_IMPLEMENTED
+#ifdef INITIAL_ATTESTATION
 /* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
 #include "psa/initial_attestation.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cmake
new file mode 100644
index 0000000..7c6628a
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cmake
@@ -0,0 +1,106 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# PAL C source files part of NSPE library
+list(APPEND PAL_SRC_C_NSPE )
+
+# PAL ASM source files part of NSPE library
+list(APPEND PAL_SRC_ASM_NSPE )
+
+# PAL C source files part of SPE library - driver partition
+list(APPEND PAL_SRC_C_DRIVER_SP )
+
+# PAL ASM source files part of SPE library - driver partition
+list(APPEND PAL_SRC_ASM_DRIVER_SP )
+
+
+# Listing all the sources required for given target
+if(${SUITE} STREQUAL "IPC")
+	list(APPEND PAL_SRC_C_NSPE
+		# driver functionalities are implemented as RoT-services
+		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+	)
+	list(APPEND PAL_SRC_C_DRIVER_SP
+		# Driver files will be compiled as part of driver partition
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+else()
+	list(APPEND PAL_SRC_C_NSPE
+		# driver files will be compiled as part of NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+endif()
+if(${SUITE} STREQUAL "CRYPTO")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_eat.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+	)
+endif()
+
+# Create NSPE library
+add_library(${PSA_TARGET_PAL_NSPE_LIB} STATIC ${PAL_SRC_C_NSPE} ${PAL_SRC_ASM_NSPE})
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+list(APPEND PAL_DRIVER_INCLUDE_PATHS
+	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/uart/pl011
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk
+)
+
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PAL_DRIVER_INCLUDE_PATHS}
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+)
+
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PSA_QCBOR_INCLUDE_PATH}
+)
+endif()
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/Makefile b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/Makefile
deleted file mode 100644
index aa7e10b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/Makefile
+++ /dev/null
@@ -1,160 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-# Make variables to select correct instances of PAL files
-
-## PSA_IPC_IMPLEMENTED must be true for IPC SUITE
-PSA_IPC_IMPLEMENTED:=0
-
-## PSA_CRYPTO_IMPLEMENTED must be true for CRYPTO SUITE
-PSA_CRYPTO_IMPLEMENTED:=1
-
-## PSA_PROTECTED_STORAGE_IMPLEMENTED must be true for PROTECTED_STORAGE SUITE
-PSA_PROTECTED_STORAGE_IMPLEMENTED:=1
-
-## PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED must be true for INTERNAL_TRUSTED_STORAGE SUITE
-PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED:=0
-
-## PSA_INITIAL_ATTESTATION_IMPLEMENTED must be true for INITIAL_ATTESTATION SUITE
-PSA_INITIAL_ATTESTATION_IMPLEMENTED:=1
-
-# Make variables holding NSPE/SPE source files
-
-## PAL C source files part of NSPE library
-SRC_C_NSPE=
-
-## PAL ASM source files part of NSPE library
-SRC_ASM_NSPE=
-
-## PAL C source files part of SPE library - driver partition
-SRC_C_DRIVER_SP=
-
-## PAL ASM source files part of SPE library - driver partition
-SRC_ASM_DRIVER_SP=
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-# When PSA_IPC_IMPLEMENTED=1, driver functionalities are implemented as RoT-services
-# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-SRC_C_NSPE += pal_client_api_intf.c
-SRC_C_NSPE += pal_driver_ipc_intf.c
-
-# Driver files will be compiled as part of driver partition
-SRC_C_DRIVER_SP += pal_driver_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-else
-
-# When PSA_IPC_IMPLEMENTED=0, driver files will be compiled as part of NSPE
-SRC_C_NSPE += pal_client_api_empty_intf.c
-SRC_C_NSPE += pal_driver_ns_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-endif
-
-ifeq (${PSA_CRYPTO_IMPLEMENTED},1)
-SRC_C_NSPE += pal_crypto_intf.c
-else
-SRC_C_NSPE += pal_crypto_empty_intf.c
-endif
-
-ifeq (${PSA_PROTECTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_protected_storage_intf.c
-else
-SRC_C_NSPE += pal_protected_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_internal_trusted_storage_intf.c
-else
-SRC_C_NSPE += pal_internal_trusted_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INITIAL_ATTESTATION_IMPLEMENTED},1)
-SRC_C_NSPE += pal_attestation_intf.c
-SRC_C_NSPE += pal_attestation_eat.c
-SRC_C_NSPE += pal_attestation_crypto.c
-else
-SRC_C_NSPE += pal_attestation_empty_intf.c
-endif
-
-INCLUDE= -I$(SOURCE)/platform/targets/$(TARGET)/nspe \
-         -I$(SOURCE)/platform/targets/$(TARGET)/spe \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(SOURCE)/platform/drivers/uart/pl011 \
-         -I$(SOURCE)/platform/drivers/nvmem/ \
-         -I$(SOURCE)/platform/drivers/watchdog/cmsdk \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/inc \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage \
-
-VPATH=$(SOURCE)/platform/targets/$(TARGET)/: \
-      $(SOURCE)/platform/targets/$(TARGET)/spe: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe: \
-      $(SOURCE)/platform/drivers/uart/pl011: \
-      $(SOURCE)/platform/drivers/nvmem: \
-      $(SOURCE)/platform/drivers/watchdog/cmsdk: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/common: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/crypto: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/src: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage: \
-
-all: build
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-build: mkdir build_nspe_pal build_spe_pal
-else
-build: mkdir build_nspe_pal
-endif
-
-mkdir:
-	@mkdir -p $(BUILD)/platform/nspe/
-	@mkdir -p $(BUILD)/platform/spe/
-
-# BUILD NSPE PAL
-build_nspe_pal: build_c_nspe build_asm_nspe pal_nspe.a
-
-build_c_nspe: $(SRC_C_NSPE:%.c=$(BUILD)/platform/nspe/%.o)
-build_asm_nspe: $(SRC_ASM_NSPE:%.s=$(BUILD)/platform/nspe/%.o)
-
-$(BUILD)/platform/nspe/%.o : %.c
-	$(CC) $(PAL_CDEFS) $(INCLUDE) -o $@ -c $<
-
-$(BUILD)/platform/nspe/%.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-pal_nspe.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/platform/pal_nspe.a $(BUILD)/platform/nspe/*.o
-
-# BUILD SPE PAL
-build_spe_pal: build_driver_sp
-
-build_driver_sp: build_c_driver_sp build_asm_driver_sp
-
-build_c_driver_sp: $(SRC_C_DRIVER_SP:%.c=$(BUILD)/platform/spe/%_driver_sp.o)
-build_asm_driver_sp: $(SRC_ASM_DRIVER_SP:%.s=$(BUILD)/platform/spe/%_driver_sp.o)
-
-# Generated %_driver_sp.o(s) are used in spbuild.mk to create final driver_partition.a
-$(BUILD)/platform/spe/%_driver_sp.o : %.c
-	$(CC) $(INCLUDE) -DSPE_BUILD -o $@ -c $<
-
-$(BUILD)/platform/spe/%_driver_sp.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-clean:
-	@rm -rf $(BUILD)/platform/nspe/* $(BUILD)/platform/spe/*.a
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_common.h
index 3ebe1e1..0a63b02 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_common.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_common.h
@@ -24,10 +24,8 @@
 #include <limits.h>
 #include <stdarg.h>
 
-#ifndef TARGET_CFG_BUILD
 #include "pal_config.h"
 #include "pal_crypto_config.h"
-#endif
 
 /* typedef's */
 typedef uint8_t             bool_t;
@@ -87,7 +85,7 @@
  * Redefining some of the client.h elements for compilation to go through
  * when PSA IPC APIs are not implemented.
  */
-#if (PSA_IPC_IMPLEMENTED == 0)
+#ifndef IPC
 
 #ifndef PSA_VERSION_NONE
 #define PSA_VERSION_NONE            (0)
@@ -113,6 +111,6 @@
     size_t len;
 } psa_outvec;
 
-#endif /* PSA_IPC_IMPLEMENTED */
+#endif /* IPC */
 
 #endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_config.h
index e3f70ad..289dc5d 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_config.h
@@ -18,66 +18,32 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
-/*
- * List of macros used by test suite
- */
-#if !defined(PSA_IPC_IMPLEMENTED)
-#define PSA_IPC_IMPLEMENTED 0
-#endif
+/* Define PSA test suite dependent macros for non-cmake build */
+#if !defined(PSA_CMAKE_BUILD)
 
-#if !defined(PSA_CRYPTO_IMPLEMENTED)
-#define PSA_CRYPTO_IMPLEMENTED 0
-#endif
+/* Print verbosity = TEST */
+#define VERBOSE 3
 
-#if !defined(PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED)
-#define PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE VAL build? */
+#define VAL_NSPE_BUILD
 
-#if !defined(PSA_PROTECTED_STORAGE_IMPLEMENTED)
-#define PSA_PROTECTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE TEST build? */
+#define NONSECURE_TEST_BUILD
 
-#if !defined(PSA_INITIAL_ATTESTATION_IMPLEMENTED)
-#define PSA_INITIAL_ATTESTATION_IMPLEMENTED 0
-#endif
+/* Combine test archive or binary? */
+#define TEST_COMBINE_ARCHIVE
 
-#if (PSA_IPC_IMPLEMENTED == 0) && \
-    (PSA_CRYPTO_IMPLEMENTED == 0) && \
-    (PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_PROTECTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_INITIAL_ATTESTATION_IMPLEMENTED == 0)
-#error "You must define at least one of these macros to run test suite"
-#endif
+/* If not defined, skip watchdog programming */
+#define WATCHDOG_AVAILABLE
 
-#if !defined(VERBOSE)
-#define VERBOSE 3 /* Print verbosity = TEST */
-#endif
-
-#if (!defined(VAL_NSPE_BUILD) && !defined(SPE_BUILD))
-#define VAL_NSPE_BUILD 1
-#endif
-
-#if (!defined(NONSECURE_TEST_BUILD) && !defined(SPE_BUILD))
-#define NONSECURE_TEST_BUILD 1
-#endif
-
-#if !defined(TEST_COMBINE_ARCHIVE)
-#define TEST_COMBINE_ARCHIVE 0 /* Combine test archive or binary? */
-#endif
-
-#if !defined(WATCHDOG_AVAILABLE)
-#define WATCHDOG_AVAILABLE 0 /* If zero, skip watchdog programming */
-#endif
-
-#if !defined(SP_HEAP_MEM_SUPP)
-#define SP_HEAP_MEM_SUPP 0 /* Are Dynamic funcs available to secure partition? */
-#endif
+/* Are Dynamic memory APIs available to secure partition? */
+#define SP_HEAP_MEM_SUPP
+#endif /* PSA_CMAKE_BUILD */
 
 /*
  * Include of PSA defined Header files
  */
-
-#if PSA_IPC_IMPLEMENTED
+#ifdef IPC
 /* psa/client.h: Contains the PSA Client API elements */
 #include "psa/client.h"
 
@@ -96,22 +62,22 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#if PSA_CRYPTO_IMPLEMENTED
+#ifdef CRYPTO
 /* psa/crypto.h: Contains the PSA Crypto API elements */
 #include "psa/crypto.h"
 #endif
 
-#if PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED
+#ifdef INTERNAL_TRUSTED_STORAGE
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#if PSA_PROTECTED_STORAGE_IMPLEMENTED
+#ifdef PROTECTED_STORAGE
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
 
-#if PSA_INITIAL_ATTESTATION_IMPLEMENTED
+#ifdef INITIAL_ATTESTATION
 /* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
 #include "psa/initial_attestation.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cmake
new file mode 100644
index 0000000..7c6628a
--- /dev/null
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cmake
@@ -0,0 +1,106 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# PAL C source files part of NSPE library
+list(APPEND PAL_SRC_C_NSPE )
+
+# PAL ASM source files part of NSPE library
+list(APPEND PAL_SRC_ASM_NSPE )
+
+# PAL C source files part of SPE library - driver partition
+list(APPEND PAL_SRC_C_DRIVER_SP )
+
+# PAL ASM source files part of SPE library - driver partition
+list(APPEND PAL_SRC_ASM_DRIVER_SP )
+
+
+# Listing all the sources required for given target
+if(${SUITE} STREQUAL "IPC")
+	list(APPEND PAL_SRC_C_NSPE
+		# driver functionalities are implemented as RoT-services
+		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+	)
+	list(APPEND PAL_SRC_C_DRIVER_SP
+		# Driver files will be compiled as part of driver partition
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+else()
+	list(APPEND PAL_SRC_C_NSPE
+		# driver files will be compiled as part of NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+endif()
+if(${SUITE} STREQUAL "CRYPTO")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_eat.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+	)
+endif()
+
+# Create NSPE library
+add_library(${PSA_TARGET_PAL_NSPE_LIB} STATIC ${PAL_SRC_C_NSPE} ${PAL_SRC_ASM_NSPE})
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+list(APPEND PAL_DRIVER_INCLUDE_PATHS
+	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/uart/pl011
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk
+)
+
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PAL_DRIVER_INCLUDE_PATHS}
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+)
+
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PSA_QCBOR_INCLUDE_PATH}
+)
+endif()
diff --git a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/Makefile b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/Makefile
deleted file mode 100644
index 894cec4..0000000
--- a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/Makefile
+++ /dev/null
@@ -1,160 +0,0 @@
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-# Make variables to select correct instances of PAL files
-
-## PSA_IPC_IMPLEMENTED must be true for IPC SUITE
-PSA_IPC_IMPLEMENTED:=1
-
-## PSA_CRYPTO_IMPLEMENTED must be true for CRYPTO SUITE
-PSA_CRYPTO_IMPLEMENTED:=0
-
-## PSA_PROTECTED_STORAGE_IMPLEMENTED must be true for PROTECTED_STORAGE SUITE
-PSA_PROTECTED_STORAGE_IMPLEMENTED:=0
-
-## PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED must be true for INTERNAL_TRUSTED_STORAGE SUITE
-PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED:=0
-
-## PSA_INITIAL_ATTESTATION_IMPLEMENTED must be true for INITIAL_ATTESTATION SUITE
-PSA_INITIAL_ATTESTATION_IMPLEMENTED:=0
-
-# Make variables holding NSPE/SPE source files
-
-## PAL C source files part of NSPE library
-SRC_C_NSPE=
-
-## PAL ASM source files part of NSPE library
-SRC_ASM_NSPE=
-
-## PAL C source files part of SPE library - driver partition
-SRC_C_DRIVER_SP=
-
-## PAL ASM source files part of SPE library - driver partition
-SRC_ASM_DRIVER_SP=
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-# When PSA_IPC_IMPLEMENTED=1, driver functionalities are implemented as RoT-services
-# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-SRC_C_NSPE += pal_client_api_intf.c
-SRC_C_NSPE += pal_driver_ipc_intf.c
-
-# Driver files will be compiled as part of driver partition
-SRC_C_DRIVER_SP += pal_driver_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-else
-
-# When PSA_IPC_IMPLEMENTED=0, driver files will be compiled as part of NSPE
-SRC_C_NSPE += pal_client_api_empty_intf.c
-SRC_C_NSPE += pal_driver_ns_intf.c pal_nvmem.c pal_uart.c pal_wd_cmsdk.c
-endif
-
-ifeq (${PSA_CRYPTO_IMPLEMENTED},1)
-SRC_C_NSPE += pal_crypto_intf.c
-else
-SRC_C_NSPE += pal_crypto_empty_intf.c
-endif
-
-ifeq (${PSA_PROTECTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_protected_storage_intf.c
-else
-SRC_C_NSPE += pal_protected_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED},1)
-SRC_C_NSPE += pal_internal_trusted_storage_intf.c
-else
-SRC_C_NSPE += pal_internal_trusted_storage_empty_intf.c
-endif
-
-ifeq (${PSA_INITIAL_ATTESTATION_IMPLEMENTED},1)
-SRC_C_NSPE += pal_attestation_intf.c
-SRC_C_NSPE += pal_attestation_eat.c
-SRC_C_NSPE += pal_attestation_crypto.c
-else
-SRC_C_NSPE += pal_attestation_empty_intf.c
-endif
-
-INCLUDE= -I$(SOURCE)/platform/targets/$(TARGET)/nspe \
-         -I$(SOURCE)/platform/targets/$(TARGET)/spe \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(SOURCE)/platform/drivers/uart/cmsdk \
-         -I$(SOURCE)/platform/drivers/nvmem/ \
-         -I$(SOURCE)/platform/drivers/watchdog/cmsdk \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/inc \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage \
-
-VPATH=$(SOURCE)/platform/targets/$(TARGET)/: \
-      $(SOURCE)/platform/targets/$(TARGET)/spe: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe: \
-      $(SOURCE)/platform/drivers/uart/cmsdk: \
-      $(SOURCE)/platform/drivers/nvmem: \
-      $(SOURCE)/platform/drivers/watchdog/cmsdk: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/common: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/crypto: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/initial_attestation/ext/src: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/internal_trusted_storage: \
-      $(SOURCE)/platform/targets/$(TARGET)/nspe/protected_storage: \
-
-all: build
-
-ifeq (${PSA_IPC_IMPLEMENTED},1)
-build: mkdir build_nspe_pal build_spe_pal
-else
-build: mkdir build_nspe_pal
-endif
-
-mkdir:
-	@mkdir -p $(BUILD)/platform/nspe/
-	@mkdir -p $(BUILD)/platform/spe/
-
-# BUILD NSPE PAL
-build_nspe_pal: build_c_nspe build_asm_nspe pal_nspe.a
-
-build_c_nspe: $(SRC_C_NSPE:%.c=$(BUILD)/platform/nspe/%.o)
-build_asm_nspe: $(SRC_ASM_NSPE:%.s=$(BUILD)/platform/nspe/%.o)
-
-$(BUILD)/platform/nspe/%.o : %.c
-	$(CC) $(PAL_CDEFS) $(INCLUDE) -o $@ -c $<
-
-$(BUILD)/platform/nspe/%.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-pal_nspe.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/platform/pal_nspe.a $(BUILD)/platform/nspe/*.o
-
-# BUILD SPE PAL
-build_spe_pal: build_driver_sp
-
-build_driver_sp: build_c_driver_sp build_asm_driver_sp
-
-build_c_driver_sp: $(SRC_C_DRIVER_SP:%.c=$(BUILD)/platform/spe/%_driver_sp.o)
-build_asm_driver_sp: $(SRC_ASM_DRIVER_SP:%.s=$(BUILD)/platform/spe/%_driver_sp.o)
-
-# Generated %_driver_sp.o(s) are used in spbuild.mk to create final driver_partition.a
-$(BUILD)/platform/spe/%_driver_sp.o : %.c
-	$(CC) $(INCLUDE) -DSPE_BUILD -o $@ -c $<
-
-$(BUILD)/platform/spe/%_driver_sp.o : %.s
-	$(AS) $(INCLUDE) -o $@ $<
-
-clean:
-	@rm -rf $(BUILD)/platform/nspe/* $(BUILD)/platform/spe/*.a
diff --git a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_common.h
index 3ebe1e1..0a63b02 100644
--- a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_common.h
+++ b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_common.h
@@ -24,10 +24,8 @@
 #include <limits.h>
 #include <stdarg.h>
 
-#ifndef TARGET_CFG_BUILD
 #include "pal_config.h"
 #include "pal_crypto_config.h"
-#endif
 
 /* typedef's */
 typedef uint8_t             bool_t;
@@ -87,7 +85,7 @@
  * Redefining some of the client.h elements for compilation to go through
  * when PSA IPC APIs are not implemented.
  */
-#if (PSA_IPC_IMPLEMENTED == 0)
+#ifndef IPC
 
 #ifndef PSA_VERSION_NONE
 #define PSA_VERSION_NONE            (0)
@@ -113,6 +111,6 @@
     size_t len;
 } psa_outvec;
 
-#endif /* PSA_IPC_IMPLEMENTED */
+#endif /* IPC */
 
 #endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_config.h
index e3f70ad..289dc5d 100644
--- a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/common/pal_config.h
@@ -18,66 +18,32 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
-/*
- * List of macros used by test suite
- */
-#if !defined(PSA_IPC_IMPLEMENTED)
-#define PSA_IPC_IMPLEMENTED 0
-#endif
+/* Define PSA test suite dependent macros for non-cmake build */
+#if !defined(PSA_CMAKE_BUILD)
 
-#if !defined(PSA_CRYPTO_IMPLEMENTED)
-#define PSA_CRYPTO_IMPLEMENTED 0
-#endif
+/* Print verbosity = TEST */
+#define VERBOSE 3
 
-#if !defined(PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED)
-#define PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE VAL build? */
+#define VAL_NSPE_BUILD
 
-#if !defined(PSA_PROTECTED_STORAGE_IMPLEMENTED)
-#define PSA_PROTECTED_STORAGE_IMPLEMENTED 0
-#endif
+/* NSPE or SPE TEST build? */
+#define NONSECURE_TEST_BUILD
 
-#if !defined(PSA_INITIAL_ATTESTATION_IMPLEMENTED)
-#define PSA_INITIAL_ATTESTATION_IMPLEMENTED 0
-#endif
+/* Combine test archive or binary? */
+#define TEST_COMBINE_ARCHIVE
 
-#if (PSA_IPC_IMPLEMENTED == 0) && \
-    (PSA_CRYPTO_IMPLEMENTED == 0) && \
-    (PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_PROTECTED_STORAGE_IMPLEMENTED == 0) && \
-    (PSA_INITIAL_ATTESTATION_IMPLEMENTED == 0)
-#error "You must define at least one of these macros to run test suite"
-#endif
+/* If not defined, skip watchdog programming */
+#define WATCHDOG_AVAILABLE
 
-#if !defined(VERBOSE)
-#define VERBOSE 3 /* Print verbosity = TEST */
-#endif
-
-#if (!defined(VAL_NSPE_BUILD) && !defined(SPE_BUILD))
-#define VAL_NSPE_BUILD 1
-#endif
-
-#if (!defined(NONSECURE_TEST_BUILD) && !defined(SPE_BUILD))
-#define NONSECURE_TEST_BUILD 1
-#endif
-
-#if !defined(TEST_COMBINE_ARCHIVE)
-#define TEST_COMBINE_ARCHIVE 0 /* Combine test archive or binary? */
-#endif
-
-#if !defined(WATCHDOG_AVAILABLE)
-#define WATCHDOG_AVAILABLE 0 /* If zero, skip watchdog programming */
-#endif
-
-#if !defined(SP_HEAP_MEM_SUPP)
-#define SP_HEAP_MEM_SUPP 0 /* Are Dynamic funcs available to secure partition? */
-#endif
+/* Are Dynamic memory APIs available to secure partition? */
+#define SP_HEAP_MEM_SUPP
+#endif /* PSA_CMAKE_BUILD */
 
 /*
  * Include of PSA defined Header files
  */
-
-#if PSA_IPC_IMPLEMENTED
+#ifdef IPC
 /* psa/client.h: Contains the PSA Client API elements */
 #include "psa/client.h"
 
@@ -96,22 +62,22 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#if PSA_CRYPTO_IMPLEMENTED
+#ifdef CRYPTO
 /* psa/crypto.h: Contains the PSA Crypto API elements */
 #include "psa/crypto.h"
 #endif
 
-#if PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED
+#ifdef INTERNAL_TRUSTED_STORAGE
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#if PSA_PROTECTED_STORAGE_IMPLEMENTED
+#ifdef PROTECTED_STORAGE
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
 
-#if PSA_INITIAL_ATTESTATION_IMPLEMENTED
+#ifdef INITIAL_ATTESTATION
 /* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
 #include "psa/initial_attestation.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/target.cmake b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/target.cmake
new file mode 100644
index 0000000..5c5c942
--- /dev/null
+++ b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/target.cmake
@@ -0,0 +1,106 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# PAL C source files part of NSPE library
+list(APPEND PAL_SRC_C_NSPE )
+
+# PAL ASM source files part of NSPE library
+list(APPEND PAL_SRC_ASM_NSPE )
+
+# PAL C source files part of SPE library - driver partition
+list(APPEND PAL_SRC_C_DRIVER_SP )
+
+# PAL ASM source files part of SPE library - driver partition
+list(APPEND PAL_SRC_ASM_DRIVER_SP )
+
+
+# Listing all the sources required for given target
+if(${SUITE} STREQUAL "IPC")
+	list(APPEND PAL_SRC_C_NSPE
+		# driver functionalities are implemented as RoT-services
+		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+	)
+	list(APPEND PAL_SRC_C_DRIVER_SP
+		# Driver files will be compiled as part of driver partition
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+else()
+	list(APPEND PAL_SRC_C_NSPE
+		# driver files will be compiled as part of NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
+	)
+endif()
+if(${SUITE} STREQUAL "CRYPTO")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+	)
+endif()
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_eat.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+	)
+endif()
+
+# Create NSPE library
+add_library(${PSA_TARGET_PAL_NSPE_LIB} STATIC ${PAL_SRC_C_NSPE} ${PAL_SRC_ASM_NSPE})
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+list(APPEND PAL_DRIVER_INCLUDE_PATHS
+	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk
+)
+
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PAL_DRIVER_INCLUDE_PATHS}
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+)
+
+if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
+target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
+	${PSA_QCBOR_INCLUDE_PATH}
+)
+endif()
diff --git a/api-tests/dev_apis/crypto/test_c021/source.mk b/api-tests/tools/cmake/common/CMakeSettings.cmake
similarity index 73%
copy from api-tests/dev_apis/crypto/test_c021/source.mk
copy to api-tests/tools/cmake/common/CMakeSettings.cmake
index 9761866..eb812a9 100644
--- a/api-tests/dev_apis/crypto/test_c021/source.mk
+++ b/api-tests/tools/cmake/common/CMakeSettings.cmake
@@ -1,3 +1,4 @@
+#/** @file
 # * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
@@ -14,7 +15,10 @@
 # * limitations under the License.
 #**/
 
-CC_SOURCE  = test_entry_c021.c test_c021.c
-CC_OPTIONS =
-AS_SOURCE  =
-AS_OPTIONS =
+#Stop built in CMakeDetermine<lang>.cmake scripts to run.
+set (CMAKE_C_COMPILER_ID_RUN 1)
+#Stop cmake run compiler tests.
+set (CMAKE_C_COMPILER_FORCED true)
+
+set(CMAKE_STATIC_LIBRARY_PREFIX "")
+set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
diff --git a/api-tests/tools/cmake/common/Utils.cmake b/api-tests/tools/cmake/common/Utils.cmake
new file mode 100644
index 0000000..6751763
--- /dev/null
+++ b/api-tests/tools/cmake/common/Utils.cmake
@@ -0,0 +1,37 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# Function to CMake arguments
+function(_check_arguments)
+        foreach(_ARG IN LISTS ARGV)
+                if(NOT DEFINED ${_ARG})
+                        message(FATAL_ERROR "[PSA] : ${_ARG} is not passed! Please specify -D${_ARG}=<...> to CMake.")
+                endif()
+        endforeach()
+endfunction(_check_arguments)
+
+# Function to get all the folders inside given parent directory
+function(_get_sub_dir_list result parent_dir)
+        file(GLOB parent_dir_items RELATIVE ${parent_dir} ${parent_dir}/*)
+        set(dir_list "")
+        foreach(item ${parent_dir_items})
+                if(IS_DIRECTORY ${parent_dir}/${item})
+                        list(APPEND dir_list ${item})
+                endif()
+        endforeach()
+        set(${result} ${dir_list} PARENT_SCOPE)
+endfunction(_get_sub_dir_list)
diff --git a/api-tests/tools/cmake/compiler/ARMCLANG.cmake b/api-tests/tools/cmake/compiler/ARMCLANG.cmake
new file mode 100644
index 0000000..d96dc9d
--- /dev/null
+++ b/api-tests/tools/cmake/compiler/ARMCLANG.cmake
@@ -0,0 +1,63 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMKE_SYSTEM_PROCESSOR ARM)
+
+set(_C_TOOLCHAIN_NAME armclang)
+
+if(WIN32)
+        if (NOT DEFINED ARMCLANG_PATH)
+                set(ARMCLANG_PATH "C:" CACHE PATH "Install directory for ARMCLANG Compiler")
+        endif()
+else(WIN32)
+        if (NOT DEFINED ARMCLANG_PATH)
+                set(ARMCLANG_PATH "/" CACHE PATH "Install directory for ARMCLANG Compiler")
+        endif()
+endif(WIN32)
+
+find_program(
+        _C_TOOLCHAIN_PATH
+        ${_C_TOOLCHAIN_NAME}
+        PATHS env PATH
+        HINTS ${ARMCLANG_PATH}
+        HINTS bin
+)
+
+if(_C_TOOLCHAIN_PATH STREQUAL "_C_TOOLCHAIN_PATH-NOTFOUND")
+        message(FATAL_ERROR "[PSA] : Couldn't find ${_C_TOOLCHAIN_NAME}."
+                            " Either put ${_C_TOOLCHAIN_NAME} on the PATH or set ARMCLANG_PATH set properly.")
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+foreach(_LNG IN ITEMS "C" "ASM")
+        set(CMAKE_${_LNG}_COMPILER ${_C_TOOLCHAIN_PATH})
+        message(STATUS "[PSA] : ${_LNG}  compiler used '${CMAKE_${_LNG}_COMPILER}'")
+endforeach()
+
+if(${CPU_ARCH} STREQUAL armv7m)
+	set(TARGET_SWITCH "-march=armv7-m")
+elseif(${CPU_ARCH} STREQUAL armv8m_ml)
+	set(TARGET_SWITCH "-march=armv8-m.main -mcmse")
+elseif(${CPU_ARCH} STREQUAL armv8m_bl)
+	set(TARGET_SWITCH "-march=armv8-m.base -mcmse")
+endif()
+
+set(CMAKE_C_FLAGS              "--target=arm-arm-none-eabi ${TARGET_SWITCH} -Wall -Werror -fshort-enums -fshort-wchar -funsigned-char -fdata-sections -ffunction-sections -mno-unaligned-access -mfpu=none")
+set(CMAKE_ASM_FLAGS            "${TARGET_SWITCH} -mthumb")
+set(CMAKE_EXE_LINKER_FLAGS     "--strict --map --symbols --xref  --info=summarysizes,sizes,totals,unused,veneers --diag_warning=L6204")
diff --git a/api-tests/tools/cmake/compiler/GNUARM.cmake b/api-tests/tools/cmake/compiler/GNUARM.cmake
new file mode 100644
index 0000000..cede575
--- /dev/null
+++ b/api-tests/tools/cmake/compiler/GNUARM.cmake
@@ -0,0 +1,63 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMKE_SYSTEM_PROCESSOR ARM)
+
+set(_C_TOOLCHAIN_NAME arm-none-eabi-gcc)
+
+if(WIN32)
+	if (NOT DEFINED GNUARM_PATH)
+		set(GNUARM_PATH "C:" CACHE PATH "Install directory for GNUARM Compiler")
+	endif()
+else(WIN32)
+	if (NOT DEFINED GNUARM_PATH)
+		set(GNUARM_PATH "/" CACHE PATH "Install directory for GNUARM Compiler")
+	endif()
+endif(WIN32)
+
+find_program(
+	_C_TOOLCHAIN_PATH
+	${_C_TOOLCHAIN_NAME}
+	PATHS env PATH
+	HINTS ${GNUARM_PATH}
+	HINTS bin
+)
+
+if(_C_TOOLCHAIN_PATH STREQUAL "_C_TOOLCHAIN_PATH-NOTFOUND")
+        message(FATAL_ERROR "[PSA] : Couldn't find ${_C_TOOLCHAIN_NAME}."
+			    " Either put ${_C_TOOLCHAIN_NAME} on the PATH or set GNUARM_PATH set properly.")
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+foreach(_LNG IN ITEMS "C" "ASM")
+	set(CMAKE_${_LNG}_COMPILER ${_C_TOOLCHAIN_PATH})
+	message(STATUS "[PSA] : ${_LNG}  compiler used '${CMAKE_${_LNG}_COMPILER}'")
+endforeach()
+
+if(${CPU_ARCH} STREQUAL armv7m)
+	set(TARGET_SWITCH "-march=armv7-m")
+elseif(${CPU_ARCH} STREQUAL armv8m_ml)
+	set(TARGET_SWITCH "-march=armv8-m.main -mcmse")
+elseif(${CPU_ARCH} STREQUAL armv8m_bl)
+	set(TARGET_SWITCH "-march=armv8-m.base -mcmse")
+endif()
+
+set(CMAKE_C_FLAGS          "${TARGET_SWITCH}  -Wall -Werror -fdata-sections -ffunction-sections -mno-unaligned-access")
+set(CMAKE_ASM_FLAGS        "${TARGET_SWITCH} -mthumb")
+set(CMAKE_EXE_LINKER_FLAGS "-Xlinker --fatal-warnings -Xlinker --gc-sections -z max-page-size=0x400 -lgcc -lc -lnosys")
diff --git a/api-tests/tools/cmake/compiler/HOST_GCC.cmake b/api-tests/tools/cmake/compiler/HOST_GCC.cmake
new file mode 100644
index 0000000..e7be183
--- /dev/null
+++ b/api-tests/tools/cmake/compiler/HOST_GCC.cmake
@@ -0,0 +1,51 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMKE_SYSTEM_PROCESSOR x86_64)
+
+set(_C_TOOLCHAIN_NAME gcc)
+
+if(WIN32)
+	if (NOT DEFINED HOST_GCC_PATH)
+		set(HOST_GCC_PATH "C:" CACHE PATH "Install directory for Host GCC Compiler")
+	endif()
+else(WIN32)
+	if (NOT DEFINED HOST_GCC_PATH)
+		set(HOST_GCC_PATH "/" CACHE PATH "Install directory for Host GCC Compiler")
+	endif()
+endif(WIN32)
+
+find_program(
+	_C_TOOLCHAIN_PATH
+	${_C_TOOLCHAIN_NAME}
+	PATHS env PATH
+	HINTS ${HOST_GCC_PATH}
+	HINTS bin
+)
+
+if(_C_TOOLCHAIN_PATH STREQUAL "_C_TOOLCHAIN_PATH-NOTFOUND")
+        message(FATAL_ERROR "[PSA] : Couldn't find ${_C_TOOLCHAIN_NAME}."
+			    " Either put ${_C_TOOLCHAIN_NAME} on the PATH or set GNUARM_PATH set properly.")
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+foreach(_LNG IN ITEMS "C" "ASM")
+	set(CMAKE_${_LNG}_COMPILER ${_C_TOOLCHAIN_PATH})
+	message(STATUS "[PSA] : ${_LNG}  compiler used '${CMAKE_${_LNG}_COMPILER}'")
+endforeach()
diff --git a/api-tests/tools/makefiles/Makefile b/api-tests/tools/makefiles/Makefile
deleted file mode 100644
index 1aa790b..0000000
--- a/api-tests/tools/makefiles/Makefile
+++ /dev/null
@@ -1,131 +0,0 @@
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-ifeq (${SUITE}, ipc)
-SUITE_DIR = ff/$(SUITE)
-else
-SUITE_DIR = dev_apis/$(SUITE)
-endif
-
-export SUITE_IN= $(SOURCE)/$(SUITE_DIR)
-export SUITE_OUT= $(BUILD)/$(SUITE_DIR)
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-
-all: clean target_cfg gen_linker process_testsuite.db build
-
-#Generate target files from User provided data base
-target_cfg:
-	@echo  ""
-	@echo  "Processing target configuration..."
-	mkdir -p $(BUILD)/platform/${TARGET}/
-	@if [ ! -f "$(SOURCE)/platform/targets/$(TARGET)/target.cfg" ]; then { echo "Error: Target Not Found!!!"; exit 1; } fi
-	python $(SOURCE)/tools/scripts/targetConfigGen.py ${TARGET} $(SOURCE)/val/common/val_target.h \
-	$(SOURCE)/platform/targets/${TARGET}/target.cfg $(BUILD)/platform/${TARGET}/targetConfigGen.c \
-	$(BUILD)/platform/${TARGET}/target_database.h target_database ""
-	gcc -D__addr_t_defined -DTARGET_CFG_BUILD $(BUILD)/platform/${TARGET}/targetConfigGen.c -o $(BUILD)/platform/${TARGET}/targetConfigGen \
-	-I$(SOURCE)/val/nspe -I$(SOURCE)/val/common -I$(SOURCE)/platform/targets/${TARGET}/nspe/common
-	./$(BUILD)/platform/${TARGET}/targetConfigGen
-
-#Read target.cfg and update the addresses in linker script
-gen_linker:
-	@echo  ""
-	@echo  "Updating linker files..."
-	mkdir -p $(SUITE_OUT)/ $(BUILD)/val/ $(BUILD)/partition/ ;
-	perl $(SOURCE)/tools/scripts/process_test_linker_file.pl $(SOURCE) $(SUITE_OUT) ${TARGET} $(TOOLCHAIN)
-
-process_testsuite.db:
-	@echo  ""
-	@echo  "Creating testlist..."
-ifeq (${INCLUDE_PANIC_TESTS}, 1)
-	$(eval TEST_LIST := $(shell grep -o "^test....." $(SUITE_IN)/testsuite.db > $(SUITE_OUT)/.testlist.txt ; dos2unix $(SUITE_OUT)/.testlist.txt ; cat $(SUITE_OUT)/.testlist.txt))
-else
-	$(eval TEST_LIST := $(shell grep -v "^test....., panic_test" $(SUITE_IN)/testsuite.db | grep "^test" > $(SUITE_OUT)/.testlist.txt ; dos2unix $(SUITE_OUT)/.testlist.txt ; cat $(SUITE_OUT)/.testlist.txt))
-endif
-	perl $(SOURCE)/tools/scripts/gen_tests_list.pl $(BUILD) $(SUITE_OUT)/.testlist.txt $(SUITE)
-
-
-#Build framework archives and test_combine.elf
-build:  build_pal val_nspe.a test_combine.elf partition_build output_list
-
-build_pal:
-	@echo  ""
-	@echo  "----------pal build start-------------"
-	make -f $(SOURCE)/platform/targets/$(TARGET)/Makefile
-	@echo  "----------pal build complete-------------"
-
-val_nspe.a:
-	@echo  ""
-	@echo  "----------val build start-------------"
-	make -f $(SOURCE)/tools/makefiles/valbuild.mk
-	@echo  "----------val build complete-------------"
-
-test_combine.elf: test.elf
-	@echo  ""
-ifeq (${TEST_COMBINE_ARCHIVE}, 1)
-	@echo  "----------Combine NS test objects into archive start-------------"
-	$(AR) $(AR_OPTIONS) $(SUITE_OUT)/test_combine.a $(SUITE_OUT)/test*/test_*_nspe.o
-	@echo  "----------Combine NS test objects into archive complete-------------"
-else
-	@echo  "----------Combine NS test elfs into binary start-------------"
-	perl $(SOURCE)/tools/scripts/test_elf_combine.pl $(SUITE_OUT)/.testlist.txt
-	hexdump -v -e ' 1/4 "%08X" "\n"' $(SUITE_OUT)/test_elf_combine.bin > $(SUITE_OUT)/test_elf_combine.hex
-	@echo  "----------Combine NS test elfs into binary complete-------------"
-endif
-
-test.elf:
-	@echo  ""
-	@echo  "----------test build start-------------"
-	@$(foreach TEST,$(TEST_LIST), make -f $(SOURCE)/tools/makefiles/testbuild.mk  TEST=$(TEST) ;)
-	@echo  "----------test build complete-------------"
-
-partition_build:
-ifeq (${PSA_IPC_IMPLEMENTED}, 1)
-	@echo  ""
-	@echo  "----------test partition build start-------------"
-	make -f $(SOURCE)/tools/makefiles/spbuild.mk
-	@echo  "----------test partition build complete-------------"
-endif
-
-output_list:
-	@echo  ""
-	@echo  "Below are the list of output binaries/libraries. Integrate these"
-	@echo  "to your software stack to execute test suite."
-	@echo  ""
-	@echo  "a) NSPE files:"
-	@echo  " $(BUILD)/val/val_nspe.a"
-	@echo  " $(BUILD)/platform/pal_nspe.a"
-ifeq (${TEST_COMBINE_ARCHIVE}, 1)
-	@echo  " $(SUITE_OUT)/test_combine.a"
-else
-	@echo  " $(SUITE_OUT)/test_elf_combine.bin"
-endif
-	@echo  ""
-ifeq (${PSA_IPC_IMPLEMENTED}, 1)
-	@echo  "b) SPE files"
-	@echo  " $(BUILD)/partition/driver_partition.a"
-endif
-ifeq (${SUITE}, ipc)
-	@echo  " $(BUILD)/partition/client_partition.a"
-	@echo  " $(BUILD)/partition/server_partition.a"
-endif
-	@echo  ""
-
-clean:
-	@echo  ""
-	@echo  "Cleaning the build directory..."
-	rm -rf $(BUILD)/*
diff --git a/api-tests/tools/makefiles/linker/test.linker b/api-tests/tools/makefiles/linker/test.linker
deleted file mode 100644
index 69fc4d1..0000000
--- a/api-tests/tools/makefiles/linker/test.linker
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-ENTRY(TEST_START)
-
-TEST_START = 0x2004F000;
-
-MEMORY
-{
-    TEST_INFO  (R)  : ORIGIN = TEST_START, LENGTH = 0x100
-    TEST_TEXT  (RX) : ORIGIN = TEST_START +0x100, LENGTH = 0x1A00
-    TEST_DATA  (RW) : ORIGIN = TEST_START +0x1B00, LENGTH = 0x1800
-}
-
-SECTIONS
-{
-    .acs_test_info :
-    {
-        KEEP(*(.acs_test_info))
-    } > TEST_INFO
-
-    .text :
-    {
-        *(.text)
-        *(.text*)
-        *(.rodata)
-        *(.rodata*)
-    } > TEST_TEXT
-
-    .data :
-    {
-        *(.data)
-        *(.data*)
-    } > TEST_DATA
-
-    .bss :
-    {
-        *(.bss)
-        *(.bss.*)
-        *(COMMON)
-    } > TEST_DATA
-}
diff --git a/api-tests/tools/makefiles/linker/test.sct b/api-tests/tools/makefiles/linker/test.sct
deleted file mode 100644
index 4de849d..0000000
--- a/api-tests/tools/makefiles/linker/test.sct
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#define TEST_CODE_START 0x0
-#define TEST_INFO_SIZE  0x100
-#define TEST_TEXT_SIZE  0x1A00
-#define TEST_DATA_SIZE  0x1800
-
-LR_CODE TEST_CODE_START
-{
-
-    ER_CODE TEST_CODE_START (TEST_INFO_SIZE+TEST_TEXT_SIZE+TEST_DATA_SIZE)
-    {
-        test_entry_*_nspe.o(.acs_test_info +FIRST)
-        * (+CODE)
-        * (+RO)
-        * (+ZI +RW)
-    }
-
-}
diff --git a/api-tests/tools/makefiles/spbuild.mk b/api-tests/tools/makefiles/spbuild.mk
deleted file mode 100644
index 1479e74..0000000
--- a/api-tests/tools/makefiles/spbuild.mk
+++ /dev/null
@@ -1,74 +0,0 @@
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-INCLUDE= -I$(SOURCE)/val/common/ \
-         -I$(SOURCE)/val/nspe/ \
-         -I$(SOURCE)/val/spe/ \
-         -I$(SOURCE)/ \
-         -I$(SOURCE)/ff/partition/common/ \
-         -I$(SOURCE)/ff/partition/ipc/ \
-         -I$(BUILD)/partition/ \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(SOURCE)/platform/targets/$(TARGET)/spe
-
-VPATH=$(SOURCE)/val/common/:\
-      $(SOURCE)/val/nspe/:\
-      $(SOURCE)/val/spe/:\
-      $(SOURCE)/ff/partition/common/: \
-      $(SOURCE)/ff/partition/ipc/
-
-
-CC_SOURCE += driver_partition.c val_driver_service_apis.c
-
-ifeq (${SUITE}, ipc)
-CC_SOURCE += client_partition.c server_partition.c
-all:  mkdir compile_c compile_asm driver_partition.a client_partition.a server_partition.a
-else
-all:  mkdir compile_c compile_asm driver_partition.a
-endif
-
-
-mkdir:
-	@mkdir -p $(BUILD)/partition/
-
-compile_c: $(CC_SOURCE:%.c=$(BUILD)/partition/%.o)
-compile_asm: $(AS_SOURCE:%.s=$(BUILD)/partition/%.o)
-
-$(BUILD)/partition/%.o : %.c
-	$(CC) -DSPE_BUILD -o $@ -c $<
-
-$(BUILD)/partition/%.o : %.s
-	$(AS) -o $@ $<
-
-client_partition.a:
-ifeq ($(wildcard $(SUITE_OUT)/test_i*/.*),)
-	$(AR) $(AR_OPTIONS) $(BUILD)/partition/client_partition.a $(BUILD)/partition/client_partition.o $(SUITE_OUT)/test*/test_l*_spe.o
-else ifeq ($(wildcard $(SUITE_OUT)/test_l*/.*),)
-	$(AR) $(AR_OPTIONS) $(BUILD)/partition/client_partition.a $(BUILD)/partition/client_partition.o $(SUITE_OUT)/test*/test_i*_spe.o
-else
-	$(AR) $(AR_OPTIONS) $(BUILD)/partition/client_partition.a $(BUILD)/partition/client_partition.o $(SUITE_OUT)/test*/test_i*_spe.o $(SUITE_OUT)/test*/test_l*_spe.o
-endif
-
-server_partition.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/partition/server_partition.a $(BUILD)/partition/server_partition.o $(SUITE_OUT)/test*/test_supp_*_spe.o
-
-driver_partition.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/partition/driver_partition.a $(BUILD)/platform/spe/*_driver_sp.o $(BUILD)/partition/driver_partition.o $(BUILD)/partition/val_driver_service_apis.o
diff --git a/api-tests/tools/makefiles/testbuild.mk b/api-tests/tools/makefiles/testbuild.mk
deleted file mode 100644
index 373111d..0000000
--- a/api-tests/tools/makefiles/testbuild.mk
+++ /dev/null
@@ -1,78 +0,0 @@
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-include $(SUITE_IN)/$(TEST)/source.mk
-
-INCLUDE= -I$(SOURCE)/val/common/ \
-         -I$(SOURCE)/val/nspe/ \
-         -I$(SOURCE)/val/spe/ \
-         -I$(SOURCE)/ \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/ \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(SUITE_IN)/$(TEST)/\
-         -I$(SUITE_IN)/include/ \
-         -I$(BUILD)/val/
-
-ifeq (${SUITE}, protected_storage)
-INCLUDE += -I$(SUITE_IN)/../internal_trusted_storage/$(TEST)
-endif
-
-VPATH=$(SOURCE)/val/common/:\
-      $(SOURCE)/val/nspe/:\
-      $(SOURCE)/val/spe/:\
-      $(SUITE_IN)/$(TEST)/:\
-      $(SUITE_IN)/include/:
-
-ifeq (${SUITE}, protected_storage)
-VPATH += $(SUITE_IN)/../internal_trusted_storage/$(TEST)/
-endif
-
-
-all:  mkdir compile_c_nspe compile_asm_nspe test.elf compile_c_spe compile_asm_spe
-
-mkdir:
-	mkdir -p $(SUITE_OUT)/$(TEST)/
-
-compile_c_nspe: $(CC_SOURCE:%.c=$(SUITE_OUT)/$(TEST)/%_nspe.o)
-compile_asm_nspe: $(AS_SOURCE:%.s=$(SUITE_OUT)/$(TEST)/%_nspe.o)
-
-$(SUITE_OUT)/$(TEST)/%_nspe.o : %.c
-	$(CC) -D NONSECURE_TEST_BUILD -DVAL_NSPE_BUILD -o $@ -c $<
-
-$(SUITE_OUT)/$(TEST)/%_nspe.o : %.s
-	$(AS) -o $@ $<
-
-# Generated %_spe.o(s) are used in spbuild.mk to create final client_partition.a and server_partition.a
-compile_c_spe: $(CC_SOURCE_SPE:%.c=$(SUITE_OUT)/$(TEST)/%_spe.o)
-compile_asm_spe: $(AS_SOURCE_SPE:%.s=$(SUITE_OUT)/$(TEST)/%_spe.o)
-
-$(SUITE_OUT)/$(TEST)/%_spe.o : %.c
-	$(CC) -DSPE_BUILD -o $@ -c $<
-
-$(SUITE_OUT)/$(TEST)/%_spe.o : %.s
-	$(AS) -o $@ $<
-
-test.elf:
-ifeq (${TOOLCHAIN}, GNUARM)
-	$(LD) -Xlinker -Map=$(SUITE_OUT)/$(TEST)/test.map -o $(SUITE_OUT)/$(TEST)/test.elf -T$(SUITE_OUT)/.test.linker $(SUITE_OUT)/$(TEST)/*_nspe.o
-else
-	$(LD)  --scatter=$(SUITE_OUT)/.test.sct  --list=$(SUITE_OUT)/$(TEST)/test.map -o $(SUITE_OUT)/$(TEST)/test.elf  $(SUITE_OUT)/$(TEST)/*_nspe.o
-endif
-	$(DS)  $(SUITE_OUT)/$(TEST)/test.elf >  $(SUITE_OUT)/$(TEST)/test.disass
-
diff --git a/api-tests/tools/makefiles/toolchain.mk b/api-tests/tools/makefiles/toolchain.mk
deleted file mode 100644
index 699e6bb..0000000
--- a/api-tests/tools/makefiles/toolchain.mk
+++ /dev/null
@@ -1,119 +0,0 @@
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-TOOLCHAIN=GNUARM
-PREFIX=
-
-#### GNUARM OPTIONS - START ####
-ifneq (,$(findstring $(TOOLCHAIN),GNUARM-GCC))
-    ifeq (${TOOLCHAIN}, GNUARM)
-    PREFIX=arm-none-eabi-
-    endif
-
-    ifeq (${CPU_ARCH}, armv7m)
-    TARGET_SWITCH= -march=armv7-m
-    else
-        ifeq (${CPU_ARCH}, armv8m_ml)
-        TARGET_SWITCH= -march=armv8-m.main -mcmse
-        else
-        TARGET_SWITCH= -march=armv8-m.base -mcmse
-        endif
-    endif
-
-COMPILER= $(PREFIX)gcc
-ASSEMBLER= $(PREFIX)as
-AR= $(PREFIX)ar
-LINKER= $(PREFIX)gcc
-OBJDUMP=$(PREFIX)objdump
-
-COMPILER_OPTIONS= $(TARGET_SWITCH) -Wall -Werror -fdata-sections -ffunction-sections -mno-unaligned-access
-
-ASSEMBLER_OPTIONS= $(TARGET_SWITCH) -mthumb
-AR_OPTIONS= -rcs
-LINKER_OPTIONS= $(TARGET_SWITCH) -mthumb -Wall -Werror -O0 -fdata-sections \
-				-ffunction-sections -Xlinker --fatal-warnings -Xlinker --gc-sections \
-				-z max-page-size=0x400 -lgcc -lc -lnosys
-OBJDUMP_OPTIONS= -d
-endif #GNUARM-GCC
-#### GNUARM OPTIONS - END ####
-
-#### ARMCLANG OPTIONS - START ####
-ifeq (${TOOLCHAIN}, ARMCLANG)
-
-COMPILER= armclang
-ASSEMBLER= armclang
-AR= armar
-LINKER= armlink
-OBJDUMP=fromelf
-
-    ifeq (${CPU_ARCH}, armv7m)
-    TARGET_SWITCH= -march=armv7-m
-    TARGET_SWITCH_LD= --cpu=7-M
-    else
-        ifeq (${CPU_ARCH}, armv8m_ml)
-        TARGET_SWITCH= -march=armv8-m.main -mcmse
-        TARGET_SWITCH_LD= --cpu=8-M.Main
-        else
-        TARGET_SWITCH= -march=armv8-m.base -mcmse
-        TARGET_SWITCH_LD= --cpu=8-M.Base
-        endif
-    endif
-
-COMPILER_OPTIONS= --target=arm-arm-none-eabi $(TARGET_SWITCH) -Wall -Werror -fshort-enums -fshort-wchar -funsigned-char -fdata-sections -ffunction-sections -mno-unaligned-access -mfpu=none
-AR_OPTIONS= --create -cr
-LINKER_OPTIONS= --strict --map --symbols --xref  --info=summarysizes,sizes,totals,unused,veneers --diag_warning=L6204
-OBJDUMP_OPTIONS= -c -d --datasymbols
-endif
-#### ARMCLANG OPTIONS - END ####
-
-COMPILER_OPTIONS += -DVERBOSE=$(VERBOSE)
-
-ifeq (${TEST_COMBINE_ARCHIVE}, 1)
-COMPILER_OPTIONS += -DTEST_COMBINE_ARCHIVE=1
-endif
-
-ifeq (${WATCHDOG_AVAILABLE}, 1)
-COMPILER_OPTIONS += -DWATCHDOG_AVAILABLE=1
-endif
-
-ifeq (${SP_HEAP_MEM_SUPP}, 1)
-COMPILER_OPTIONS += -DSP_HEAP_MEM_SUPP=1
-endif
-
-ifeq (${PSA_IPC_IMPLEMENTED}, 1)
-COMPILER_OPTIONS += -DPSA_IPC_IMPLEMENTED=1
-endif
-
-ifeq (${PSA_CRYPTO_IMPLEMENTED}, 1)
-COMPILER_OPTIONS += -DPSA_CRYPTO_IMPLEMENTED=1
-endif
-
-ifeq (${PSA_PROTECTED_STORAGE_IMPLEMENTED}, 1)
-COMPILER_OPTIONS += -DPSA_PROTECTED_STORAGE_IMPLEMENTED=1
-endif
-
-ifeq (${PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED}, 1)
-COMPILER_OPTIONS += -DPSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED=1
-endif
-
-ifeq (${PSA_INITIAL_ATTESTATION_IMPLEMENTED}, 1)
-COMPILER_OPTIONS += -DPSA_INITIAL_ATTESTATION_IMPLEMENTED=1
-endif
-
-CC= $(COMPILER) $(COMPILER_OPTIONS) $(CC_OPTIONS) $(USER_INCLUDE) $(INCLUDE)
-AS= $(ASSEMBLER) $(ASSEMBLER_OPTIONS) $(AS_OPTIONS)
-LD= $(LINKER) $(LINKER_OPTIONS)
-DS= $(OBJDUMP) $(OBJDUMP_OPTIONS)
diff --git a/api-tests/tools/makefiles/valbuild.mk b/api-tests/tools/makefiles/valbuild.mk
deleted file mode 100644
index ef0ad4c..0000000
--- a/api-tests/tools/makefiles/valbuild.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-include $(SOURCE)/tools/makefiles/toolchain.mk
-
-INCLUDE= -I$(SOURCE)/val/common/ \
-         -I$(SOURCE)/val/nspe/ \
-         -I$(SOURCE)/val/spe/ \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/ \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/common \
-         -I$(SOURCE)/platform/targets/$(TARGET)/nspe/crypto \
-         -I$(BUILD)/platform/$(TARGET)/ \
-         -I$(BUILD)/val/
-
-VPATH=$(SOURCE)/val/common/:\
-      $(SOURCE)/val/nspe/:\
-      $(SOURCE)/val/spe/
-
-SRC_COMMON=
-SRC_NS= val_entry.c val_dispatcher.c val_framework.c val_crypto.c val_interfaces.c val_peripherals.c val_target.c val_protected_storage.c val_internal_trusted_storage.c val_attestation.c
-
-all: build
-
-build: mkdir build_common build_ns val_nspe.a
-
-mkdir:
-	@mkdir -p $(BUILD)/val/
-
-build_common: $(SRC_COMMON:%.c=$(BUILD)/val/%.o)
-build_ns: $(SRC_NS:%.c=$(BUILD)/val/%.o)
-
-$(BUILD)/val/%.o : %.c
-	$(CC)  $(INCLUDE) -DVAL_NSPE_BUILD  -o $@ -c $<
-
-val_nspe.a:
-	$(AR) $(AR_OPTIONS) $(BUILD)/val/val_nspe.a $(BUILD)/val/*.o
-
-clean:
-	@rm -rf $(BUILD)/val/*.o $(BUILD)/val/*.a
diff --git a/api-tests/tools/scripts/gen_tests_list.pl b/api-tests/tools/scripts/gen_tests_list.pl
deleted file mode 100644
index f98bb56..0000000
--- a/api-tests/tools/scripts/gen_tests_list.pl
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/env perl
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-
-$build=$ARGV[0];
-$tests_list=$ARGV[1];
-$suite=$ARGV[2];
-
-&gen_test_entry_info();
-&gen_secure_tests_list() if ($suite eq "ipc");
-
-sub gen_test_entry_info
-{
-    my $test_num                    = 0;
-    my $uniq_test_string            = '';
-    my $max_test_per_suite          = 200;
-    my $suite_base                  = 0;
-    my $test_entry_list             = "$build/val/test_entry_list.inc";
-    my $test_entry_fn_declare_list  = "$build/val/test_entry_fn_declare_list.inc";
-
-    if ($suite eq "crypto")
-    {
-        $suite_base = 1;
-    }
-    elsif ($suite eq "protected_storage")
-    {
-        $suite_base = 2;
-    }
-    elsif ($suite eq "internal_trusted_storage")
-    {
-        $suite_base = 3;
-    }
-    elsif ($suite eq "initial_attestation")
-    {
-        $suite_base = 4;
-    }
-
-    open(IN, $tests_list) or die "Unable to open $tests_list $!";
-    open(OUT1, '>', $test_entry_fn_declare_list) or die "Unable to open: $!";
-    open(OUT2, '>', $test_entry_list) or die "Unable to open: $!";
-
-        while(<IN>) {
-        if($_ !~ /^\//) {# exclude commented lines if any
-            chomp($_);
-            if($_ =~ /^test_(.+)/) {
-                $uniq_test_string = $1;
-                $uniq_test_string =~ s/s/p/ if ($suite eq "protected_storage");
-                print OUT1 "void test_entry_$uniq_test_string(val_api_t *val_api, psa_api_t *psa_api);\n";
-                if($_ =~ /^test_\w0*(\d+)/) {
-                    $test_num = $1 + ($max_test_per_suite * $suite_base);
-                    print OUT2 "\t{$test_num, &test_entry_$uniq_test_string},\n";
-                }
-            }
-        }
-    }
-    close IN;
-    close OUT1;
-    close OUT2;
-    print "Non-secure test entry symbol list:
-    $test_entry_list,
-    $test_entry_fn_declare_list\n";
-}
-
-sub gen_secure_tests_list
-{
-    my $test_num = 0;
-    my $test_num_prev = 0;
-    my $client_tests_list_declare = "$build/partition/client_tests_list_declare.inc";
-    my $client_tests_list         = "$build/partition/client_tests_list.inc";
-    my $server_tests_list_declare = "$build/partition/server_tests_list_declare.inc";
-    my $server_tests_list         = "$build/partition/server_tests_list.inc";
-
-    open(IN, $tests_list) or die "Unable to open $tests_list $!";
-    open(OUT1, '>', $client_tests_list_declare) or die "Unable to open: $!";
-    open(OUT2, '>', $client_tests_list) or die "Unable to open: $!";
-    open(OUT3, '>', $server_tests_list_declare) or die "Unable to open: $!";
-    open(OUT4, '>', $server_tests_list) or die "Unable to open: $!";
-
-    while(<IN>) {
-        if($_ !~ /^\//) {# exclude commented lines if any
-            chomp($_);
-            if($_ =~ /^test_\w(\d+)/) {
-                $test_num = $1;
-                print OUT1 " extern client_test_t $_\_client_tests_list[];\n";
-                print OUT3 " extern server_test_t $_\_server_tests_list[];\n";
-
-                if ($test_num - $test_num_prev > 1)
-                {
-                    for ($i = $test_num_prev; $i < ($test_num - 1); $i++)
-                    {
-                        print OUT2 "\tNULL,\n";
-                        print OUT4 "\tNULL,\n";
-                    }
-                }
-                print OUT2 "\t$_\_client_tests_list,\n";
-                print OUT4 "\t$_\_server_tests_list,\n";
-            }
-        }
-        $test_num_prev = $test_num;
-    }
-    close IN;
-    close OUT1;
-    close OUT2;
-    close OUT3;
-    close OUT4;
-
-    print "Secure test entry symbol list:
-    $client_tests_list_declare,
-    $client_tests_list,
-    $server_tests_list_declare,
-    $server_tests_list \n\n";
-}
diff --git a/api-tests/tools/scripts/gen_tests_list.py b/api-tests/tools/scripts/gen_tests_list.py
new file mode 100644
index 0000000..7d33bb5
--- /dev/null
+++ b/api-tests/tools/scripts/gen_tests_list.py
@@ -0,0 +1,126 @@
+#!/usr/bin/python
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+import sys
+
+if (len(sys.argv) != 11):
+        print("\nScript requires following inputs")
+        print("\narg1  : <INPUT  SUITE identifier>")
+        print("\narg2  : <INPUT  testsuite.db file>")
+        print("\narg3  : <INPUT  panic test>")
+        print("\narg4  : <OUTPUT testlist file>")
+        print("\narg5  : <OUTPUT test_entry_list>")
+        print("\narg6  : <OUTPUT test_entry_fn_declare_list>")
+        print("\narg7  : <OUTPUT client_tests_list_declare>")
+        print("\narg8  : <OUTPUT client_tests_list>")
+        print("\narg9  : <OUTPUT server_tests_list_declare>")
+        print("\narg10 : <OUTPUT server_tests_list>")
+        sys.exit(1)
+
+suite                      = sys.argv[1]
+testsuite_db_file          = sys.argv[2]
+panic_tests_included       = int(sys.argv[3])
+testlist_file              = sys.argv[4]
+test_entry_list            = sys.argv[5]
+test_entry_fn_declare_list = sys.argv[6]
+client_tests_list_declare  = sys.argv[7]
+client_tests_list          = sys.argv[8]
+server_tests_list_declare  = sys.argv[9]
+server_tests_list          = sys.argv[10]
+
+# Dictionary to hold the mapping between suite and the base number
+suite_with_base_dict = {"ipc":0, "crypto":1, "protected_storage":2, "internal_trusted_storage":3, "initial_attestation":4}
+
+def gen_test_list():
+	"""
+	Read the input testsuite.db file and generates the output file with list of tests
+	"""
+	with open(testlist_file, mode='w') as o_f:
+		with open(testsuite_db_file, mode='r') as i_f:
+			for line in i_f:
+				if ('test_' == line[0:5]):
+					if ((panic_tests_included == 1) and ("panic" not in line)):
+						o_f.write(line)
+					elif ((panic_tests_included == 1) and ("panic" in line)):
+						o_f.write(line[0:line.find(',')]+'\n')
+					elif ((panic_tests_included == 0) and ("panic" not in line)):
+						o_f.write(line)
+
+def gen_test_entry_info():
+	"""
+	Generate Non-secure related inc files
+	"""
+	test_num           = 0
+	uniq_test_string   = ''
+	max_test_per_suite = 200
+	suite_base         = 0
+
+	if (suite not in suite_with_base_dict.keys()):
+		print("\nProvide a valid SUITE identifier")
+		sys.exit()
+
+	with open(test_entry_list, mode='w') as o_f1, \
+             open(test_entry_fn_declare_list, mode='w') as o_f2,\
+             open(testlist_file, mode='r') as i_f:
+		for line in i_f:
+			line = line.strip()
+			test_num = int(line[6:9]) + (max_test_per_suite * suite_with_base_dict[suite])
+			if (suite == "protected_storage"):
+				uniq_test_string = 'p'+line[6:9]
+			else:
+				uniq_test_string = line[5:9]
+			o_f1.write("\t{%d, &test_entry_%s},\n" %(test_num, uniq_test_string))
+			o_f2.write("void test_entry_%s(val_api_t *val_api, psa_api_t *psa_api);\n" %(uniq_test_string))
+	print("Non-secure test entry symbol list:\n\t%s,\n\t%s" %(test_entry_list, test_entry_fn_declare_list))
+
+def gen_secure_tests_list():
+	"""
+	Generate partition related inc files
+	"""
+	test_num = 0
+	test_num_prev = 0
+
+	with open(testlist_file, mode='r') as i_f, \
+	     open(client_tests_list_declare, mode='w') as o_f1, \
+	     open(client_tests_list, mode='w') as o_f2, \
+	     open(server_tests_list_declare, mode='w') as o_f3, \
+	     open(server_tests_list, mode='w') as o_f4:
+		for line in i_f:
+			line = line.strip()
+			o_f1.write("extern client_test_t %s_client_tests_list[];\n" %(line))
+			o_f3.write("extern server_test_t %s_server_tests_list[];\n" %(line))
+
+			test_num = int(line[6:9])
+			if ((test_num - test_num_prev) > 1):
+				for num in range(test_num_prev, test_num-1):
+					o_f2.write("\tNULL,\n")
+					o_f4.write("\tNULL,\n")
+			o_f2.write("\t%s_client_tests_list,\n" %(line[0:9]));
+			o_f4.write("\t%s_server_tests_list,\n" %(line[0:9]));
+
+			test_num_prev = test_num
+
+	print("Secure test entry symbol list:\n\t%s,\n\t%s,\n\t%s,\n\t%s" \
+               %(client_tests_list_declare, client_tests_list, \
+                 server_tests_list_declare, server_tests_list))
+
+# Call routines
+gen_test_list()
+gen_test_entry_info()
+if (suite == "ipc"):
+	gen_secure_tests_list()
diff --git a/api-tests/tools/scripts/process_test_linker_file.pl b/api-tests/tools/scripts/process_test_linker_file.pl
deleted file mode 100755
index 4b0bb27..0000000
--- a/api-tests/tools/scripts/process_test_linker_file.pl
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env perl
-#/** @file
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-#inputs
-$source=$ARGV[0];
-$suite_out=$ARGV[1];
-$target=$ARGV[2];
-$toolchain=$ARGV[3];
-
-$targetConfigPath = "$source/platform/targets/$target/target.cfg";
-$linker_in = "";
-$linker_out = "";
-$ns_test_start_addr = undef;
-
-if($toolchain eq "GNUARM")
-{
-    $linker_in  = "$source/tools/makefiles/linker/test.linker";
-    $linker_out = "$suite_out/.test.linker";
-}
-else
-{
-    $linker_in  = "$source/tools/makefiles/linker/test.sct";
-    $linker_out = "$suite_out/.test.sct";
-}
-
-open(IN, $targetConfigPath) or die "Unable to open $targetConfigPath $!";
-while(<IN>) {
-    if($_ !~ /^\//) {# exclude commented lines
-        if($_ =~ /\.ns_test_addr(\s*)\=(\s*)(.+)(\s*)\;/) {
-            $ns_test_start_addr = $3;
-        }
-    }
-}
-close IN;
-
-if(defined($ns_test_start_addr))
-{
-    open(IN, $linker_in) or die "Unable to open $linker_in $!";
-    open(OUT, '>', $linker_out) or die "Unable to open: $!";
-    while(<IN>) {
-        if($_ =~ /^TEST_START/){
-            print OUT "TEST_START = $ns_test_start_addr;\n";
-        }elsif($_ =~ /#define *TEST_CODE_START/){
-            print OUT "#define TEST_CODE_START $ns_test_start_addr\n";
-        }else{
-            print OUT "$_";
-        }
-    }
-    close IN;
-    close OUT;
-    print "linker file - $linker_out\n"
-}
-else
-{
-    die ("Error: ns_test_addr is not found in target.cfg file\n");
-}
-
-if($toolchain eq "ARMCLANG")
-{
-    system("cpp -x assembler-with-cpp -w -E -o $linker_out.tmp $linker_out ") && die ("Failed to process $linker_out\n");
-    system("cp $linker_out.tmp  $linker_out");
-}
diff --git a/api-tests/tools/scripts/setup.sh b/api-tests/tools/scripts/setup.sh
deleted file mode 100755
index 7d6b36c..0000000
--- a/api-tests/tools/scripts/setup.sh
+++ /dev/null
@@ -1,497 +0,0 @@
-#!/usr/bin/env bash
-#/** @file
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-echo ""
-
-declare -a INCLUDE_PATHS
-export SUITE=" "
-export TEST_COMBINE_ARCHIVE=0
-export INCLUDE_PANIC_TESTS=0
-export WATCHDOG_AVAILABLE=0
-export SP_HEAP_MEM_SUPP=0
-export CLIENT_FILE_FOUND=0
-export SERVICE_FILE_FOUND=0
-export MANIFEST_OUT_FILE_FOUND=0
-export CRYPTO_FILE_FOUND=0
-export PROTECTED_STORAGE_FILE_FOUND=0
-export INTERNAL_TRUSTED_STORAGE_FILE_FOUND=0
-export INITIAL_ATTESTATION_FILE_FOUND=0
-export LIFECYCLE_FILE_FOUND=0
-
-IPC_HEADER_FILE_REQ="If PSA IPC implemented in your platform, include path must point to path
-where \"psa/client.h\", \"psa/service.h\", \"psa/lifecycle.h\" and test partition manifest output files
-(\"psa_manifest/sid.h\", \"psa_manifest/pid.h\" and \"psa_manifest/<manifestfilename>.h\") are located.
-"
-CRYPTO_HEADER_FILE_REQ="If PSA CRYPTO APIs are implemented into your platform then you must provide
-\"psa/crypto.h\" file to setup.sh script using --include option to compile tests and framework.
-"
-PS_HEADER_FILE_REQ="If PSA PROTECTED STORAGE APIs are implemented into your platform then you must provide
-\"psa/protected_storage.h\" file to setup.sh script using --include option to compile tests and framework.
-"
-ITS_HEADER_FILE_REQ="If PSA INTERNAL_TRUSTED_STORAGE APIs are implemented into your platform then you must provide
-\"psa/internal_trusted_storage.h\" file to setup.sh script using --include option to compile tests and framework.
-"
-ATTESTATION_HEADER_FILE_REQ="If PSA INITIAL_ATTESTATION APIs are implemented into your platform then you must provide
-\"psa/initial_attestation.h\" and \"psa/crypto.h\" file to setup.sh script using --include option to compile tests and framework.
-"
-
-HELP="
-
-Usage: setup.sh [--source SOURCE_DIR] [--build BUILD_DIR] [--target TARGET] [--suite SUITE]
-                [--toolchain TOOLCHAIN] [--cpu_arch CPU_ARCH] [--verbose PRINT_LEVEL]
-                [--include INCLUDE_PATH] [--help|-h]
-Toplevel script to build tests and framework sources for given test suite.
-
-Arguments Info:
-    --source <SOURCE_DIR>   : SOURCE_DIR pointing to architecture test suite directory structure.
-                              Default is current directory
-    --build  <BUILD_DIR>    : To select the build (output) directory. Default: BUILD/ inside current directory
-    --target <TARGET>       : Provide target string as argument.
-                              target.cfg file corresponding to input string must be avaiable at
-                              platform/targets/<TARGET>/
-    --suite <SUITE>         : Compile tests for given suite. Support values are:
-                              ipc, crypto, internal_trusted_storage, protected_storage,
-                              and initial_attestation.
-    --toolchain <TOOLCHAIN> : Build using the given TOOLCHAIN.
-                              Supported values are GNUARM (GNU Arm Embedded) and ARMCLANG (ARM Compiler 6.x).
-    --cpu_arch <CPU_ARCH>   : Provide cpu arch string as argument.
-                              Supported CPU arch are armv8m_ml, armv8m_bl and armv7m.
-    --verbose <PRINT_LEVEL> : Print verbosity level
-                              Supported print levels are:
-                                1 - INFO & above.
-                                2 - DEBUG & above.
-                                3 - TEST & above.(Default)
-                                4 - WARN & ERROR.
-                                5 - ERROR.
-    --archive_tests         : Create combine test archive(.a) file by combining available test objects files.
-                              Absence of this option would create combine test binary(.bin) by combining available test elfs
-    --include_panic_tests   : Consider panic tests (mentioned in testsuite.db of respective suite) along with functional tests
-                              for building the final executables. Absence of this option would consider only non-panic (ie, functional) tests
-    --include <INCLUDE_PATH>: Additional directory to be included into compiler search path. Provide --include <path>
-                              where path pointing to location of PSA defined header files.
-                              You can specify multiple source locations using --include option.
-                              Ex: --include <path1>  --include <path2>
-    --help|-h               : Print this help message
-
-Notes:
-1. $IPC_HEADER_FILE_REQ
-2. $CRYPTO_HEADER_FILE_REQ
-3. $PS_HEADER_FILE_REQ
-4. $ITS_HEADER_FILE_REQ
-5. $ATTESTATION_HEADER_FILE_REQ
-
-"
-
-if [ "$#" == "0" ]; then
-    echo "Error: no argument to setup.sh"
-    echo "$HELP"
-    exit 1
-fi
-
-while [  $# -gt 0 ]; do
-    case $1 in
-    --source ) shift
-                  export SOURCE=$1
-                  ;;
-       --build )  shift
-                  export BUILD="$1/BUILD"
-                  ;;
-       --target )  shift
-                  export TARGET=$1
-                  ;;
-       --suite )  shift
-                  export SUITE=$1
-                  ;;
-       --toolchain )  shift
-                  export TOOLCHAIN=$1
-                  ;;
-       --cpu_arch )  shift
-                  export CPU_ARCH=$1
-                  ;;
-       --verbose )  shift
-                  export VERBOSE=$1
-                  ;;
-       --archive_tests )
-                  export TEST_COMBINE_ARCHIVE=1
-                  ;;
-       --include_panic_tests )
-                  export INCLUDE_PANIC_TESTS=1
-                  ;;
-       --include )  shift
-                  export INCLUDE="$INCLUDE -I $1/"
-                  INCLUDE_PATHS=("${INCLUDE_PATHS[@]}" $1)
-                  ;;
-       --help | -h )
-                  echo "$HELP"
-                  exit 1
-                  ;;
-               * )
-                  echo "Error: Invaid argument $1"
-                  echo "$HELP"
-                  exit 1
-        esac
-        shift
-done
-
-echo "----------Process input arguments- start-------------"
-if [ -z "$SOURCE" ]
-then
-   export SOURCE=./
-   echo "--source option is not provided, hence setting \$SOURCE to present dir"
-else
-   echo "setting \$SOURCE to $SOURCE"
-fi
-
-if [ ! -d "$SOURCE/dev_apis" ] || [ ! -d "$SOURCE/ff" ]
-then
-   echo "Error: Could not find architecture test suite directories in current path $SOURCE"
-   exit 1
-fi
-
-if [ -z "$BUILD" ]
-then
-   export BUILD="./BUILD"
-   echo "--build option is not provided, hence setting \$BUILD to ./BUILD"
-else
-   echo "setting \$BUILD to $BUILD"
-fi
-
-if [ -z "$TARGET" ]
-then
-   echo "Provide target string as argument using --target <string>"
-   exit 1
-else
-   echo "Using \$TARGET=$TARGET"
-fi
-
-if [ "$SUITE" != "ipc" ] && [ "$SUITE" != "crypto" ] &&  [ "$SUITE" != "protected_storage" ] &&
-   [ "$SUITE" != "internal_trusted_storage" ] &&  [ "$SUITE" != "initial_attestation" ]
-then
-   echo "Error: Unsupported value for --suite=$SUITE.
-   Refer help message to see supported suites"
-   exit 1
-fi
-
-PLATFORM_MAKEFILE=$SOURCE/platform/targets/$TARGET/Makefile
-PSA_IPC_IMPLEMENTED=`grep -c "^ *PSA_IPC_IMPLEMENTED\s*:=\s*1" $PLATFORM_MAKEFILE`
-PSA_CRYPTO_IMPLEMENTED=`grep -c "^ *PSA_CRYPTO_IMPLEMENTED\s*:=\s*1" $PLATFORM_MAKEFILE`
-PSA_PROTECTED_STORAGE_IMPLEMENTED=`grep -c "^ *PSA_PROTECTED_STORAGE_IMPLEMENTED\s*:=\s*1" $PLATFORM_MAKEFILE`
-PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED=`grep -c "^ *PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED\s*:=\s*1" $PLATFORM_MAKEFILE`
-PSA_INITIAL_ATTESTATION_IMPLEMENTED=`grep -c "^ *PSA_INITIAL_ATTESTATION_IMPLEMENTED\s*:=\s*1" $PLATFORM_MAKEFILE`
-WATCHDOG_AVAILABLE=`grep -c "^ *watchdog.num\s*=\s*1\s*;" $SOURCE/platform/targets/$TARGET/target.cfg`
-SP_HEAP_MEM_SUPP=`grep -c "^ *dut.0.sp_heap_mem_supp\s*=\s*AVAILABLE\s*;" $SOURCE/platform/targets/$TARGET/target.cfg`
-
-# Check PSA_IPC_IMPLEMENTED validity
-if [ $SUITE == "ipc" ] && [ $PSA_IPC_IMPLEMENTED == "0" ]
-then
-   echo "Error: PSA_IPC_IMPLEMENTED must be set to 1 for ipc suite
-         in $PLATFORM_MAKEFILE"
-   exit 1
-fi
-
-# Check PSA_CRYPTO_IMPLEMENTED validity
-if [ $SUITE == "crypto" ] && [ $PSA_CRYPTO_IMPLEMENTED == "0" ]
-then
-   echo "Error: PSA_CRYPTO_IMPLEMENTED must be set to 1 for crypto suite
-         in $PLATFORM_MAKEFILE"
-   exit 1
-fi
-
-# Check PSA_PROTECTED_STORAGE_IMPLEMENTED validity
-if [ $SUITE == "protected_storage" ] && [ $PSA_PROTECTED_STORAGE_IMPLEMENTED == "0" ]
-then
-   echo "Error: PSA_PROTECTED_STORAGE_IMPLEMENTED must be set to 1 for protected_storage suite
-         in $PLATFORM_MAKEFILE"
-   exit 1
-fi
-
-# Check PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED validity
-if [ $SUITE == "internal_trusted_storage" ] && [ $PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED == "0" ]
-then
-   echo "Error: PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED must be set to 1 for internal_trusted_storage suite
-         in $PLATFORM_MAKEFILE"
-   exit 1
-fi
-
-# Check PSA_INITIAL_ATTESTATION_IMPLEMENTED validity
-if [ $SUITE == "initial_attestation" ] && [ $PSA_INITIAL_ATTESTATION_IMPLEMENTED == "0" ]
-then
-   echo "Error: PSA_INITIAL_ATTESTATION_IMPLEMENTED must be set to 1 for initial_attestation suite
-         in $PLATFORM_MAKEFILE"
-   exit 1
-fi
-
-if [ $PSA_IPC_IMPLEMENTED == "1" ]
-then
-    # Check --include validity for ipc suite
-    if [ -z "$INCLUDE" ]
-    then
-          echo "Error: --include option is not provided. $IPC_HEADER_FILE_REQ"
-          exit 1
-    else
-        for path in "${INCLUDE_PATHS[@]}"
-        do
-            if [ -f "$path/psa/client.h" ]
-            then
-                export CLIENT_FILE_FOUND=1
-            fi
-            if [ -f "$path/psa/service.h" ]
-            then
-                export SERVICE_FILE_FOUND=1
-            fi
-            if [ -f "$path/psa_manifest/sid.h" ] && [ -f "$path/psa_manifest/pid.h" ]
-            then
-                export MANIFEST_OUT_FILE_FOUND=1
-            fi
-            if [ -f "$path/psa/lifecycle.h" ]
-            then
-                export LIFECYCLE_FILE_FOUND=1
-            fi
-        done
-        if [ $CLIENT_FILE_FOUND ==  "0" ]
-        then
-            echo "Couldn't find psa/client.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$IPC_HEADER_FILE_REQ"
-            exit 1
-        fi
-        if [ $SERVICE_FILE_FOUND == "0" ]
-        then
-            echo "Couldn't find psa/service.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$IPC_HEADER_FILE_REQ"
-            exit 1
-        fi
-        if [ $MANIFEST_OUT_FILE_FOUND == "0" ]
-        then
-            echo "Couldn't find psa_manifest/sid.h or psa_manifest/pid.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$IPC_HEADER_FILE_REQ"
-            exit 1
-        fi
-        if [ $LIFECYCLE_FILE_FOUND ==  "0" ]
-        then
-            echo "Couldn't find psa/lifecycle.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$IPC_HEADER_FILE_REQ"
-            exit 1
-        fi
-    fi
-fi
-
-if [ $PSA_CRYPTO_IMPLEMENTED == "1" ]
-then
-    # Check --include validity for crypto suite
-    if [ -z "$INCLUDE" ]
-    then
-          echo "Error: --include option is not provided."
-          echo "$CRYPTO_HEADER_FILE_REQ"
-          exit 1
-    else
-        for path in "${INCLUDE_PATHS[@]}"
-        do
-            if [ -f "$path/psa/crypto.h" ]
-            then
-                export CRYPTO_FILE_FOUND=1
-            fi
-        done
-        if [ $CRYPTO_FILE_FOUND ==  "0" ]
-        then
-            echo "Couldn't find psa/crypto.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$CRYPTO_HEADER_FILE_REQ"
-            exit 1
-        fi
-    fi
-fi
-
-if [ $PSA_PROTECTED_STORAGE_IMPLEMENTED == "1" ]
-then
-    # Check --include validity for protected storage suite
-    if [ -z "$INCLUDE" ]
-    then
-          echo "Error: --include option is not provided."
-          echo "$PS_HEADER_FILE_REQ"
-          exit 1
-    else
-        for path in "${INCLUDE_PATHS[@]}"
-        do
-            if [ -f "$path/psa/protected_storage.h" ]
-            then
-                export PROTECTED_STORAGE_FILE_FOUND=1
-            fi
-        done
-        if [ $PROTECTED_STORAGE_FILE_FOUND ==  "0" ]
-        then
-            echo "Couldn't find psa/protected_storage.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$PS_HEADER_FILE_REQ"
-            exit 1
-        fi
-    fi
-fi
-
-if [ $PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED == "1" ]
-then
-    # Check --include validity for internal trusted storage suite
-    if [ -z "$INCLUDE" ]
-    then
-          echo "Error: --include option is not provided."
-          echo "$ITS_HEADER_FILE_REQ"
-          exit 1
-    else
-        for path in "${INCLUDE_PATHS[@]}"
-        do
-            if [ -f "$path/psa/internal_trusted_storage.h" ]
-            then
-                export INTERNAL_TRUSTED_STORAGE_FILE_FOUND=1
-            fi
-        done
-        if [ $INTERNAL_TRUSTED_STORAGE_FILE_FOUND ==  "0" ]
-        then
-            echo "Couldn't find psa/internal_trusted_storage.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$ITS_HEADER_FILE_REQ"
-            exit 1
-        fi
-    fi
-fi
-
-if [ $PSA_INITIAL_ATTESTATION_IMPLEMENTED == "1" ]
-then
-    # Check --include validity for initial_attestation suite
-    if [ -z "$INCLUDE" ]
-    then
-          echo "Error: --include option is not provided."
-          echo "$ATTESTATION_HEADER_FILE_REQ"
-          exit 1
-    else
-        for path in "${INCLUDE_PATHS[@]}"
-        do
-            if [ -f "$path/psa/initial_attestation.h" ]
-            then
-                export INITIAL_ATTESTATION_FILE_FOUND=1
-            fi
-            if [ -f "$path/psa/crypto.h" ]
-            then
-                export CRYPTO_FILE_FOUND=1
-            fi
-        done
-
-        if [ $INITIAL_ATTESTATION_FILE_FOUND ==  "0" ]
-        then
-            echo "Couldn't find psa/initial_attestation.h file in paths: ${INCLUDE_PATHS[@]}"
-            echo "$ATTESTATION_HEADER_FILE_REQ"
-            exit 1
-        elif [ $INITIAL_ATTESTATION_FILE_FOUND ==  "1" ]
-        then
-            if [ $CRYPTO_FILE_FOUND ==  "0" ]
-            then
-                echo "Couldn't find psa/crypto.h file in paths: ${INCLUDE_PATHS[@]}"
-                echo "$CRYPTO_HEADER_FILE_REQ"
-                exit 1
-            fi
-            if [ ! -d "$SOURCE/platform/targets/$TARGET/nspe/initial_attestation/ext" ]
-            then
-                git clone https://github.com/laurencelundblade/QCBOR.git $SOURCE/platform/targets/$TARGET/nspe/initial_attestation/ext
-                cd $SOURCE/platform/targets/$TARGET/nspe/initial_attestation/ext; git checkout da53227db1488dde0952bdff66c3d904dce270b3 ; cd -
-            else
-                echo "QCBOR library already cloned"
-            fi
-        fi
-    fi
-fi
-
-if [ -z "$TOOLCHAIN" ]
-then
-   export TOOLCHAIN=GNUARM
-   echo "--toolchain option is not provided, hence using default value \$TOOLCHAIN=$TOOLCHAIN"
-else
-   echo "Using \$TOOLCHAIN=$TOOLCHAIN"
-fi
-
-if [ $TOOLCHAIN != "GNUARM" ] && [ $TOOLCHAIN != "ARMCLANG" ]
-then
-   echo "Error: Unsupported value for --toolchain=$TOOLCHAIN.
-   Supported toolchain are GNUARM and ARMCLANG"
-   exit 1
-fi
-
-if [ -z "$CPU_ARCH" ]
-then
-   echo "Error: Provide cpu arch string as argument using --cpu_arch <string>"
-   echo "Supported CPU arch are armv8m_ml, armv8m_bl, armv7m"
-   exit 1
-else
-   echo "Using \$CPU_ARCH=$CPU_ARCH"
-fi
-
-if [ $CPU_ARCH != "armv8m_ml" ] && [ $CPU_ARCH != "armv8m_bl" ] && [ $CPU_ARCH != "armv7m" ]
-then
-   echo "Error: Unsupported value for --cpu_arch=$CPU_ARCH.
-   Supported CPU arch are armv8m_ml, armv8m_bl, armv7m"
-   exit 1
-fi
-
-if [ ! -z "$VERBOSE" ]
-then
-    if [ $VERBOSE != "1" ] && [ $VERBOSE != "2" ] &&
-       [ $VERBOSE != "3" ] && [ $VERBOSE != "4" ] &&
-       [ $VERBOSE != "5" ]
-    then
-        echo "Error: Unsupported value for --verbose=$VERBOSE."
-        echo "Supported print levels are:"
-        echo "1 - INFO & above."
-        echo "2 - DEBUG & above."
-        echo "3 - TEST & above."
-        echo "4 - WARN & ERROR."
-        echo "5 - ERROR."
-        exit 1
-    fi
-else
-    export VERBOSE=3
-fi
-
-if [ $INCLUDE_PANIC_TESTS == "1" ] && [ $WATCHDOG_AVAILABLE == "0" ]
-then
-   echo "
-Warning: You have set watchdog.num to 0 in $SOURCE/platform/targets/$TARGET/target.cfg
-Note - To test PSA APIs panic conditions, test harness may require to access watchdog timer
-to recover from panic and to be able to continue with next test.
-Ignore this warning if system under test has capability to reset the system
-when it encounters panic condition.
-"
-fi
-
-echo "----------Process input arguments- complete-------------"
-echo ""
-
-MAKE_OPTIONS=" SOURCE=$SOURCE "
-MAKE_OPTIONS+=" BUILD=$BUILD "
-MAKE_OPTIONS+=" TARGET=$TARGET "
-MAKE_OPTIONS+=" SUITE=$SUITE "
-MAKE_OPTIONS+=" TOOLCHAIN=$TOOLCHAIN "
-MAKE_OPTIONS+=" CPU_ARCH=$CPU_ARCH "
-MAKE_OPTIONS+=" VERBOSE=$VERBOSE "
-MAKE_OPTIONS+=" TEST_COMBINE_ARCHIVE=$TEST_COMBINE_ARCHIVE "
-MAKE_OPTIONS+=" INCLUDE_PANIC_TESTS=$INCLUDE_PANIC_TESTS "
-MAKE_OPTIONS+=" WATCHDOG_AVAILABLE=$WATCHDOG_AVAILABLE "
-MAKE_OPTIONS+=" SP_HEAP_MEM_SUPP=$SP_HEAP_MEM_SUPP "
-MAKE_OPTIONS+=" PSA_IPC_IMPLEMENTED=$PSA_IPC_IMPLEMENTED "
-MAKE_OPTIONS+=" PSA_CRYPTO_IMPLEMENTED=$PSA_CRYPTO_IMPLEMENTED "
-MAKE_OPTIONS+=" PSA_PROTECTED_STORAGE_IMPLEMENTED=$PSA_PROTECTED_STORAGE_IMPLEMENTED "
-MAKE_OPTIONS+=" PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED=$PSA_INTERNAL_TRUSTED_STORAGE_IMPLEMENTED "
-MAKE_OPTIONS+=" PSA_INITIAL_ATTESTATION_IMPLEMENTED=$PSA_INITIAL_ATTESTATION_IMPLEMENTED "
-MAKE_OPTIONS+=" USER_INCLUDE=\"$INCLUDE\" "
-
-#Build VAL/PAL static library and Tests ELFs
-echo "make -f $SOURCE/tools/makefiles/Makefile $MAKE_OPTIONS USER_INCLUDE=\"$INCLUDE\" all "
-make -f $SOURCE/tools/makefiles/Makefile $MAKE_OPTIONS USER_INCLUDE="$INCLUDE" all
diff --git a/api-tests/tools/scripts/target_cfg/CMakeLists.txt b/api-tests/tools/scripts/target_cfg/CMakeLists.txt
new file mode 100644
index 0000000..546c068
--- /dev/null
+++ b/api-tests/tools/scripts/target_cfg/CMakeLists.txt
@@ -0,0 +1,76 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# Set the minimum required version of CMake for the project
+cmake_minimum_required(VERSION 3.10)
+
+# cmake_policy
+cmake_policy(SET CMP0057 NEW)
+
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../tools/cmake)
+include("common/CMakeSettings")
+include("common/Utils")
+
+# Let the CMake look for C compiler
+project(TargetConfigGen LANGUAGES C)
+
+# Check whether required arguments are passed to CMake
+_check_arguments("OUT_DIR"
+		"TARGET"
+		"GENERATOR_FILE"
+		"INCLUDE_DIR"
+		"TARGET_CONFIGURATION_FILE"
+		"TGT_CONFIG_SOURCE_C"
+		"OUTPUT_HEADER"
+		"DATABASE_TABLE_NAME"
+		"DATABASE_TABLE_SECTION_NAME"
+		"TARGET_HEADER_GEN_INCLUDE_PATHS"
+)
+
+# add_custom_command to generate intermediate source file
+add_custom_command(
+	OUTPUT
+	${TGT_CONFIG_SOURCE_C}
+	COMMENT "[PSA] : Creating generator source ${TGT_CONFIG_SOURCE_C}"
+	COMMAND ${PYTHON_EXECUTABLE} ${GENERATOR_FILE} ${TARGET} ${INCLUDE_DIR}/val_target.h ${TARGET_CONFIGURATION_FILE} ${TGT_CONFIG_SOURCE_C} ${OUTPUT_HEADER} ${DATABASE_TABLE_NAME} ${DATABASE_TABLE_SECTION_NAME}
+)
+
+# Adding command to execute the generator
+add_custom_command(
+	OUTPUT
+	${OUTPUT_HEADER}
+	COMMENT "[PSA] : Creating output header ${OUTPUT_HEADER}"
+	COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
+)
+
+# Adding executable
+add_executable(${PROJECT_NAME} ${TGT_CONFIG_SOURCE_C})
+foreach(include_path ${TARGET_HEADER_GEN_INCLUDE_PATHS})
+	target_include_directories(${PROJECT_NAME} PRIVATE ${include_path})
+endforeach()
+set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-m32 -w")
+set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-m32")
+
+# Adding target to tell we want OUTPUT_HEADER
+add_custom_target(
+	run_generator_output ALL
+	SOURCES ${OUTPUT_HEADER}
+)
+
+# install target to put the OUTPUT_HEADER to it's final location
+get_filename_component(INSTALL_DST "${OUT_DIR}" ABSOLUTE)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_HEADER} DESTINATION ${INSTALL_DST})
diff --git a/api-tests/tools/scripts/targetConfigGen.py b/api-tests/tools/scripts/target_cfg/targetConfigGen.py
similarity index 99%
rename from api-tests/tools/scripts/targetConfigGen.py
rename to api-tests/tools/scripts/target_cfg/targetConfigGen.py
index 6442f74..fd1f7e4 100644
--- a/api-tests/tools/scripts/targetConfigGen.py
+++ b/api-tests/tools/scripts/target_cfg/targetConfigGen.py
@@ -41,6 +41,9 @@
 unique_major_groups = []
 unique_minor_components = []
 
+if section_name == "NOSECTION":
+	section_name = ""
+
 def get_minor_major_map():
 	""" This method populates the dictionary which maps between every available minor component to their major group """
 	try:
diff --git a/api-tests/tools/scripts/test_elf_combine.pl b/api-tests/tools/scripts/test_elf_combine.pl
deleted file mode 100755
index fb50e32..0000000
--- a/api-tests/tools/scripts/test_elf_combine.pl
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env perl
-#/** @file
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-use File::Find;
-use File::Basename;
-
-#Inputs
-$test_list_file = $ARGV[0];
-
-@suite_out =  split("/.testlist.txt", $test_list_file);
-
-# Final output elf file
-$output_elf = "$suite_out[0]/test_elf_combine.bin";
-
-
-my @all_elf_paths;
-@test_list = `cat $test_list_file`;
-
-
-open(OUT, '>:raw', $output_elf) or die "Unable to open: $!";
-
-# Collecting all elf file paths
-
-foreach $test (@test_list)
-{
-	chomp($test);
-	push @all_elf_paths, "$suite_out[0]/$test/test.elf";
-	if (!(-e "$suite_out[0]/$test/test.elf"))
-	{
-		print "ELF not found - $suite_out[0]/$test/test.elf\n";
-		exit 1;
-	}
-}
-
-foreach $elf (@all_elf_paths) {
-
-    # Find elf sizes
-    $elf_size = -s $elf;
-
-    # Get readelf program header info from either elf and process it
-    $out = `readelf -l $elf`;
-    if($out =~ /LOAD(\s+)(0[xX][0-9a-fA-F]+)/)
-	{
-	   $program_header = hex($2);
-    }
-
-    # Determining test_id from elf at location pointed by program header
-    open(TEST_NS_ID, '<:raw', $elf) or die "Unable to open: $!";
-    seek(TEST_NS_ID, $program_header, 0);
-    read TEST_NS_ID, $test_id_raw, 4;
-
-    $test_id = unpack('L<', $test_id_raw);
-    close TEST_NS_ID;
-
-    printf("test_id:\t%4d, ", $test_id);
-    print "ELF:$elf,\tSIZE:$elf_size\n";
-
-    # 'L' unsigned-32 ; '<' Little endian
-    print OUT pack('L<', 0xFACEFACE);
-    print OUT pack('L<', $test_id);
-    print OUT pack('L<', $elf_size);
-
-    # Temporarily closing final ELF to concatenate ELFs
-    close OUT;
-    system("cat $elf >> $output_elf");
-    # Open final ELF again
-    open(OUT, '>>:raw', $output_elf) or die "Unable to open: $!";
-}
-print OUT pack('L<', 0xC3C3C3C3);
-close OUT;
diff --git a/api-tests/val/nspe/val_attestation.c b/api-tests/val/nspe/val_attestation.c
index cd8069a..82d7191 100644
--- a/api-tests/val/nspe/val_attestation.c
+++ b/api-tests/val/nspe/val_attestation.c
@@ -30,6 +30,7 @@
 
 int32_t val_attestation_function(int type, ...)
 {
+#ifdef INITIAL_ATTESTATION
     va_list      valist;
     val_status_t status;
 
@@ -37,4 +38,7 @@
     status = pal_attestation_function(type, valist);
     va_end(valist);
     return status;
+#else
+    return VAL_STATUS_ERROR;
+#endif
 }
diff --git a/api-tests/val/nspe/val_crypto.c b/api-tests/val/nspe/val_crypto.c
index da1aced..8af2eb5 100644
--- a/api-tests/val/nspe/val_crypto.c
+++ b/api-tests/val/nspe/val_crypto.c
@@ -29,6 +29,7 @@
 **/
 int32_t val_crypto_function(int type, ...)
 {
+#ifdef CRYPTO
     va_list      valist;
     int32_t      status;
 
@@ -36,4 +37,7 @@
     status = pal_crypto_function(type, valist);
     va_end(valist);
     return status;
+#else
+    return VAL_STATUS_ERROR;
+#endif
 }
diff --git a/api-tests/val/nspe/val_dispatcher.c b/api-tests/val/nspe/val_dispatcher.c
index 8675518..eff584f 100644
--- a/api-tests/val/nspe/val_dispatcher.c
+++ b/api-tests/val/nspe/val_dispatcher.c
@@ -29,6 +29,7 @@
 uint32_t        combine_test_binary_in_ram;
 addr_t          combine_test_binary_addr;
 
+#if !defined(TEST_COMBINE_ARCHIVE)
 static const unsigned char elf_magic_header[ELF_IDENT] = {
     /* 0x7f, 'E', 'L', 'F' */
     0x7f, 0x45, 0x4c, 0x46,
@@ -116,6 +117,7 @@
     *info_addr = test_elfh.e_entry;
     return 0;
 }
+#endif
 
 /**
     @brief        - This function reads the test ELFs from RAM or secondary storage and loads into
@@ -126,7 +128,7 @@
 **/
 val_status_t val_test_load(test_id_t *test_id, test_id_t test_id_prev)
 {
-#if (TEST_COMBINE_ARCHIVE == 0)
+#if !defined(TEST_COMBINE_ARCHIVE)
     test_header_t   test_header;
     addr_t          flash_addr = combine_test_binary_addr;
 
@@ -260,7 +262,7 @@
 **/
 val_status_t val_get_test_entry_addr(addr_t *paddr)
 {
-#if (TEST_COMBINE_ARCHIVE == 0)
+#if !defined(TEST_COMBINE_ARCHIVE)
     *paddr = (addr_t)(((val_test_info_t *)g_test_info_addr)->entry_addr);
 #else
     *paddr = g_test_info_addr;
diff --git a/api-tests/val/nspe/val_framework.c b/api-tests/val/nspe/val_framework.c
index 4f6163c..dad52d6 100644
--- a/api-tests/val/nspe/val_framework.c
+++ b/api-tests/val/nspe/val_framework.c
@@ -486,7 +486,7 @@
        return;
    }
 
-#if (WATCHDOG_AVAILABLE == 1)
+#ifdef WATCHDOG_AVAILABLE
    /* Initialise watchdog */
    status = val_wd_timer_init(GET_WD_TIMOUT_TYPE(test_bitfield));
    if (VAL_ERROR(status))
@@ -518,7 +518,7 @@
 {
     val_status_t         status = VAL_STATUS_SUCCESS;
 
-#if (WATCHDOG_AVAILABLE == 1)
+#ifdef WATCHDOG_AVAILABLE
     status = val_wd_timer_disable();
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/val/nspe/val_internal_trusted_storage.c b/api-tests/val/nspe/val_internal_trusted_storage.c
index e79e9c0..5c910fd 100644
--- a/api-tests/val/nspe/val_internal_trusted_storage.c
+++ b/api-tests/val/nspe/val_internal_trusted_storage.c
@@ -29,6 +29,7 @@
 **/
 uint32_t val_its_function(int type, ...)
 {
+#ifdef INTERNAL_TRUSTED_STORAGE
     va_list      valist;
     uint32_t status;
 
@@ -36,4 +37,7 @@
     status = pal_its_function(type, valist);
     va_end(valist);
     return status;
+#else
+    return VAL_STATUS_ERROR;
+#endif
 }
diff --git a/api-tests/val/nspe/val_peripherals.c b/api-tests/val/nspe/val_peripherals.c
index dccc4e4..e7674f5 100644
--- a/api-tests/val/nspe/val_peripherals.c
+++ b/api-tests/val/nspe/val_peripherals.c
@@ -170,6 +170,7 @@
 {
     val_status_t    status = VAL_STATUS_SUCCESS;
 
+#ifdef WATCHDOG_AVAILABLE
     /* Disable watchdog Timer */
     val_wd_timer_disable();
 
@@ -186,6 +187,7 @@
     {
         return status;
     }
+#endif
 
     return status;
 }
diff --git a/api-tests/val/nspe/val_protected_storage.c b/api-tests/val/nspe/val_protected_storage.c
index 06c1f50..f3869de 100644
--- a/api-tests/val/nspe/val_protected_storage.c
+++ b/api-tests/val/nspe/val_protected_storage.c
@@ -29,6 +29,7 @@
 **/
 uint32_t val_ps_function(int type, ...)
 {
+#ifdef PROTECTED_STORAGE
     va_list      valist;
     uint32_t status;
 
@@ -36,4 +37,7 @@
     status = pal_ps_function(type, valist);
     va_end(valist);
     return status;
+#else
+    return VAL_STATUS_ERROR;
+#endif
 }
diff --git a/api-tests/val/val_nspe.cmake b/api-tests/val/val_nspe.cmake
new file mode 100644
index 0000000..91113b0
--- /dev/null
+++ b/api-tests/val/val_nspe.cmake
@@ -0,0 +1,58 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# Listing all the sources from val
+list(APPEND VAL_SRC_C_NSPE
+	${PSA_ROOT_DIR}/val/nspe/val_entry.c
+	${PSA_ROOT_DIR}/val/nspe/val_dispatcher.c
+	${PSA_ROOT_DIR}/val/nspe/val_framework.c
+	${PSA_ROOT_DIR}/val/nspe/val_crypto.c
+	${PSA_ROOT_DIR}/val/nspe/val_interfaces.c
+	${PSA_ROOT_DIR}/val/nspe/val_peripherals.c
+	${PSA_ROOT_DIR}/val/common/val_target.c
+	${PSA_ROOT_DIR}/val/nspe/val_protected_storage.c
+	${PSA_ROOT_DIR}/val/nspe/val_internal_trusted_storage.c
+	${PSA_ROOT_DIR}/val/nspe/val_attestation.c
+)
+
+# Create VAL NSPE library
+add_library(${PSA_TARGET_VAL_NSPE_LIB} STATIC ${VAL_SRC_C_NSPE})
+
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+        target_include_directories(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE ${psa_inc_path})
+endforeach()
+
+target_include_directories(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/nspe
+	${PSA_ROOT_DIR}/val/spe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+)
+
+if(${WATCHDOG_AVAILABLE} EQUAL 1)
+	target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE WATCHDOG_AVAILABLE)
+endif()
+if(${TEST_COMBINE_ARCHIVE} EQUAL 1)
+	target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE TEST_COMBINE_ARCHIVE)
+endif()
+target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE VAL_NSPE_BUILD)
+target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE TEST_COMBINE_ARCHIVE)
diff --git a/api-tests/val/val_spe.cmake b/api-tests/val/val_spe.cmake
new file mode 100644
index 0000000..c921d8a
--- /dev/null
+++ b/api-tests/val/val_spe.cmake
@@ -0,0 +1,93 @@
+#/** @file
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# Listing all the sources from val
+list(APPEND VAL_SRC_C_SPE
+	${PSA_ROOT_DIR}/val/spe/val_driver_service_apis.c
+)
+
+# Listing common sources from partition
+list(APPEND PARTITION_COMMON_SRC_C_SPE
+	${PSA_ROOT_DIR}/ff/partition/common/driver_partition.c
+)
+
+# Listing sources from partition for client
+list(APPEND PARTITION_IPC_CLIENT_SRC_C_SPE
+	${PSA_ROOT_DIR}/ff/partition/ipc/client_partition.c
+)
+# Listing sources from partition for server
+list(APPEND PARTITION_IPC_SERVER_SRC_C_SPE
+	${PSA_ROOT_DIR}/ff/partition/ipc/server_partition.c
+)
+
+foreach(src_file ${SUITE_CC_SOURCE_SPE})
+	get_filename_component(FILE_NAME ${src_file} NAME)
+	string(SUBSTRING ${FILE_NAME} 0 9 TEST_STR)
+	if(${TEST_STR} STREQUAL "test_supp")
+		list(APPEND SUITE_SERVER_CC_SRC_SPE ${src_file})
+	else()
+		list(APPEND SUITE_CLIENT_CC_SRC_SPE ${src_file})
+	endif()
+endforeach()
+
+# Create Driver partition library
+add_library(${PSA_TARGET_DRIVER_PARTITION_LIB} STATIC ${VAL_SRC_C_SPE} ${PARTITION_COMMON_SRC_C_SPE} ${PAL_SRC_C_DRIVER_SP})
+
+# Create Client partition library
+add_library(${PSA_TARGET_CLIENT_PARTITION_LIB} STATIC ${PARTITION_IPC_CLIENT_SRC_C_SPE} ${SUITE_CLIENT_CC_SRC_SPE})
+
+# Create Server partition library
+add_library(${PSA_TARGET_SERVER_PARTITION_LIB} STATIC ${PARTITION_IPC_SERVER_SRC_C_SPE} ${SUITE_SERVER_CC_SRC_SPE})
+
+target_include_directories(${PSA_TARGET_DRIVER_PARTITION_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/spe
+	${PSA_ROOT_DIR}/ff/partition/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+)
+
+# Include paths from platform for driver partition build
+foreach(inc_path ${PAL_DRIVER_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_DRIVER_PARTITION_LIB} PRIVATE ${inc_path})
+endforeach()
+
+target_include_directories(${PSA_TARGET_CLIENT_PARTITION_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/nspe
+	${PSA_ROOT_DIR}/val/spe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/ff/partition/ipc
+)
+target_include_directories(${PSA_TARGET_SERVER_PARTITION_LIB} PRIVATE
+	${CMAKE_CURRENT_BINARY_DIR}
+	${PSA_ROOT_DIR}/val/common
+	${PSA_ROOT_DIR}/val/spe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/ff/partition/ipc
+)
+
+# PSA Include directories
+foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
+	target_include_directories(${PSA_TARGET_DRIVER_PARTITION_LIB} PRIVATE ${psa_inc_path})
+	target_include_directories(${PSA_TARGET_CLIENT_PARTITION_LIB} PRIVATE ${psa_inc_path})
+	target_include_directories(${PSA_TARGET_SERVER_PARTITION_LIB} PRIVATE ${psa_inc_path})
+endforeach()
