You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CMSIS-DSP/configCore.cmake

190 lines
5.3 KiB
CMake

include(CMakePrintHelpers)
cmake_policy(SET CMP0077 NEW)
# Config core
SET(CORTEXM ON)
option(HARDFP "Hard floating point" ON)
option(LITTLEENDIAN "Little endian" ON)
option(FASTMATHCOMPUTATIONS "Fast Math enabled" OFF)
# More detailed identification for benchmark results
SET(COREID ARMCM7)
###################
#
# ALL CORTEX
#
function(configcore PROJECTNAME ROOT)
###################
#
# CORTEX-A
#
# CORTEX-A15
if (ARM_CPU STREQUAL "cortex-a15" )
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core_A/Include")
SET(CORTEXM OFF)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMv7A)
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXA)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCA15 PARENT_SCOPE)
endif()
# CORTEX-A9
if (ARM_CPU STREQUAL "cortex-a9" )
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core_A/Include")
SET(CORTEXM OFF)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMv7A)
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXA)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCA9 PARENT_SCOPE)
endif()
# CORTEX-A7
if (ARM_CPU STREQUAL "cortex-a7" )
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core_A/Include")
SET(CORTEXM OFF)
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXA)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMv7A)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCA7 PARENT_SCOPE)
endif()
# CORTEX-A5
if (ARM_CPU STREQUAL "cortex-a5" )
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core_A/Include")
SET(CORTEXM OFF)
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXA)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMv7A)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCA5 PARENT_SCOPE)
endif()
###################
#
# CORTEX-M
#
# CORTEX-M35
if (ARM_CPU STREQUAL "cortex-m35")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM35P_DSP_FP)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM35P_DSP_FP PARENT_SCOPE)
endif()
# CORTEX-M33
if (ARM_CPU STREQUAL "cortex-m33")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM33_DSP_FP)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM33_DSP_FP PARENT_SCOPE)
endif()
# CORTEX-M23
if (ARM_CPU STREQUAL "cortex-m23")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM23)
SET(HARDFP OFF)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM23 PARENT_SCOPE)
endif()
# CORTEX-M7
if (ARM_CPU STREQUAL "cortex-m7")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM7_DP)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM7_DP PARENT_SCOPE)
endif()
# CORTEX-M4
if (ARM_CPU STREQUAL "cortex-m4")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM4_FP)
SET(HARDFP ON)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM4_FP PARENT_SCOPE)
endif()
# CORTEX-M3
if (ARM_CPU STREQUAL "cortex-m3")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM3)
SET(HARDFP OFF)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM3 PARENT_SCOPE)
endif()
# CORTEX-M0plus
if (ARM_CPU STREQUAL "cortex-m0p")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM0P)
SET(HARDFP OFF)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM0P PARENT_SCOPE)
endif()
# CORTEX-M0
if (ARM_CPU STREQUAL "cortex-m0")
target_include_directories(${PROJECTNAME} PUBLIC "${ROOT}/CMSIS/Core/Include")
target_compile_definitions(${PROJECTNAME} PUBLIC CORTEXM)
target_compile_definitions(${PROJECTNAME} PRIVATE ARMCM0)
SET(HARDFP OFF)
SET(LITTLEENDIAN ON)
SET(COREID ARMCM0 PARENT_SCOPE)
endif()
###################
#
# FEATURES
#
if (NEON AND NOT CORTEXM)
#target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_NEON __FPU_PRESENT)
target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_NEON)
endif()
if (NEONEXPERIMENTAL AND NOT CORTEXM)
#target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_NEON_EXPERIMENTAL __FPU_PRESENT)
target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_NEON_EXPERIMENTAL)
endif()
compilerSpecificCompileOptions(${PROJECTNAME} ${ROOT})
endfunction()