aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorKristofer Jonsson <kristofer.jonsson@arm.com>2021-06-04 18:02:59 +0200
committerKristofer Jonsson <kristofer.jonsson@arm.com>2021-06-28 10:43:50 +0200
commitec451550f961ee940e2d9393bd6a52f4d2c25685 (patch)
tree01fe598a9af85b3f8ae38a353022c83a084f633c /cmake
parentdabf6b5d835ff8bba36764d3db4dcc07f826dc3f (diff)
downloadethos-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.cmake26
-rw-r--r--cmake/toolchain/arm-none-eabi-gcc.cmake4
-rw-r--r--cmake/toolchain/armclang.cmake4
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")