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/Toolchain/AC6.cmake

115 lines
3.9 KiB
CMake

#include(CMakePrintHelpers)
include(AddFileDependencies)
function(compilerVersion)
execute_process(COMMAND "${CMAKE_C_COMPILER}" --version_number
OUTPUT_VARIABLE CVERSION
ERROR_VARIABLE CVERSION
)
SET(COMPILERVERSION ${CVERSION} PARENT_SCOPE)
#cmake_print_variables(CVERSION)
#cmake_print_variables(CMAKE_C_COMPILER)
#MESSAGE( STATUS "CMD_OUTPUT:" ${CVERSION})
endfunction()
function(compilerSpecificCompileOptions PROJECTNAME ROOT)
#cmake_print_properties(TARGETS ${PROJECTNAME} PROPERTIES DISABLEOPTIMIZATION)
get_target_property(DISABLEOPTIM ${PROJECTNAME} DISABLEOPTIMIZATION)
if ((OPTIMIZED) AND (NOT DISABLEOPTIM))
#cmake_print_variables(DISABLEOPTIM)
target_compile_options(${PROJECTNAME} PRIVATE "-O2")
endif()
if (FASTMATHCOMPUTATIONS)
target_compile_options(${PROJECTNAME} PUBLIC "-ffast-math")
endif()
if (HARDFP)
target_compile_options(${PROJECTNAME} PUBLIC "-mfloat-abi=hard")
endif()
if (LITTLEENDIAN)
target_compile_options(${PROJECTNAME} PUBLIC "-mlittle-endian")
endif()
# Core specific config
if (ARM_CPU STREQUAL "cortex-m33" )
target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=fpv5-sp-d16")
endif()
if (ARM_CPU STREQUAL "cortex-m7" )
target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=fpv5-sp-d16")
endif()
if (ARM_CPU STREQUAL "cortex-m4" )
target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=fpv4-sp-d16")
endif()
if (ARM_CPU STREQUAL "cortex-a9" )
if (NOT (NEON OR NEONEXPERIMENTAL))
target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv3-d16-fp16")
endif()
endif()
if (ARM_CPU STREQUAL "cortex-a7" )
if (NOT (NEON OR NEONEXPERIMENTAL))
target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv4-d16")
endif()
endif()
if (ARM_CPU STREQUAL "cortex-a5" )
if ((NEON OR NEONEXPERIMENTAL))
target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=neon-vfpv4")
else()
target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv4-d16")
endif()
endif()
endfunction()
function(toolchainSpecificLinkForCortexM PROJECTNAME ROOT CORE PLATFORMFOLDER)
# A specific library is created for ASM file
# since we do not want standard compile flags (for C) to be applied to
# ASM files.
target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC6/startup_${CORE}.s)
target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6)
set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/lnk.sct")
set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/mem_${CORE}.h")
#target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
target_link_options(${PROJECTNAME} PRIVATE "--entry=Reset_Handler;--scatter=${SCATTERFILE}")
endfunction()
function(toolchainSpecificLinkForCortexA PROJECTNAME ROOT CORE PLATFORMFOLDER)
target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC6/startup_${CORE}.c)
# RTE Components.h
target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/lnk.sct")
set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/mem_${CORE}.h")
target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6)
#target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
target_link_options(${PROJECTNAME} PRIVATE "--entry=Vectors;--scatter=${SCATTERFILE}")
endfunction()
function(compilerSpecificPlatformConfigLibForM PROJECTNAME ROOT)
endfunction()
function(compilerSpecificPlatformConfigLibForA PROJECTNAME ROOT)
endfunction()
function(compilerSpecificPlatformConfigAppForM PROJECTNAME ROOT)
endfunction()
function(compilerSpecificPlatformConfigAppForA PROJECTNAME ROOT)
endfunction()