From 1efcc3f957e7f64dc8b2b9d7061c0ef7050466cd Mon Sep 17 00:00:00 2001 From: Kristofer Jonsson Date: Tue, 16 Feb 2021 17:40:25 +0100 Subject: 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 --- CMakeLists.txt | 4 ++-- applications/inference_process/CMakeLists.txt | 4 ++-- applications/message_process/CMakeLists.txt | 4 ++-- cmake/toolchain/armclang.cmake | 29 ++++++++++++++++++++++----- cmsis.cmake | 6 ++++-- 5 files changed, 34 insertions(+), 13 deletions(-) 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(applications) 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 @@ add_library(inference_process STATIC) 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(__TOOLCHAIN_LOADED TRUE) 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 @@ if(__OFFSET GREATER_EQUAL 0) 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} + "$<$:-masm=auto;--target=arm-arm-none-eabi>") # Set floating point unit if("${__CPU_COMPILE_TARGET}" MATCHES "\\+fp") @@ -48,7 +51,9 @@ if("${__CPU_COMPILE_TARGET}" MATCHES "\\+fp") 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_link_options(--lto --info common,debug,sizes,totals,veneers,unused --symbols # 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("$<$:-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 @@ target_include_directories(cmsis_core INTERFACE ${CMSIS_PATH}/CMSIS/Core/Include 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 + "$<$:-include${ARM_CPU}${ARM_FEATURES}.h>" + "$<$:-include${ARM_CPU}${ARM_FEATURES}.h>") target_link_libraries(cmsis_device INTERFACE cmsis_core) # CMSIS startup -- cgit v1.2.1