diff options
author | Kshitij Sisodia <kshitij.sisodia@arm.com> | 2021-11-23 17:19:52 +0000 |
---|---|---|
committer | Kshitij Sisodia <kshitij.sisodia@arm.com> | 2021-11-23 17:19:52 +0000 |
commit | b59ba684aef4bef16262a1825e787a55fc992f0d (patch) | |
tree | 389e667ef3132727386e0800c0a63d676693185f /scripts/cmake/common_user_options.cmake | |
parent | 37926c819f77a6fe9e3ae913486ac6fc78bd2bd0 (diff) | |
download | ml-embedded-evaluation-kit-b59ba684aef4bef16262a1825e787a55fc992f0d.tar.gz |
MLECO-1935: All common CMake user options consolidated.
For easier look up and maintenance, all common CMake user options
have been consolidated in one CMake file.
NOTE: the individual use case specific options are still within
the correspoinding use case CMake files.
Change-Id: Id887f7b2c763f4d3eb997d997cf466684d0089b6
Diffstat (limited to 'scripts/cmake/common_user_options.cmake')
-rw-r--r-- | scripts/cmake/common_user_options.cmake | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/scripts/cmake/common_user_options.cmake b/scripts/cmake/common_user_options.cmake new file mode 100644 index 0000000..13c88d2 --- /dev/null +++ b/scripts/cmake/common_user_options.cmake @@ -0,0 +1,164 @@ +#---------------------------------------------------------------------------- +# Copyright (c) 2021 Arm Limited. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +# This file should contain all the common user options for the application +# For use case specific options, see individual usecase.cmake files under +# each example use case. +#---------------------------------------------------------------------------- + +if (NOT DEFINED USER_OPTIONS_INCLUDED) + set(USER_OPTIONS_INCLUDED ON) +else() + return() +endif() + +message(STATUS "Assessing common user options...") + +set(CMAKE_TOOLCHAIN_DIR ${CMAKE_CURRENT_LIST_DIR}/toolchains) +set(DEPENDENCY_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/../../dependencies) +include(${CMAKE_CURRENT_LIST_DIR}/util_functions.cmake) + +USER_OPTION(LOG_LEVEL "Log level for the application" + LOG_LEVEL_INFO + STRING) + +USER_OPTION(TENSORFLOW_SRC_PATH "Path to the root of the tensor flow directory" + "${DEPENDENCY_ROOT_DIR}/tensorflow" + PATH) + +USER_OPTION(TARGET_PLATFORM "Target platform to execute evaluation application: mps3, simple_platform, native" + mps3 + STRING) + +USER_OPTION(TARGET_SUBSYSTEM "Specify platform target subsystem: sse-300 or none" + sse-300 + STRING) + +if (TARGET_PLATFORM STREQUAL native) + set(NPU_AVAILABLE OFF) +else() + set(NPU_AVAILABLE ON) +endif() + +USER_OPTION(ETHOS_U_NPU_ENABLED "If Arm Ethos-U NPU is enabled in the target system." + ${NPU_AVAILABLE} + BOOL) + +USER_OPTION(USE_CASE_BUILD "Optional. Defines the use-case to build from the available sources. By default, all use-cases are built." + all + STRING) + +USER_OPTION(CPU_PROFILE_ENABLED "Output CPU performance profiling information. Should be used only for MPS3 board." + OFF + BOOL) + +USER_OPTION(TENSORFLOW_LITE_MICRO_BUILD_TYPE "TensorFlow Lite Mirco build type (release/debug etc.)" + $<IF:$<CONFIG:RELEASE>,release_with_logs,debug> + STRING) + +USER_OPTION(TENSORFLOW_LITE_MICRO_CLEAN_DOWNLOADS "Select if TPIP downloads should be cleaned before each build." + OFF + BOOL) + +USER_OPTION(TENSORFLOW_LITE_MICRO_CLEAN_BUILD "Select if clean target should be added to a list of targets" + ON + BOOL) + +if (NOT TARGET_PLATFORM STREQUAL native) + + USER_OPTION(CMSIS_SRC_PATH + "Path to CMSIS-5 sources" + "${DEPENDENCY_ROOT_DIR}/cmsis" + PATH) + + if (CMAKE_BUILD_TYPE STREQUAL Debug) + # For use with Arm compiler: + USER_OPTION(ARMCLANG_DEBUG_DWARF_LEVEL + "Dwarf conformance level for armclang toolchain" + "4" # Default = 4 (Arm-DS etc). For model debugger specify "3" + STRING) + endif() + + # If we need NPU libraries: + if (ETHOS_U_NPU_ENABLED) + USER_OPTION(ETHOS_U_NPU_TIMING_ADAPTER_SRC_PATH + "Path to Ethos-U NPU timing adapter sources" + "${DEPENDENCY_ROOT_DIR}/core-software/drivers/timing_adapter" + PATH + ) + + USER_OPTION(ETHOS_U_NPU_DRIVER_SRC_PATH + "Path to Ethos-U NPU core driver sources" + "${DEPENDENCY_ROOT_DIR}/core-driver" + PATH + ) + + USER_OPTION(ETHOS_U_NPU_ID "Arm Ethos-U NPU IP (U55 or U65)" + "U55" + STRING) + + if ((ETHOS_U_NPU_ID STREQUAL U55) OR (ETHOS_U_NPU_ID STREQUAL U65)) + if (ETHOS_U_NPU_ID STREQUAL U55) + set(DEFAULT_NPU_MEM_MODE "Shared_Sram") + set(DEFAULT_NPU_CONFIG_ID "H128") + elseif(ETHOS_U_NPU_ID STREQUAL U65) + set(DEFAULT_NPU_MEM_MODE "Dedicated_Sram") + set(DEFAULT_NPU_CONFIG_ID "Y256") + endif() + else () + message(FATAL_ERROR "Non compatible Ethos-U NPU processor ${ETHOS_U_NPU_ID}") + endif () + + USER_OPTION(ETHOS_U_NPU_MEMORY_MODE "Specifies the memory mode used in the Vela command." + "${DEFAULT_NPU_MEM_MODE}" + STRING) + + USER_OPTION(ETHOS_U_NPU_CONFIG_ID "Specifies the configuration ID for the NPU." + "${DEFAULT_NPU_CONFIG_ID}" + STRING) + + if (ETHOS_U_NPU_ID STREQUAL U55) + set(DEFAULT_TA_CONFIG_FILE_PATH "${CMAKE_CURRENT_LIST_DIR}/timing_adapter/ta_config_u55_high_end.cmake") + else () + set(DEFAULT_TA_CONFIG_FILE_PATH "${CMAKE_CURRENT_LIST_DIR}/timing_adapter/ta_config_u65_high_end.cmake") + endif () + + USER_OPTION(TA_CONFIG_FILE "Path to the timing adapter configuration file" + ${DEFAULT_TA_CONFIG_FILE_PATH} + FILEPATH) + endif() +endif() + +if (TARGET_PLATFORM STREQUAL mps3) + 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 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}") |