|
@@ -0,0 +1,157 @@
|
|
|
|
|
+INCLUDE(FetchContent)
|
|
|
|
|
+
|
|
|
|
|
+SET(FETCHCONTENT_UPDATES_DISCONNECTED ON)
|
|
|
|
|
+FetchContent_Declare(
|
|
|
|
|
+ arm_cmsis
|
|
|
|
|
+ GIT_REPOSITORY https://github.com/ARM-software/CMSIS_5.git
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+FetchContent_GetProperties(arm_cmsis)
|
|
|
|
|
+IF(NOT arm_cmsis_POPULATED)
|
|
|
|
|
+ MESSAGE(STATUS "Getting most recent ARM CMSIS sources")
|
|
|
|
|
+ FetchContent_Populate(arm_cmsis)
|
|
|
|
|
+ EXECUTE_PROCESS(COMMAND git -C ${arm_cmsis_SOURCE_DIR} checkout develop)
|
|
|
|
|
+ENDIF()
|
|
|
|
|
+
|
|
|
|
|
+# FIND_PACKAGE(Fixedpoint)
|
|
|
|
|
+
|
|
|
|
|
+SET(ARM_CMSIS_DIR ${arm_cmsis_SOURCE_DIR}/CMSIS)
|
|
|
|
|
+
|
|
|
|
|
+SET(CMSIS_NN_HEADERS
|
|
|
|
|
+ arm_nnfunctions.h
|
|
|
|
|
+ arm_nnsupportfunctions.h
|
|
|
|
|
+ arm_nn_tables.h
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+FILE(GLOB CMSIS_NN_SOURCES ${ARM_CMSIS_DIR}/NN/Source/*/*.c)
|
|
|
|
|
+
|
|
|
|
|
+FIND_PATH(CMSIS_NN_INC_DIR ${CMSIS_NN_HEADERS}
|
|
|
|
|
+ PATHS ${ARM_CMSIS_DIR}/NN/Include
|
|
|
|
|
+ CMAKE_FIND_ROOT_PATH_BOTH
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+SET(CMSIS_DSP_HEADERS
|
|
|
|
|
+ arm_common_tables.h
|
|
|
|
|
+ arm_const_structs.h
|
|
|
|
|
+ arm_helium_utils.h
|
|
|
|
|
+ arm_math.h
|
|
|
|
|
+ arm_mve_tables.h
|
|
|
|
|
+ arm_vec_math.h
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+SET(CMSIS_DSP_PRIVATE_HEADERS
|
|
|
|
|
+ arm_sorting.h
|
|
|
|
|
+ arm_vec_fft.h
|
|
|
|
|
+ arm_vec_filtering.h
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+SET(CMSIS_DSP_SRCS
|
|
|
|
|
+ BasicMathFunctions.c
|
|
|
|
|
+ arm_gaussian_naive_bayes_predict_f32.c
|
|
|
|
|
+ CommonTables.c
|
|
|
|
|
+ ComplexMathFunctions.c
|
|
|
|
|
+ ControllerFunctions.c
|
|
|
|
|
+ arm_boolean_distance.c
|
|
|
|
|
+ arm_boolean_distance_template.h
|
|
|
|
|
+ arm_braycurtis_distance_f32.c
|
|
|
|
|
+ arm_canberra_distance_f32.c
|
|
|
|
|
+ arm_chebyshev_distance_f32.c
|
|
|
|
|
+ arm_cityblock_distance_f32.c
|
|
|
|
|
+ arm_correlation_distance_f32.c
|
|
|
|
|
+ arm_cosine_distance_f32.c
|
|
|
|
|
+ arm_dice_distance.c
|
|
|
|
|
+ arm_euclidean_distance_f32.c
|
|
|
|
|
+ arm_hamming_distance.c
|
|
|
|
|
+ arm_jaccard_distance.c
|
|
|
|
|
+ arm_jensenshannon_distance_f32.c
|
|
|
|
|
+ arm_kulsinski_distance.c
|
|
|
|
|
+ arm_minkowski_distance_f32.c
|
|
|
|
|
+ arm_rogerstanimoto_distance.c
|
|
|
|
|
+ arm_russellrao_distance.c
|
|
|
|
|
+ arm_sokalmichener_distance.c
|
|
|
|
|
+ arm_sokalsneath_distance.c
|
|
|
|
|
+ arm_yule_distance.c
|
|
|
|
|
+ FastMathFunctions.c
|
|
|
|
|
+ FilteringFunctions.c
|
|
|
|
|
+ MatrixFunctions.c
|
|
|
|
|
+ StatisticsFunctions.c
|
|
|
|
|
+ SupportFunctions.c
|
|
|
|
|
+ arm_svm_linear_init_f32.c
|
|
|
|
|
+ arm_svm_linear_predict_f32.c
|
|
|
|
|
+ arm_svm_polynomial_init_f32.c
|
|
|
|
|
+ arm_svm_polynomial_predict_f32.c
|
|
|
|
|
+ arm_svm_rbf_init_f32.c
|
|
|
|
|
+ arm_svm_rbf_predict_f32.c
|
|
|
|
|
+ arm_svm_sigmoid_init_f32.c
|
|
|
|
|
+ arm_svm_sigmoid_predict_f32.c
|
|
|
|
|
+ TransformFunctions.c
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+FOREACH(SRC ${CMSIS_DSP_SRCS})
|
|
|
|
|
+ STRING(MAKE_C_IDENTIFIER "${SRC}" SRC_CLEAN)
|
|
|
|
|
+ SET(CMSIS_DSP_${SRC_CLEAN}_FILE ${SRC_CLEAN}-NOTFOUND)
|
|
|
|
|
+ FIND_FILE(CMSIS_DSP_${SRC_CLEAN}_FILE ${SRC}
|
|
|
|
|
+ PATH_SUFFIXES
|
|
|
|
|
+ BasicMathFunctions
|
|
|
|
|
+ BayesFunctions
|
|
|
|
|
+ CommonTables
|
|
|
|
|
+ ComplexMathFunctions
|
|
|
|
|
+ ControllerFunctions
|
|
|
|
|
+ DistanceFunctions
|
|
|
|
|
+ FastMathFunctions
|
|
|
|
|
+ FilteringFunctions
|
|
|
|
|
+ MatrixFunctions
|
|
|
|
|
+ StatisticsFunctions
|
|
|
|
|
+ SupportFunctions
|
|
|
|
|
+ SVMFunctions
|
|
|
|
|
+ TransformFunctions
|
|
|
|
|
+ PATHS ${ARM_CMSIS_DIR}/DSP/Source
|
|
|
|
|
+ CMAKE_FIND_ROOT_PATH_BOTH
|
|
|
|
|
+ )
|
|
|
|
|
+ LIST(APPEND CMSIS_DSP_SOURCES ${CMSIS_DSP_${SRC_CLEAN}_FILE})
|
|
|
|
|
+ENDFOREACH()
|
|
|
|
|
+
|
|
|
|
|
+FIND_PATH(CMSIS_DSP_PRIVATE_INC_DIR ${CMSIS_DSP_PRIVATE_HEADERS}
|
|
|
|
|
+ PATHS ${ARM_CMSIS_DIR}/DSP/PrivateInclude
|
|
|
|
|
+ CMAKE_FIND_ROOT_PATH_BOTH
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+FIND_PATH(CMSIS_DSP_INC_DIR ${CMSIS_DSP_HEADERS}
|
|
|
|
|
+ PATHS ${ARM_CMSIS_DIR}/DSP/Include
|
|
|
|
|
+ CMAKE_FIND_ROOT_PATH_BOTH
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+SET(CMSIS_DSP_INC_DIRS
|
|
|
|
|
+ ${CMSIS_DSP_PRIVATE_INC_DIR}
|
|
|
|
|
+ ${CMSIS_DSP_INC_DIR}
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+SET(CMSISNN_INCLUDE_DIRS
|
|
|
|
|
+ ${CMSIS_DSP_INC_DIRS}
|
|
|
|
|
+ ${CMSIS_NN_INC_DIR}
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+SET(CMSISNN_SOURCES
|
|
|
|
|
+ ${CMSIS_DSP_SOURCES}
|
|
|
|
|
+ ${CMSIS_NN_SOURCES}
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+IF(STM32_FAMILY STREQUAL "F0")
|
|
|
|
|
+ ADD_DEFINITIONS(-DARM_MATH_CM0)
|
|
|
|
|
+ELSEIF(STM32_FAMILY STREQUAL "F3")
|
|
|
|
|
+ ADD_DEFINITIONS(-DARM_MATH_CM3)
|
|
|
|
|
+ELSEIF(STM32_FAMILY STREQUAL "F4")
|
|
|
|
|
+ #TODO find better solution to this
|
|
|
|
|
+ ADD_DEFINITIONS(-D__FPU_PRESENT=1)
|
|
|
|
|
+ ADD_DEFINITIONS(-DARM_MATH_CM4)
|
|
|
|
|
+ELSEIF(STM32_FAMILY STREQUAL "F7")
|
|
|
|
|
+ ADD_DEFINITIONS(-DARM_MATH_CM7)
|
|
|
|
|
+ELSEIF(STM32_FAMILY STREQUAL "L0")
|
|
|
|
|
+ ADD_DEFINITIONS(-DARM_MATH_CM0PLUS)
|
|
|
|
|
+ELSE()
|
|
|
|
|
+ MESSAGE(STATUS "ARM_MATH define not found, see arm_math.h")
|
|
|
|
|
+ENDIF()
|
|
|
|
|
+
|
|
|
|
|
+INCLUDE(FindPackageHandleStandardArgs)
|
|
|
|
|
+
|
|
|
|
|
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(CMSISNN DEFAULT_MSG CMSISNN_INCLUDE_DIRS CMSISNN_SOURCES)
|