diff options
Diffstat (limited to 'cmake/helpers.cmake')
-rw-r--r-- | cmake/helpers.cmake | 26 |
1 files changed, 23 insertions, 3 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() |