diff options
author | Kristofer Jonsson <kristofer.jonsson@arm.com> | 2021-06-04 18:02:59 +0200 |
---|---|---|
committer | Kristofer Jonsson <kristofer.jonsson@arm.com> | 2021-06-28 10:43:50 +0200 |
commit | ec451550f961ee940e2d9393bd6a52f4d2c25685 (patch) | |
tree | 01fe598a9af85b3f8ae38a353022c83a084f633c /cmake | |
parent | dabf6b5d835ff8bba36764d3db4dcc07f826dc3f (diff) | |
download | ethos-u-core-platform-ec451550f961ee940e2d9393bd6a52f4d2c25685.tar.gz |
Buildsystem restructuring
- Allow linker file to be overriden
- Disable Trustzone build for other targets than Corstone-300
- Make toolchain TARGET_CPU variable cached
Change-Id: I98a15e1080e4bf49e029578888b1e4ce362bbab7
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/helpers.cmake | 26 | ||||
-rw-r--r-- | cmake/toolchain/arm-none-eabi-gcc.cmake | 4 | ||||
-rw-r--r-- | cmake/toolchain/armclang.cmake | 4 |
3 files changed, 25 insertions, 9 deletions
diff --git a/cmake/helpers.cmake b/cmake/helpers.cmake index da954c0..3444e64 100644 --- a/cmake/helpers.cmake +++ b/cmake/helpers.cmake @@ -27,7 +27,8 @@ function(ethosu_target_link_options target scope) cmake_parse_arguments(ARG "" "LINK_FILE;ENTRY" "" ${ARGN}) # Store the link file in a property to be evaluated by the executable. - set_property(GLOBAL PROPERTY ETHOSU_TARGET_LINK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_LINK_FILE}) + get_filename_component(LINK_FILE_PATH ${ARG_LINK_FILE} ABSOLUTE) + set_property(GLOBAL PROPERTY ETHOSU_TARGET_LINK_FILE ${LINK_FILE_PATH}) if (ARG_ENTRY) target_link_options(${target} ${scope} --entry Reset_Handler) @@ -42,17 +43,21 @@ function(ethosu_eval_link_options target) if (CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang") set(LINK_FILE_EXT scatter) - set(LINK_FILE_IN ${LINK_FILE}.${LINK_FILE_EXT}) set(LINK_FILE_OPTION "--scatter") # 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_EXT ld) - set(LINK_FILE_IN ${LINK_FILE}.${LINK_FILE_EXT}) set(LINK_FILE_OPTION "-T") set(COMPILER_PREPROCESSOR_OPTIONS -E -x c -P) endif() + if (EXISTS ${LINK_FILE}) + set(LINK_FILE_IN ${LINK_FILE}) + else() + set(LINK_FILE_IN ${LINK_FILE}.${LINK_FILE_EXT}) + 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}) @@ -140,10 +145,25 @@ endfunction() ############################################################################# function(ethosu_add_binaries target) + set(SCRIPTS_DIR ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../scripts) + add_custom_command(TARGET ${target} POST_BUILD COMMAND ${SCRIPTS_DIR}/generate_binaries.py --output ./fw $<TARGET_FILE:${target}> BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/fw/* WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generate binaries for ${target}") +endfunction() +############################################################################# +# Ethos-U NPU configuration +############################################################################# + +function(ethosu_get_architecture config) + string(TOLOWER ${config} config) + if(${config} MATCHES "^ethos-(u[0-9]+|uz)-([0-9]+$)") + set(ETHOSU_ARCH ${CMAKE_MATCH_1} PARENT_SCOPE) + set(ETHOSU_NUM_MACS ${CMAKE_MATCH_2} PARENT_SCOPE) + else() + message(FATAL_ERROR "Unknown NPU config ${config}") + endif() endfunction() diff --git a/cmake/toolchain/arm-none-eabi-gcc.cmake b/cmake/toolchain/arm-none-eabi-gcc.cmake index 2c0ebd0..b0a27fd 100644 --- a/cmake/toolchain/arm-none-eabi-gcc.cmake +++ b/cmake/toolchain/arm-none-eabi-gcc.cmake @@ -16,9 +16,7 @@ # limitations under the License. # -if (NOT TARGET_CPU) - set(TARGET_CPU "cortex-m4") -endif() +set(TARGET_CPU "cortex-m4" CACHE STRING "Target CPU") set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_C_COMPILER "arm-none-eabi-gcc") diff --git a/cmake/toolchain/armclang.cmake b/cmake/toolchain/armclang.cmake index bb29286..3fdc3a8 100644 --- a/cmake/toolchain/armclang.cmake +++ b/cmake/toolchain/armclang.cmake @@ -16,9 +16,7 @@ # limitations under the License. # -if (NOT TARGET_CPU) - set(TARGET_CPU "cortex-m4") -endif() +set(TARGET_CPU "cortex-m4" CACHE STRING "Target CPU") set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_C_COMPILER "armclang") |