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
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d18105d..b747018 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,7 +28,7 @@
 # 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 @@
     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 @@
 
 ## 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 @@
 
 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_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 @@
 # 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 @@
 
 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 @@
 # Compile definitions:
 add_compile_definitions(
     PLATFORM_HAL=${PLATFORM_HAL}
-    ${CPU_COMPILE_DEF}=1
+    CPU_HEADER_FILE=\"${CPU_HEADER_FILE}\"
+    $<$<BOOL:${CPU_COMPILE_DEF}>:${CPU_COMPILE_DEF}>
     $<$<BOOL:${ARM_MATH_DSP}>:ARM_MATH_DSP>
     $<$<BOOL:${ARM_MATH_LOOPUNROLL}>: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 @@
 
 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 @@
 # Compile definitions:
 add_compile_definitions(
     PLATFORM_HAL=${PLATFORM_HAL}
-    ${CPU_COMPILE_DEF}=1
+    CPU_HEADER_FILE=\"${CPU_HEADER_FILE}\"
+    $<$<BOOL:${CPU_COMPILE_DEF}>:${CPU_COMPILE_DEF}>
     $<$<BOOL:${ARM_MATH_DSP}>:ARM_MATH_DSP>
     $<$<BOOL:${ARM_MATH_LOOPUNROLL}>: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. */