Assembly support

Update the Arm Clang toolchain file to support assembly files.

Removing cmsis_core dependency. Applications that depend on CMSIS
should add that dependency manually.

Change-Id: I42d68e6734acc88aef8f9af124b5e76079b839b5
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9d20c14..b7d3bea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+# Copyright (c) 2019-2021 Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -67,4 +67,4 @@
 add_subdirectory(drivers)
 
 # Merge libraries into static library
-target_link_libraries(ethosu_core INTERFACE tflu cmsis_core ethosu_applications ethosu_drivers)
+target_link_libraries(ethosu_core INTERFACE tflu ethosu_applications ethosu_drivers)
diff --git a/applications/inference_process/CMakeLists.txt b/applications/inference_process/CMakeLists.txt
index 97d4d8f..67caae8 100644
--- a/applications/inference_process/CMakeLists.txt
+++ b/applications/inference_process/CMakeLists.txt
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+# Copyright (c) 2019-2021 Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -22,5 +22,5 @@
 
 target_include_directories(inference_process PUBLIC include
                            PRIVATE ${TENSORFLOW_PATH} ${TENSORFLOW_PATH}/tensorflow/lite/micro/tools/make/downloads/flatbuffers/include)
-target_link_libraries(inference_process PUBLIC tflu cmsis_core cmsis_device)
+target_link_libraries(inference_process PRIVATE tflu cmsis_core cmsis_device)
 target_sources(inference_process PRIVATE src/inference_process.cpp)
\ No newline at end of file
diff --git a/applications/message_process/CMakeLists.txt b/applications/message_process/CMakeLists.txt
index ed27dcd..7390ed7 100644
--- a/applications/message_process/CMakeLists.txt
+++ b/applications/message_process/CMakeLists.txt
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+# Copyright (c) 2019-2021 Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -18,4 +18,4 @@
 
 add_library(message_process STATIC src/message_process.cpp)
 target_include_directories(message_process PUBLIC include ${LINUX_DRIVER_STACK_PATH}/kernel)
-target_link_libraries(message_process PRIVATE cmsis_core inference_process ethosu_mailbox)
+target_link_libraries(message_process PRIVATE cmsis_device inference_process ethosu_mailbox)
diff --git a/cmake/toolchain/armclang.cmake b/cmake/toolchain/armclang.cmake
index f8d299a..7d607ed 100644
--- a/cmake/toolchain/armclang.cmake
+++ b/cmake/toolchain/armclang.cmake
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+# Copyright (c) 2019-2021 Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -24,6 +24,7 @@
 set(CMAKE_SYSTEM_NAME Generic)
 set(CMAKE_C_COMPILER "armclang")
 set(CMAKE_CXX_COMPILER "armclang")
+set(CMAKE_ASM_COMPILER "armclang")
 set(CMAKE_SYSTEM_PROCESSOR "cortex-m33+nodsp" CACHE STRING "Select Cortex-M architure. (cortex-m0, cortex-m3, cortex-m33, cortex-m4, cortex-m55, cortex-m7, etc)")
 
 set(CMAKE_C_STANDARD 99)
@@ -40,7 +41,9 @@
 endif()
 
 # Add -mcpu to the compile options to override the -mcpu the CMake toolchain adds
-add_compile_options(-mcpu=${__CPU_COMPILE_TARGET})
+add_compile_options(
+    -mcpu=${__CPU_COMPILE_TARGET}
+    "$<$<COMPILE_LANGUAGE:ASM>:-masm=auto;--target=arm-arm-none-eabi>")
 
 # Set floating point unit
 if("${__CPU_COMPILE_TARGET}" MATCHES "\\+fp")
@@ -48,7 +51,9 @@
 elseif("${__CPU_COMPILE_TARGET}" MATCHES "\\+nofp")
     set(FLOAT soft)
 elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m33" OR
-       "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55")
+       "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m4" OR
+       "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55" OR
+       "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m7")
     set(FLOAT hard)
 else()
     set(FLOAT soft)
@@ -78,8 +83,22 @@
 #
 
 add_compile_options(-Wall -Wextra
-                    -Wsign-compare -Wunused -Wswitch-default -Wformat -Wdouble-promotion -Wredundant-decls -Wshadow -Wcast-align -Wnull-dereference
-                    -Wno-format-extra-args -Wno-unused-function -Wno-unused-label -Wno-missing-field-initializers -Wno-return-type)
+                    -Wsign-compare
+                    -Wunused
+                    -Wswitch-default
+                    -Wformat
+                    -Wdouble-promotion
+                    -Wredundant-decls
+                    -Wshadow
+                    -Wcast-align
+                    -Wnull-dereference
+                    -Wno-deprecated-register
+                    -Wno-format-extra-args
+                    -Wno-missing-field-initializers
+                    -Wno-unused-function
+                    -Wno-unused-label
+                    -Wno-unused-parameter
+                    -Wno-return-type)
 add_compile_options(-fno-unwind-tables -fno-rtti -fno-exceptions)
 add_compile_options(-mthumb)
 add_compile_options("$<$<CONFIG:DEBUG>:-gdwarf-3>")
diff --git a/cmsis.cmake b/cmsis.cmake
index b5b6726..fd93545 100644
--- a/cmsis.cmake
+++ b/cmsis.cmake
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+# Copyright (c) 2019-2021 Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -44,7 +44,9 @@
 add_library(cmsis_device INTERFACE)
 target_include_directories(cmsis_device INTERFACE ${CMSIS_PATH}/Device/ARM/${ARM_CPU}/Include)
 
-target_compile_options(cmsis_device INTERFACE -include${ARM_CPU}${ARM_FEATURES}.h)
+target_compile_options(cmsis_device INTERFACE
+    "$<$<COMPILE_LANGUAGE:C>:-include${ARM_CPU}${ARM_FEATURES}.h>"
+    "$<$<COMPILE_LANGUAGE:CXX>:-include${ARM_CPU}${ARM_FEATURES}.h>")
 target_link_libraries(cmsis_device INTERFACE cmsis_core)
 
 # CMSIS startup