Update TFLM build configuration

- Renames build flags (TFLU_*->TFLM_*).
- Fix generator expressions in add_compile_definitions.
- Adds new build flag TFLM_OPTIMIZE_KERNELS_FOR. This is a new flag in
  TFLM, which is currently needed for CMSIS-NN Transpose conv.
  Since TFLM's own build files are not used it need to be set explicitly
  here.

Change-Id: I8ff01caabfc1c5d2fcc3fa36fcbd153525d93258
Signed-off-by: Måns Nilsson <mans.nilsson@arm.com>
diff --git a/tflite_micro.cmake b/tflite_micro.cmake
index 2b8a9cc..9fc8aad 100644
--- a/tflite_micro.cmake
+++ b/tflite_micro.cmake
@@ -1,5 +1,5 @@
 #
-# SPDX-FileCopyrightText: Copyright 2021-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
+# SPDX-FileCopyrightText: Copyright 2021-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -18,9 +18,11 @@
 
 add_library(tflu STATIC)
 
-set(TFLU_PATH "${TENSORFLOW_PATH}/tensorflow/lite/micro")
-set(TFLU_BUILD_TYPE "release" CACHE STRING "Tensorflow Lite Mirco build type, can be release or debug")
-set(TFLU_OPTIMIZATION_LEVEL "-O2" CACHE STRING "Tensorflow Lite Micro kernel optimization level")
+# Tensorflow Lite Micro (TFLM) build variables.
+set(TFLM_PATH "${TENSORFLOW_PATH}/tensorflow/lite/micro")
+set(TFLM_BUILD_TYPE "release" CACHE STRING "TFLM build type, can be release, release_with_logs or debug")
+set(TFLM_OPTIMIZATION_LEVEL "-O2" CACHE STRING "TFLM kernel optimization level")
+set(TFLM_OPTIMIZE_KERNELS_FOR "speed" CACHE STRING "TFLM kernel implementation optimization type, can be speed or size")
 
 #############################################################################
 # Helpers
@@ -132,10 +134,10 @@
     add_subdirectory(${CMSIS_NN_PATH} cmsis_nn)
 
     target_compile_options(cmsis-nn PRIVATE
-        ${TFLU_OPTIMIZATION_LEVEL})
+        ${TFLM_OPTIMIZATION_LEVEL})
 
     tensorflow_target_sources_glob(tflu GLOB TRUE
-        ${TFLU_PATH}/kernels/cmsis_nn/*.cc)
+        ${TFLM_PATH}/kernels/cmsis_nn/*.cc)
 
     target_include_directories(tflu PUBLIC
         ${CMSIS_NN_PATH})
@@ -153,7 +155,7 @@
 
 if(TARGET ethosu_core_driver)
     tensorflow_target_sources_glob(tflu GLOB TRUE
-        ${TFLU_PATH}/kernels/ethos_u/*.cc)
+        ${TFLM_PATH}/kernels/ethos_u/*.cc)
 
     target_link_libraries(tflu PUBLIC
         ethosu_core_driver)
@@ -164,10 +166,10 @@
 #############################################################################
 
 tensorflow_target_sources_glob(tflu GLOB TRUE
-    ${TFLU_PATH}/cortex_m_generic/*.cc)
+    ${TFLM_PATH}/cortex_m_generic/*.cc)
 
 target_include_directories(tflu PRIVATE
-    ${TFLU_PATH}/cortex_m_generic)
+    ${TFLM_PATH}/cortex_m_generic)
 
 # For DWT/PMU counters
 target_link_libraries(tflu PRIVATE cmsis_device)
@@ -183,30 +185,32 @@
 #############################################################################
 
 tensorflow_target_sources_glob(tflu GLOB TRUE
-    ${TFLU_PATH}/*.cc
-    ${TFLU_PATH}/arena_allocator/*.cc
-    ${TFLU_PATH}/memory_planner/*.cc
-    ${TFLU_PATH}/kernels/*.cc
-    ${TFLU_PATH}/tflite_bridge/*.cc)
+    ${TFLM_PATH}/*.cc
+    ${TFLM_PATH}/arena_allocator/*.cc
+    ${TFLM_PATH}/memory_planner/*.cc
+    ${TFLM_PATH}/kernels/*.cc
+    ${TFLM_PATH}/tflite_bridge/*.cc)
 
 tensorflow_target_sources_glob(tflu GLOB_RECURSE FALSE
-    ${TFLU_PATH}/../c/*.cc
-    ${TFLU_PATH}/../core/*.cc
-    ${TFLU_PATH}/../core/api/*.cc
-    ${TFLU_PATH}/../kernels/*.cc
-    ${TFLU_PATH}/../schema/*.cc)
+    ${TFLM_PATH}/../c/*.cc
+    ${TFLM_PATH}/../core/*.cc
+    ${TFLM_PATH}/../core/api/*.cc
+    ${TFLM_PATH}/../kernels/*.cc
+    ${TFLM_PATH}/../schema/*.cc)
 
 target_include_directories(tflu PUBLIC
     ${TENSORFLOW_PATH})
 
 target_compile_definitions(tflu PUBLIC
     TF_LITE_STATIC_MEMORY
-    $<$<STREQUAL:${TFLU_BUILD_TYPE},"release">:"NDEBUG;TF_LITE_STRIP_ERROR_STRINGS">
-    $<$<STREQUAL:${TFLU_BUILD_TYPE},"release_with_logs">:"NDEBUG">)
+    $<$<STREQUAL:${TFLM_BUILD_TYPE},release>:NDEBUG;TF_LITE_STRIP_ERROR_STRINGS>
+    $<$<STREQUAL:${TFLM_BUILD_TYPE},release_with_logs>:NDEBUG>
+    $<$<STREQUAL:${TFLM_OPTIMIZE_KERNELS_FOR},speed>:KERNELS_OPTIMIZED_FOR_SPEED>
+    $<$<STREQUAL:${TFLM_OPTIMIZE_KERNELS_FOR},size>:KERNELS_OPTIMIZED_FOR_SIZE>)
 
 target_compile_options(tflu
     PRIVATE
-        ${TFLU_OPTIMIZATION_LEVEL}
+        ${TFLM_OPTIMIZATION_LEVEL}
         -fno-unwind-tables
         -ffunction-sections
         -fdata-sections