Build system refactoring

The source tree is configured for a specific target as defined in the
targets directory.

The common target components are defined in targets/common. Targets
for real platform should include this directory to get the default
target libraries setup.

Change-Id: I7fced4bfacec97432cbbd4125bd5b4cdd21122e3
diff --git a/targets/corstone-300/CMakeLists.txt b/targets/corstone-300/CMakeLists.txt
index b141ac9..d162537 100644
--- a/targets/corstone-300/CMakeLists.txt
+++ b/targets/corstone-300/CMakeLists.txt
@@ -17,7 +17,7 @@
 #
 
 #############################################################################
-# Toolchain
+# Default parameters
 #############################################################################
 
 set(TARGET_CPU "cortex-m55")
@@ -26,6 +26,14 @@
     set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/toolchain/armclang.cmake")
 endif()
 
+set(ETHOSU_COMMAND_DEFAULT
+    FVP_Corstone_SSE-300_Ethos-U55
+        -C mps3_board.visualisation.disable-visualisation=1
+        -C mps3_board.telnetterminal0.start_telnet=0
+        -C mps3_board.uart0.out_file="-"
+        -C mps3_board.uart0.unbuffered_output=1
+        -C mps3_board.uart0.shutdown_tag="EXITTHESIM")
+
 #############################################################################
 # Project
 #############################################################################
@@ -34,42 +42,34 @@
 
 project(ethos-u-corstone-300 VERSION 0.0.1)
 
+include(CTest)
+
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/helpers.cmake)
 
 #############################################################################
-# Configuration
-#############################################################################
-
-set(ETHOS_U_CORE_SOFTWARE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../core_software" CACHE PATH "Path to Arm Ethos-U Core Software")
-
-#############################################################################
-# Core software
-#############################################################################
-
-set(CORE_SOFTWARE_RTOS "FreeRTOS" CACHE STRING "")
-
-add_subdirectory(${ETHOS_U_CORE_SOFTWARE_PATH} core_software)
-
-#############################################################################
 # Corstone-300
 #############################################################################
 
-add_executable(ethosu_corstone_300)
+add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../common target)
 
-target_sources(ethosu_corstone_300 PRIVATE
-    main.cpp
+# Linker script
+ethosu_target_link_options(ethosu_target_link INTERFACE
+    LINK_FILE platform
+    ENTRY Reset_Handler)
+
+# Add drivers
+target_sources(ethosu_target_startup INTERFACE
     retarget.c
-    uart.c)
+    uart.c
+    target.cpp)
 
-target_link_libraries(ethosu_corstone_300 PRIVATE
-    ethosu_core
-    $<TARGET_OBJECTS:cmsis_startup>
-    cmsis_device)
+target_compile_definitions(ethosu_core_driver PUBLIC ETHOSU)
+target_link_libraries(ethosu_target_startup INTERFACE ethosu_core_driver)
 
-add_dependencies(ethosu_corstone_300 cmsis_startup)
+###############################################################################
+# Applications
+###############################################################################
 
-target_link_options(ethosu_corstone_300 PRIVATE
-    --entry Reset_Handler)
+# Add all applications
+add_subdirectory(../../applications applications)
 
-ethosu_link_options(ethosu_corstone_300 PRIVATE
-                    LINK_FILE platform)