# ##############################################################################
# apps/mlearning/nnlib-hifi4/CMakeLists.txt
#
# Cadence HiFi 4 Neural Network Library
#
# ##############################################################################
if(CONFIG_XTENSA_HIFI)
# ############################################################################
# Collect nnlib-hifi4 source files
# ############################################################################
set(NNLIB_ROOT ${CMAKE_CURRENT_LIST_DIR}/nnlib-hifi4/xa_nnlib)
# Collect all C source files from algo directory
file(GLOB_RECURSE NNLIB_SRCS ${NNLIB_ROOT}/algo/kernels/**/*.c
${NNLIB_ROOT}/algo/common/*.c ${NNLIB_ROOT}/algo/layers/*.c
${NNLIB_ROOT}/algo/ndsp/*.c)
# Exclude NCHW pool files, use NHWC format
list(FILTER NNLIB_SRCS EXCLUDE REGEX ".*/xa_nn_avgpool_16\\.c$")
list(FILTER NNLIB_SRCS EXCLUDE REGEX ".*/xa_nn_avgpool_f32\\.c$")
list(FILTER NNLIB_SRCS EXCLUDE REGEX ".*/xa_nn_maxpool_16\\.c$")
list(FILTER NNLIB_SRCS EXCLUDE REGEX ".*/xa_nn_maxpool_f32\\.c$")
list(FILTER NNLIB_SRCS EXCLUDE REGEX ".*/xa_nn_maxpool_asym8\\.c$")
# ############################################################################
# Compiler flags for nnlib-hifi4
# ############################################################################
set(NNLIB_FLAGS
-DHIFI4
-Dhifi4
-DHIFI_NNLIB_OPT
-DNNLIB_V2
-DTFLITE_SINGLE_ROUNDING=0
-DMODEL_INT16=1
-O3
-fno-strict-aliasing
-Wno-unused-variable
-Wno-unused-function
-Wno-sign-compare
-Wno-implicit-function-declaration
-Wno-macro-redefined
-Wno-undef
-Wno-shadow)
# ############################################################################
# Include directories
# ############################################################################
set(NNLIB_INCDIR
${NNLIB_ROOT}/include
${NNLIB_ROOT}/include/nnlib
${NNLIB_ROOT}/algo/common
${NNLIB_ROOT}/algo/common/include
${NNLIB_ROOT}/algo/kernels
${NNLIB_ROOT}/algo/layers
${NNLIB_ROOT}/algo/ndsp
${NNLIB_ROOT}/algo/ndsp/hifi4/include)
# ############################################################################
# Library configuration
# ############################################################################
nuttx_add_library(xa_nnlib STATIC)
target_compile_options(xa_nnlib PRIVATE ${NNLIB_FLAGS})
# Treat warnings as warnings (not errors) for nnlib-hifi4 third-party library
target_compile_options(xa_nnlib PRIVATE -Wno-error)
target_sources(xa_nnlib PRIVATE ${NNLIB_SRCS})
target_include_directories(xa_nnlib PUBLIC ${NNLIB_INCDIR})
endif()