Build: allow setting of options for psa_arch_test

Don't override any of the variables that are passed to the psa_arch_test
buildsystem if they are already defined. Allows users to set -DSUITE etc
on the command-line if more fine-grained control of the psa_arch_test
build is required.

Change-Id: I141af5eae79d7f8ad797a0f46c0ba981e703ca80
Signed-off-by: Raef Coles <raef.coles@arm.com>
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 9739744..b7e5d73 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -18,37 +18,52 @@
 
 ############################# PSA test integration #############################
 
-if(TEST_PSA_API)
-    set(SUITE ${TEST_PSA_API})
+if(TEST_PSA_API AND NOT PSA_ARCH_TESTS_BINARY_PATH)
+    if(NOT SUITE)
+        set(SUITE ${TEST_PSA_API})
+    endif()
 
     string(REGEX REPLACE ".*/" "" PSA_API_TEST_TARGET ${TFM_PLATFORM})
 
-    if (NOT "${TEST_PSA_API}" STREQUAL "IPC")
-        set(TARGET tgt_dev_apis_tfm_${PSA_API_TEST_TARGET})
-    else()
-        set(TARGET tgt_ff_tfm_${PSA_API_TEST_TARGET})
+    if(NOT TARGET)
+        if (NOT "${TEST_PSA_API}" STREQUAL "IPC")
+            set(TARGET tgt_dev_apis_tfm_${PSA_API_TEST_TARGET})
+        else()
+            set(TARGET tgt_ff_tfm_${PSA_API_TEST_TARGET})
+        endif()
     endif()
 
-    set(PSA_INCLUDE_PATHS ${CMAKE_SOURCE_DIR}/interface/include/
-                          ${PSA_ARCH_TESTS_PATH}/api-tests/platform/manifests/
-                          ${CMAKE_BINARY_DIR}/generated/interface/include
-    )
 
-    set(SP_HEAP_MEM_SUPP=0)
-    set(PLATFORM_PSA_ISOLATION_LEVEL ${TFM_ISOLATION_LEVEL})
-
-    if (${CMAKE_C_COMPILER_ID} STREQUAL GNU)
-        set(TOOLCHAIN GNUARM)
-    elseif (${CMAKE_C_COMPILER_ID} STREQUAL ARMClang)
-        set(TOOLCHAIN ARMCLANG)
+    if(NOT PSA_INCLUDE_PATHS)
+        set(PSA_INCLUDE_PATHS ${CMAKE_SOURCE_DIR}/interface/include/
+                              ${PSA_ARCH_TESTS_PATH}/api-tests/platform/manifests/
+                              ${CMAKE_BINARY_DIR}/generated/interface/include
+        )
     endif()
 
-    if (${CMAKE_SYSTEM_ARCHITECTURE} STREQUAL armv8-m.main)
-        set(CPU_ARCH armv8m_ml)
-    elseif (${CMAKE_SYSTEM_ARCHITECTURE} STREQUAL armv8-m.base)
-        set(CPU_ARCH armv8m_bl)
-    elseif (${CMAKE_SYSTEM_ARCHITECTURE} STREQUAL armv7-m)
-        set(CPU_ARCH armv7m)
+    if(NOT SP_HEAP_MEM_SUPP)
+        set(SP_HEAP_MEM_SUPP=0)
+    endif()
+    if(NOT PLATFORM_PSA_ISOLATION_LEVEL)
+        set(PLATFORM_PSA_ISOLATION_LEVEL ${TFM_ISOLATION_LEVEL})
+    endif()
+
+    if (NOT TOOLCHAIN)
+        if (${CMAKE_C_COMPILER_ID} STREQUAL GNU)
+            set(TOOLCHAIN GNUARM)
+        elseif (${CMAKE_C_COMPILER_ID} STREQUAL ARMClang)
+            set(TOOLCHAIN ARMCLANG)
+        endif()
+    endif()
+
+    if (NOT CPU_ARCH)
+        if (${CMAKE_SYSTEM_ARCHITECTURE} STREQUAL armv8-m.main)
+            set(CPU_ARCH armv8m_ml)
+        elseif (${CMAKE_SYSTEM_ARCHITECTURE} STREQUAL armv8-m.base)
+            set(CPU_ARCH armv8m_bl)
+        elseif (${CMAKE_SYSTEM_ARCHITECTURE} STREQUAL armv7-m)
+            set(CPU_ARCH armv7m)
+        endif()
     endif()
 
     add_subdirectory(${PSA_ARCH_TESTS_PATH}/api-tests ${CMAKE_CURRENT_BINARY_DIR}/psa_api_tests)