From 15f80701751f09caa023dabea6dec45f3825fa5b Mon Sep 17 00:00:00 2001 From: ayamas01 Date: Thu, 18 Nov 2021 14:22:23 +0000 Subject: MLECO-2525 Upgrade to C++ 14 -Updated CMake to use C++ 14 -Removed cmsis makefile include from tensorflow.cmake -Documentation update -Added more flags for processor in CMake Change-Id: I1c2b72141e98a5cf8bb09176d7c331da3b05b4c5 --- CMakeLists.txt | 6 +++--- docs/sections/coding_guidelines.md | 4 ++-- scripts/cmake/bare-metal-sources.cmake | 2 +- scripts/cmake/tensorflow.cmake | 4 +++- scripts/cmake/toolchains/bare-metal-armclang.cmake | 10 +++++++--- scripts/cmake/toolchains/bare-metal-gcc.cmake | 9 +++++++-- .../hal/platforms/bare-metal/bsp/cmsis-device/include/cmsis.h | 4 +++- 7 files changed, 26 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d18105d..b747018 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ message(STATUS "Build type is set to ${CMAKE_BUILD_TYPE}") # Set language standards. TensorFlow Lite requires # std=c++11. set(CMAKE_C_STANDARD 99) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 14) # Make the standard a requirement => prevent fallback to previous # supported standard @@ -159,8 +159,8 @@ if (${CMAKE_CROSSCOMPILING}) set(CMSIS_HEADERS ${CMSIS_DSP_INC_DIR} ${CMSIS_CORE_INC_DIR} - ${CMSIS_SRC_PATH}/Device/ARM/ARMCM55/Include - ${CMSIS_SRC_PATH}/Device/ARM/ARMCM55/Include/Template) + ${CMSIS_SRC_PATH}/Device/ARM/${ARM_CPU}/Include + ${CMSIS_SRC_PATH}/Device/ARM/${ARM_CPU}/Include/Template) endif () # If we need NPU libraries: diff --git a/docs/sections/coding_guidelines.md b/docs/sections/coding_guidelines.md index 039b1e0..ae479f7 100644 --- a/docs/sections/coding_guidelines.md +++ b/docs/sections/coding_guidelines.md @@ -27,8 +27,8 @@ conventions, the intended outcome could be different for every case. ## Language version -For this project, code written in C++ uses a subset of the `C++11` feature set and software may be written using the -`C++11` language standard. Code written in C is compatible with the `C99` standard. +For this project, code written in C++ uses a subset of the `C++14` feature set and software may be written using the +`C++14` language standard. Code written in C is compatible with the `C99` standard. Software components written in C/C++ may use the language features allowed and is encouraged. diff --git a/scripts/cmake/bare-metal-sources.cmake b/scripts/cmake/bare-metal-sources.cmake index c797d5f..98030d5 100644 --- a/scripts/cmake/bare-metal-sources.cmake +++ b/scripts/cmake/bare-metal-sources.cmake @@ -183,7 +183,7 @@ endif() set(COMPILER_FLAGS "${TENSORFLOW_LITE_MICRO_FLAG} ${PROFILING_OPT} ${OPTIONAL_FLAGS}") # For some reason, cmake doesn't pass the c++ standard flag, adding it manually -set(CMAKE_CXX_FLAGS "${COMPILER_FLAGS} -std=c++11" CACHE INTERNAL "") +set(CMAKE_CXX_FLAGS "${COMPILER_FLAGS}" CACHE INTERNAL "") set(CMAKE_C_FLAGS "${COMPILER_FLAGS}" CACHE INTERNAL "") set(CMAKE_ASM_COMPILE_OBJECT ${CMAKE_CXX_FLAGS}) diff --git a/scripts/cmake/tensorflow.cmake b/scripts/cmake/tensorflow.cmake index c2906f5..60f191f 100644 --- a/scripts/cmake/tensorflow.cmake +++ b/scripts/cmake/tensorflow.cmake @@ -58,7 +58,7 @@ set(TENSORFLOW_LITE_MICRO_TARGET_TOOLCHAIN_ROOT "${TENSORFLOW_LITE_MICRO_TARGET_ set(TENSORFLOW_LITE_MICRO_PATH "${TENSORFLOW_SRC_PATH}/tensorflow/lite/micro") set(TENSORFLOW_LITE_MICRO_GENDIR ${CMAKE_CURRENT_BINARY_DIR}/tensorflow/) -set(CMSIS_DSP_MAKEFILE_INC ${CMAKE_CURRENT_SOURCE_DIR}/scripts/make/cmsis_dsp.inc) + set(ETHOS_EVAL_TARGET_MAKEFILE_INC ${CMAKE_CURRENT_SOURCE_DIR}/scripts/make/cortex_m_ethos_eval_makefile.inc) if (TARGET_PLATFORM STREQUAL native) @@ -127,3 +127,5 @@ add_custom_target(tensorflow_build ALL # Create library add_library(tensorflow-lite-micro STATIC IMPORTED) add_dependencies(tensorflow-lite-micro tensorflow_build) +set_property(TARGET tensorflow-lite-micro PROPERTY IMPORTED_LOCATION + "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${TENSORFLOW_LITE_MICRO_PLATFORM_LIB_NAME}") diff --git a/scripts/cmake/toolchains/bare-metal-armclang.cmake b/scripts/cmake/toolchains/bare-metal-armclang.cmake index c1f066b..2ac2ac4 100644 --- a/scripts/cmake/toolchains/bare-metal-armclang.cmake +++ b/scripts/cmake/toolchains/bare-metal-armclang.cmake @@ -38,12 +38,15 @@ endif() if (CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m55) # Flags for cortex-m55 - set(CPU_COMPILE_DEF CPU_CORTEX_M55) + set(CPU_ID M55) + set(CPU_COMPILE_DEF CPU_CORTEX_${CPU_ID}) set(CPU_NAME ${CMAKE_SYSTEM_PROCESSOR}) + set(ARM_CPU "ARMC${CPU_ID}") set(FLOAT_ABI hard) set(ARM_MATH_DSP 1) set(ARM_MATH_LOOPUNROLL 1) - set(CPU_LINK_OPT "--cpu=Cortex-M55") + set(CPU_HEADER_FILE "${ARM_CPU}.h") + set(CPU_LINK_OPT "--cpu=Cortex-${CPU_ID}") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m33) # Flags for cortex-m33 to go here endif() @@ -74,7 +77,8 @@ add_compile_options( # Compile definitions: add_compile_definitions( PLATFORM_HAL=${PLATFORM_HAL} - ${CPU_COMPILE_DEF}=1 + CPU_HEADER_FILE=\"${CPU_HEADER_FILE}\" + $<$:${CPU_COMPILE_DEF}> $<$:ARM_MATH_DSP> $<$:ARM_MATH_LOOPUNROLL>) diff --git a/scripts/cmake/toolchains/bare-metal-gcc.cmake b/scripts/cmake/toolchains/bare-metal-gcc.cmake index 2ffc1bb..455f5ec 100644 --- a/scripts/cmake/toolchains/bare-metal-gcc.cmake +++ b/scripts/cmake/toolchains/bare-metal-gcc.cmake @@ -36,11 +36,15 @@ endif() if (CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m55) # Flags for cortex-m55 - set(CPU_COMPILE_DEF CPU_CORTEX_M55) + set(CPU_ID M55) + set(CPU_COMPILE_DEF CPU_CORTEX_${CPU_ID}) set(CPU_NAME ${CMAKE_SYSTEM_PROCESSOR}) + set(ARM_CPU "ARMC${CPU_ID}") set(FLOAT_ABI hard) set(ARM_MATH_DSP 1) set(ARM_MATH_LOOPUNROLL 1) + set(CPU_HEADER_FILE "${ARM_CPU}.h") + set(CPU_LINK_OPT "--cpu=Cortex-${CPU_ID}") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m33) # Flags for cortex-m33 to go here endif() @@ -71,7 +75,8 @@ add_compile_options( # Compile definitions: add_compile_definitions( PLATFORM_HAL=${PLATFORM_HAL} - ${CPU_COMPILE_DEF}=1 + CPU_HEADER_FILE=\"${CPU_HEADER_FILE}\" + $<$:${CPU_COMPILE_DEF}> $<$:ARM_MATH_DSP> $<$:ARM_MATH_LOOPUNROLL>) diff --git a/source/application/hal/platforms/bare-metal/bsp/cmsis-device/include/cmsis.h b/source/application/hal/platforms/bare-metal/bsp/cmsis-device/include/cmsis.h index 969db15..9d6326a 100644 --- a/source/application/hal/platforms/bare-metal/bsp/cmsis-device/include/cmsis.h +++ b/source/application/hal/platforms/bare-metal/bsp/cmsis-device/include/cmsis.h @@ -17,7 +17,9 @@ #ifndef BAREMETAL_CMSIS_H #define BAREMETAL_CMSIS_H -#include "ARMCM55.h" /* Cortex M system header file from CMSIS. */ +#if defined(CPU_HEADER_FILE) +#include CPU_HEADER_FILE /* Cortex M system header file from CMSIS. */ +#endif /* CPU_HEADER_FILE */ #include "irqs.h" /* Interrupt definitions file. */ /* Addition to template functions should be mentioned here. */ -- cgit v1.2.1