summaryrefslogtreecommitdiff
path: root/DSP/config.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'DSP/config.cmake')
-rw-r--r--DSP/config.cmake141
1 files changed, 141 insertions, 0 deletions
diff --git a/DSP/config.cmake b/DSP/config.cmake
new file mode 100644
index 0000000..b6c84be
--- /dev/null
+++ b/DSP/config.cmake
@@ -0,0 +1,141 @@
+include(CMakePrintHelpers)
+cmake_policy(SET CMP0077 NEW)
+
+SET(CORTEXM ON)
+option(FASTMATHCOMPUTATIONS "Fast Math enabled" ON)
+option(NEON "Neon acceleration" OFF)
+option(NEONEXPERIMENTAL "Neon experimental acceleration" OFF)
+option(LOOPUNROLL "Loop unrolling" ON)
+option(ROUNDING "Rounding" OFF)
+option(MATRIXCHECK "Matrix Checks" OFF)
+
+###################
+#
+# ALL CORTEX
+#
+
+function(configdsp PROJECTNAME DSP)
+ target_compile_options(${PROJECTNAME} PUBLIC "-mfloat-abi=hard;-mlittle-endian")
+
+ if (CONFIGTABLE)
+ # Public because initialization for FFT may be defined in client code
+ # and needs access to the table.
+ target_compile_definitions(${PROJECTNAME} PUBLIC ARM_DSP_CONFIG_TABLES)
+ endif()
+
+ if (FASTMATHCOMPUTATIONS)
+ target_compile_options(${PROJECTNAME} PUBLIC "-ffast-math")
+ endif()
+
+ if (LOOPUNROLL)
+ target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_LOOPUNROLL)
+ endif()
+
+ if (ROUNDING)
+ target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_ROUNDING)
+ endif()
+
+ if (MATRIXCHECK)
+ target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_MATRIX_CHECK)
+ endif()
+
+
+ ###################
+ #
+ # CORTEX-A
+ #
+
+ # CORTEX-A9
+ if (ARM_CPU STREQUAL "cortex-a9" )
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core_A/Include")
+ SET(CORTEXM OFF)
+
+ if (NOT (NEON OR NEONEXPERIMENTAL))
+ target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv3-d16-fp16")
+ endif()
+
+ endif()
+
+ # CORTEX-A7
+ if (ARM_CPU STREQUAL "cortex-a7" )
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core_A/Include")
+ SET(CORTEXM OFF)
+
+ if (NOT (NEON OR NEONEXPERIMENTAL))
+ target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv4-d16")
+ endif()
+
+ endif()
+
+ # CORTEX-A5
+ if (ARM_CPU STREQUAL "cortex-a5" )
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core_A/Include")
+ SET(CORTEXM OFF)
+
+ if ((NEON OR NEONEXPERIMENTAL))
+ target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=neon-vfpv4")
+ else()
+ target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv4-d16")
+ endif()
+ endif()
+
+
+ ###################
+ #
+ # CORTEX-M
+ #
+
+ # CORTEX-M35
+ if (ARM_CPU STREQUAL "cortex-m35")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+ endif()
+
+ # CORTEX-M33
+ if (ARM_CPU STREQUAL "cortex-m33")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+ endif()
+
+ # CORTEX-M23
+ if (ARM_CPU STREQUAL "cortex-m23")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+ endif()
+
+ # CORTEX-M7
+ if (ARM_CPU STREQUAL "cortex-m7")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+ endif()
+
+ # CORTEX-M4
+ if (ARM_CPU STREQUAL "cortex-m4")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+
+ endif()
+
+ # CORTEX-M3
+ if (ARM_CPU STREQUAL "cortex-m3")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+ endif()
+
+ # CORTEX-M0plus
+ if (ARM_CPU STREQUAL "cortex-m0p")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+ endif()
+
+ # CORTEX-M0
+ if (ARM_CPU STREQUAL "cortex-m0")
+ target_include_directories(${PROJECTNAME} PUBLIC "${DSP}/../../Core/Include")
+ endif()
+
+ ###################
+ #
+ # FEATURES
+ #
+
+ if (NEON AND NOT CORTEXM)
+ target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_NEON __FPU_PRESENT)
+ endif()
+
+ if (NEONEXPERIMENTAL AND NOT CORTEXM)
+ target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_NEON_EXPERIMENTAL __FPU_PRESENT)
+ endif()
+endfunction() \ No newline at end of file