summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt69
1 files changed, 38 insertions, 31 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0581a2c..411b4f2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,15 +39,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_CXX_EXTENSIONS OFF)
-project(arm_ethos_u55_eval
- VERSION 21.03
- DESCRIPTION "ARM Ethos-U55 Evaluation application for MPS3 FPGA Prototyping Board and FastModel")
-
-add_compile_definitions(PRJ_VER_STR="${PROJECT_VERSION}")
-add_compile_definitions(PRJ_DES_STR="${PROJECT_DESCRIPTION}")
-
-set(CMAKE_SCRIPTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/)
-set(DOWNLOAD_DEP_DIR ${CMAKE_BINARY_DIR}/dependencies)
+set(CMAKE_SCRIPTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake)
+set(DOWNLOAD_DEP_DIR ${CMAKE_BINARY_DIR}/dependencies)
+set(CMAKE_TOOLCHAIN_DIR ${CMAKE_SCRIPTS_DIR}/toolchains)
include(${CMAKE_SCRIPTS_DIR}/source_gen_utils.cmake)
include(${CMAKE_SCRIPTS_DIR}/util_functions.cmake)
@@ -88,15 +82,28 @@ USER_OPTION(CPU_PROFILE_ENABLED "Output CPU performance profiling information. S
BOOL)
if (TARGET_PLATFORM STREQUAL mps3)
- message(STATUS "Platform: MPS3 FPGA Prototyping Board or SSE-XXX FVP")
+ message(STATUS "Platform: MPS3 FPGA Prototyping Board or FVP")
+ set(DEFAULT_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_DIR}/bare-metal-gcc.cmake)
elseif (TARGET_PLATFORM STREQUAL simple_platform)
- message(STATUS "Platform: Simple platform within minimal peripherals")
+ message(STATUS "Platform: Simple platform with minimal peripherals")
+ set(DEFAULT_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_DIR}/bare-metal-gcc.cmake)
elseif (TARGET_PLATFORM STREQUAL native)
message(STATUS "Platform: Native (Linux based x86_64/aarch64 system)")
+ set(DEFAULT_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_DIR}/native-gcc.cmake)
else ()
message(FATAL_ERROR "Invalid platform specified: ${TARGET_PLATFORM}")
endif ()
+if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
+ set(CMAKE_TOOLCHAIN_FILE ${DEFAULT_TOOLCHAIN_FILE}
+ CACHE FILEPATH "Toolchain file")
+endif()
+message(STATUS "Using CMAKE_TOOLCHAIN_FILE: ${CMAKE_TOOLCHAIN_FILE}")
+
+project(arm_ml_embedded_evaluation_kit
+ VERSION 21.05
+ DESCRIPTION "ARM ML Embedded Evaluation Kit for MPS3 FPGA and FastModel")
+
enforce_compiler_version()
setup_source_generator()
@@ -318,9 +325,11 @@ foreach(use_case ${USE_CASES})
"${SRC_GEN_DIR}/*.c"
)
- set(SRC_MAIN
- "${SRC_PATH}/application/main/Main.cc"
- )
+ set(SRC_MAIN "${SRC_PATH}/application/main/Main.cc")
+
+ set_source_files_properties(${SRC_MAIN}
+ PROPERTIES COMPILE_DEFINITIONS
+ "PRJ_VER_STR=\"${PROJECT_VERSION}\";PRJ_DES_STR=\"${PROJECT_DESCRIPTION}\"")
set(UC_LIB_NAME lib${TARGET_NAME})
@@ -364,32 +373,30 @@ foreach(use_case ${USE_CASES})
$<$<BOOL:${ETHOS_U55_ENABLED}>:${ETHOS_U55_LIBS}>
$<$<BOOL:${CMSIS_DSP_LIB}>:${CMSIS_DSP_LIB}>)
- add_executable(${TARGET_NAME} ${SRC_MAIN})
+ add_executable(${TARGET_NAME} ${SRC_MAIN} ${PLAT_RETARGET_SOURCE})
target_link_libraries(${TARGET_NAME} ${UC_LIB_NAME})
if (${CMAKE_CROSSCOMPILING})
set_target_properties(${TARGET_NAME} PROPERTIES SUFFIX ".axf")
+ add_target_map_file(${TARGET_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_NAME}.map)
endif()
if (${TARGET_PLATFORM} STREQUAL mps3)
- SET(SECTORS_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sectors/${use_case})
- file(REMOVE_RECURSE ${SECTORS_DIR})
- file(MAKE_DIRECTORY ${SECTORS_DIR})
-
- add_custom_command(TARGET ${TARGET_NAME}
- POST_BUILD
- COMMAND fromelf --bin --output=${SECTORS_DIR}/
- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_NAME}.axf)
-
- add_custom_target(
- run-${use_case} ALL
- COMMAND ${PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/py/gen_fpga_mem_map.py
- --scatter_file_path ${SCAT_FILE}
- --target_subsystem ${TARGET_SUBSYSTEM}
- --output_file_path ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/images-${use_case}.txt
- COMMENT "Generating FPGA mappings file")
+ set(SECTORS_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sectors)
+ set(SECTORS_BIN_DIR ${SECTORS_DIR}/${use_case})
+
+ file(REMOVE_RECURSE ${SECTORS_BIN_DIR})
+ file(MAKE_DIRECTORY ${SECTORS_BIN_DIR})
+ file(COPY ${MPS3_FPGA_CONFIG} DESTINATION ${SECTORS_DIR})
+
+ add_bin_generation_command(
+ TARGET_NAME ${TARGET_NAME}
+ OUTPUT_DIR ${SECTORS_BIN_DIR}
+ AXF_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_NAME}.axf
+ SECTION_PATTERNS "${MPS3_SECTION_PATTERNS}"
+ OUTPUT_BIN_NAMES "${MPS3_OUTPUT_BIN_NAMES}")
elseif (${TARGET_PLATFORM} STREQUAL native)
# If native build tests