132 lines
4.8 KiB
CMake
Executable File
132 lines
4.8 KiB
CMake
Executable File
#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)
|
|
get_target_property(DISABLEHALF ${PROJECTNAME} DISABLEHALFFLOATSUPPORT)
|
|
|
|
#cmake_print_variables(${PROJECTNAME} DISABLEHALF DISABLEOPTIM)
|
|
# Add support for the type __fp16 even if there is no HW
|
|
# support for it. But support disabled when building boot code
|
|
if ((NOT DISABLEHALF) AND (FLOAT16))
|
|
target_compile_options(${PROJECTNAME} PRIVATE "--fp16_format=alternative")
|
|
endif()
|
|
|
|
if ((OPTIMIZED) AND (NOT DISABLEOPTIM))
|
|
#cmake_print_variables(DISABLEOPTIM)
|
|
target_compile_options(${PROJECTNAME} PRIVATE "-O2")
|
|
endif()
|
|
|
|
if (FASTMATHCOMPUTATIONS)
|
|
target_compile_options(${PROJECTNAME} PUBLIC "--fpmode=fast")
|
|
endif()
|
|
|
|
#if (HARDFP)
|
|
# target_compile_options(${PROJECTNAME} PUBLIC "-mfloat-abi=hard")
|
|
#endif()
|
|
|
|
#if (LITTLEENDIAN)
|
|
# target_compile_options(${PROJECTNAME} PUBLIC "-mlittle-endian")
|
|
#endif()
|
|
|
|
if (ARM_CPU STREQUAL "Cortex-M7.fp.dp" )
|
|
target_compile_options(${PROJECTNAME} PUBLIC "--fpu=FPv5_D16")
|
|
target_compile_options(${PROJECTNAME} PUBLIC "--thumb")
|
|
endif()
|
|
|
|
if (ARM_CPU STREQUAL "Cortex-A5.neon" )
|
|
target_compile_options(${PROJECTNAME} PUBLIC "--fp16_format=ieee")
|
|
endif()
|
|
|
|
|
|
if(EXPERIMENTAL)
|
|
experimentalCompilerSpecificCompileOptions(${PROJECTNAME} ${ROOT})
|
|
endif()
|
|
endfunction()
|
|
|
|
|
|
function(toolchainSpecificLinkForCortexM PROJECTNAME ROOT CORE PLATFORMFOLDER HASCSTARTUP)
|
|
# A specific library is created for ASM file
|
|
# since we do not want standard compile flags (for C) to be applied to
|
|
# ASM files.
|
|
if (HASCSTARTUP)
|
|
target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.c)
|
|
else()
|
|
target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.s)
|
|
endif()
|
|
target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
|
|
|
|
set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
|
|
|
|
set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/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/AC5/startup_${CORE}.c)
|
|
|
|
|
|
# RTE Components.h
|
|
target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
|
|
|
|
set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
|
|
|
|
set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/mem_${CORE}.h")
|
|
|
|
target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
|
|
|
|
#target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
|
|
target_link_options(${PROJECTNAME} PRIVATE "--entry=Vectors;--scatter=${SCATTERFILE}")
|
|
|
|
endfunction()
|
|
|
|
function(toolchainSpecificLinkForCortexR PROJECTNAME ROOT CORE PLATFORMFOLDER)
|
|
target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.c)
|
|
|
|
|
|
# RTE Components.h
|
|
target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
|
|
|
|
set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
|
|
|
|
set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/mem_${CORE}.h")
|
|
|
|
target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
|
|
|
|
#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(compilerSpecificPlatformConfigLibForR PROJECTNAME ROOT)
|
|
endfunction()
|
|
|
|
function(compilerSpecificPlatformConfigAppForM PROJECTNAME ROOT)
|
|
endfunction()
|
|
|
|
function(compilerSpecificPlatformConfigAppForA PROJECTNAME ROOT)
|
|
endfunction()
|
|
|
|
function(compilerSpecificPlatformConfigAppForR PROJECTNAME ROOT)
|
|
endfunction() |