Build: Fix scatter file target depedencies

The scatter file target collects scatter file for linking.
The target include region definitions and flash layout to preprocess the
scatter file.

The scatter file target shall link an INTERFACE library to get memory
layout information.
However, scatter file target links STATIC library platform_ns now. If
platform_ns include INTERFACE/PUBLIC source files or libraries, linker
will take those INTERFACE/PUBLIC stuff as linker script by mistake and
break the linking.

Fix the dependencies by creating a dedicated INTERFACE target:
platform_regions_defs to provide memory layout information and other NS
configurations.

Change-Id: I62f6dac0d8a64a099aa09fdd1bdb80f7f8afb2fc
Signed-off-by: David Hu <david.hu@arm.com>
diff --git a/cmake/spe-CMakeLists.cmake b/cmake/spe-CMakeLists.cmake
index 15e392d..3402ba3 100644
--- a/cmake/spe-CMakeLists.cmake
+++ b/cmake/spe-CMakeLists.cmake
@@ -33,13 +33,34 @@
         interface/include/crypto_keys
 )
 
+add_library(platform_region_defs INTERFACE)
+
+target_compile_definitions(platform_region_defs
+    INTERFACE
+        $<$<BOOL:${BL1}>:BL1>
+        $<$<BOOL:${BL2}>:BL2>
+        BL2_HEADER_SIZE=${BL2_HEADER_SIZE}
+        BL2_TRAILER_SIZE=${BL2_TRAILER_SIZE}
+        BL1_HEADER_SIZE=${BL1_HEADER_SIZE}
+        BL1_TRAILER_SIZE=${BL1_TRAILER_SIZE}
+        $<$<BOOL:${MCUBOOT_IMAGE_NUMBER}>:MCUBOOT_IMAGE_NUMBER=${MCUBOOT_IMAGE_NUMBER}>
+        $<$<BOOL:${TEST_PSA_API}>:PSA_API_TEST_${TEST_PSA_API}>
+        $<$<OR:$<CONFIG:Debug>,$<CONFIG:relwithdebinfo>>:ENABLE_HEAP>
+)
+
+target_link_libraries(platform_region_defs
+    INTERFACE
+        tfm_config
+)
+
 add_subdirectory(platform)
 
 target_link_libraries(tfm_api_ns
     PUBLIC
-        platform_ns
-        tfm_config
+        platform_region_defs
         $<$<BOOL:${CONFIG_TFM_USE_TRUSTZONE}>:${CMAKE_CURRENT_SOURCE_DIR}/interface/lib/s_veneers.o>
+    PRIVATE
+        platform_ns
 )
 
 if(BL2 AND PLATFORM_DEFAULT_IMAGE_SIGNING)
diff --git a/platform/ext/target/arm/mps2/an521/ns/CMakeLists.txt b/platform/ext/target/arm/mps2/an521/ns/CMakeLists.txt
index de50d6f..1a8487f 100644
--- a/platform/ext/target/arm/mps2/an521/ns/CMakeLists.txt
+++ b/platform/ext/target/arm/mps2/an521/ns/CMakeLists.txt
@@ -36,11 +36,10 @@
         $<$<BOOL:${PLATFORM_DEFAULT_CRYPTO_KEYS}>:PLATFORM_DEFAULT_CRYPTO_KEYS>
 )
 
-target_compile_definitions(platform_ns
-    PUBLIC
-        BL2=${BL2}
-        BL2_HEADER_SIZE=${BL2_HEADER_SIZE}
-        BL2_TRAILER_SIZE=${BL2_TRAILER_SIZE}
+# Include region_defs.h and flash_layout.h
+target_include_directories(platform_region_defs
+    INTERFACE
+        include
 )
 
 if(${CMAKE_C_COMPILER_ID} STREQUAL GNU)
diff --git a/platform/ns/toolchain_ns_ARMCLANG.cmake b/platform/ns/toolchain_ns_ARMCLANG.cmake
index eac9a3b..eb42482 100644
--- a/platform/ns/toolchain_ns_ARMCLANG.cmake
+++ b/platform/ns/toolchain_ns_ARMCLANG.cmake
@@ -367,7 +367,8 @@
     )
 
     target_link_libraries(${target}_scatter
-        platform_ns
+        PRIVATE
+            platform_region_defs
     )
 
     target_compile_options(${target}_scatter
diff --git a/platform/ns/toolchain_ns_GNUARM.cmake b/platform/ns/toolchain_ns_GNUARM.cmake
index 15c48d2..25626f7 100644
--- a/platform/ns/toolchain_ns_GNUARM.cmake
+++ b/platform/ns/toolchain_ns_GNUARM.cmake
@@ -240,7 +240,10 @@
             -xc
     )
 
-    target_link_libraries(${target}_scatter platform_ns)
+    target_link_libraries(${target}_scatter
+        PRIVATE
+            platform_region_defs
+    )
 
     add_dependencies(${target} ${target}_scatter)