Interface: Improvements on framework_feature

- Restrict variable replacement on "@VAR@" only
- Set PSA_FRAMEWORK_ISOLATION_LEVEL before configure_file
- Add invalid config check on:
    TFM_LIB_MODEL AND PSA_FRAMEWORK_ISOLATION_LEVEL

Change-Id: Ib3a681716dfb148f62ca4ea0c03b2de9a65b7ca5
Signed-off-by: Kevin Peng <kevin.peng@arm.com>
diff --git a/config/check_config.cmake b/config/check_config.cmake
index 2641a71..ffe0457 100644
--- a/config/check_config.cmake
+++ b/config/check_config.cmake
@@ -30,6 +30,7 @@
 tfm_invalid_config(TFM_ISOLATION_LEVEL EQUAL 3 AND NOT TFM_PLATFORM IN_LIST TFM_L3_PLATFORM_LISTS)
 tfm_invalid_config(TFM_ISOLATION_LEVEL GREATER 1 AND TFM_LIB_MODEL)
 tfm_invalid_config(TFM_ISOLATION_LEVEL GREATER 1 AND PSA_FRAMEWORK_HAS_MM_IOVEC)
+tfm_invalid_config(TFM_LIB_MODEL AND PSA_FRAMEWORK_HAS_MM_IOVEC)
 
 tfm_invalid_config(TFM_MULTI_CORE_TOPOLOGY AND TFM_LIB_MODEL)
 tfm_invalid_config(TFM_PLAT_SPECIFIC_MULTI_CORE_COMM AND NOT TFM_MULTI_CORE_TOPOLOGY)
diff --git a/config/tfm_ipc_config_default.cmake b/config/tfm_ipc_config_default.cmake
index 066a5c5..b8b16b4 100644
--- a/config/tfm_ipc_config_default.cmake
+++ b/config/tfm_ipc_config_default.cmake
@@ -8,7 +8,3 @@
 ############################ Partitions ########################################
 
 set(TFM_PSA_API          ON          CACHE BOOL      "Use PSA API instead of secure library model")
-
-# Dummy PSA_FRAMEWORK_ISOLATION_LEVEL to let framework_feature.h.in "#define" it always.
-# PSA_FRAMEWORK_ISOLATION_LEVEL should replace TFM_ISOLATION_LEVEL in the future.
-set(PSA_FRAMEWORK_ISOLATION_LEVEL   ON)
diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
index bc216b8..ec7f2d1 100644
--- a/interface/CMakeLists.txt
+++ b/interface/CMakeLists.txt
@@ -10,8 +10,10 @@
 cmake_policy(SET CMP0079 NEW)
 
 # Generate framework feature
+set(PSA_FRAMEWORK_ISOLATION_LEVEL   ${TFM_ISOLATION_LEVEL})
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/psa/framework_feature.h.in
-               ${CMAKE_BINARY_DIR}/generated/interface/include/psa/framework_feature.h)
+               ${CMAKE_BINARY_DIR}/generated/interface/include/psa/framework_feature.h
+               @ONLY)
 
 if (TFM_MULTI_CORE_TOPOLOGY)
     include(${CMAKE_SOURCE_DIR}/platform/ext/target/${TFM_PLATFORM}/preload_ns.cmake)
diff --git a/interface/include/psa/framework_feature.h.in b/interface/include/psa/framework_feature.h.in
index 7ac73a6..606c406 100644
--- a/interface/include/psa/framework_feature.h.in
+++ b/interface/include/psa/framework_feature.h.in
@@ -8,7 +8,7 @@
 #ifndef __PSA_FRAMEWORK_FEATURE_H__
 #define __PSA_FRAMEWORK_FEATURE_H__
 
-#cmakedefine PSA_FRAMEWORK_ISOLATION_LEVEL  ${TFM_ISOLATION_LEVEL}
+#cmakedefine PSA_FRAMEWORK_ISOLATION_LEVEL  @PSA_FRAMEWORK_ISOLATION_LEVEL@
 #cmakedefine01 PSA_FRAMEWORK_HAS_MM_IOVEC
 
 #endif /* __PSA_FRAMEWORK_FEATURE_H__ */