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.
190 lines
5.3 KiB
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() |