Remove dependency on cpp

Remove dependency on cpp, and instead use the specified
compiler to preprocess the linker scripts.

Signed-off-by: Jonas Ohlsson <jonas.ohlsson@arm.com>
Change-Id: I000082f8e90015b12f99ba3f616b6b3e07647873
diff --git a/applications/trustzone_inference/nonsecure/CMakeLists.txt b/applications/trustzone_inference/nonsecure/CMakeLists.txt
index a4d95ad..09cec83 100644
--- a/applications/trustzone_inference/nonsecure/CMakeLists.txt
+++ b/applications/trustzone_inference/nonsecure/CMakeLists.txt
@@ -41,6 +41,9 @@
 # Silence warning on cmse attributes
 target_compile_options(trustzone_nonsecure PRIVATE -Wno-ignored-attributes)
 
+# Add include directory for target application specifics
+target_include_directories(trustzone_nonsecure PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../${ETHOSU_TARGET})
+
 #############################################################################
 # linker configuration
 #############################################################################
diff --git a/cmake/helpers.cmake b/cmake/helpers.cmake
index 21d3a24..da954c0 100644
--- a/cmake/helpers.cmake
+++ b/cmake/helpers.cmake
@@ -41,31 +41,35 @@
     set(prop "$<TARGET_PROPERTY:${target},COMPILE_DEFINITIONS>")
 
     if (CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang")
-        set(LINK_FILE_OUT ${LINK_FILE}.scatter)
+        set(LINK_FILE_EXT scatter)
+        set(LINK_FILE_IN ${LINK_FILE}.${LINK_FILE_EXT})
         set(LINK_FILE_OPTION "--scatter")
-
-        target_link_options(${target} PUBLIC
-            --predefine=\"-D$<JOIN:${prop},\" ;--predefine=\"-D>\")
+        # Note: the -mcpu flag is added to avoid warnings caused when using the default cpu/arch.
+        set(COMPILER_PREPROCESSOR_OPTIONS -mcpu=${CMAKE_SYSTEM_PROCESSOR} --target=arm-arm-none-eabi -E -x c -P)
     elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-        set(LINK_FILE_IN ${LINK_FILE}.ld)
-        get_filename_component(LINK_FILE_OUT_BASE ${LINK_FILE} NAME)
-        set(LINK_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/${LINK_FILE_OUT_BASE}-${target}.ld)
+        set(LINK_FILE_EXT ld)
+        set(LINK_FILE_IN ${LINK_FILE}.${LINK_FILE_EXT})
         set(LINK_FILE_OPTION "-T")
-
-        add_custom_command(
-            OUTPUT ${LINK_FILE_OUT}
-            DEPENDS ${LINK_FILE_IN}
-            BYPRODUCTS ${LINK_FILE_OUT}
-            COMMAND ${CMAKE_C_COMPILER} -E -x c -P -o ${LINK_FILE_OUT} ${LINK_FILE_IN}
-            COMMAND_EXPAND_LISTS "-D$<JOIN:${prop},;-D>"
-            COMMENT "Preprocessing and generating linker script"
-            VERBATIM)
-        add_custom_target(${target}-linker-script
-            DEPENDS ${LINK_FILE_OUT}
-            VERBATIM)
-        add_dependencies(${target} ${target}-linker-script)
+        set(COMPILER_PREPROCESSOR_OPTIONS -E -x c -P)
     endif()
 
+    get_filename_component(LINK_FILE_OUT_BASE ${LINK_FILE} NAME)
+    set(LINK_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/${LINK_FILE_OUT_BASE}-${target}.${LINK_FILE_EXT})
+
+    add_custom_command(
+        OUTPUT ${LINK_FILE_OUT}
+        DEPENDS ${LINK_FILE_IN}
+        BYPRODUCTS ${LINK_FILE_OUT}
+        COMMAND ${CMAKE_C_COMPILER} ${COMPILER_PREPROCESSOR_OPTIONS} -o ${LINK_FILE_OUT} ${LINK_FILE_IN}
+        COMMAND_EXPAND_LISTS "-D$<JOIN:${prop},;-D>"
+        COMMAND_EXPAND_LISTS "-I$<JOIN:$<TARGET_PROPERTY:${target},INCLUDE_DIRECTORIES>,;-I>"
+        COMMENT "Preprocessing and generating linker script"
+        VERBATIM)
+    add_custom_target(${target}-linker-script
+        DEPENDS ${LINK_FILE_OUT}
+        VERBATIM)
+    add_dependencies(${target} ${target}-linker-script)
+
     target_link_options(${target} PUBLIC ${LINK_FILE_OPTION} ${LINK_FILE_OUT})
     set_target_properties(${target} PROPERTIES LINK_DEPENDS ${LINK_FILE_OUT})
 endfunction()
diff --git a/targets/corstone-300/platform.scatter b/targets/corstone-300/platform.scatter
index bf143dc..06a749a 100644
--- a/targets/corstone-300/platform.scatter
+++ b/targets/corstone-300/platform.scatter
@@ -1,5 +1,3 @@
-#! cpp
-
 /*
  * Copyright (c) 2019-2021 Arm Limited. All rights reserved.
  *