AC5.cmake 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #include(CMakePrintHelpers)
  2. include(AddFileDependencies)
  3. function(compilerVersion)
  4. execute_process(COMMAND "${CMAKE_C_COMPILER}" --version_number
  5. OUTPUT_VARIABLE CVERSION
  6. ERROR_VARIABLE CVERSION
  7. )
  8. SET(COMPILERVERSION ${CVERSION} PARENT_SCOPE)
  9. #cmake_print_variables(CVERSION)
  10. #cmake_print_variables(CMAKE_C_COMPILER)
  11. #MESSAGE( STATUS "CMD_OUTPUT:" ${CVERSION})
  12. endfunction()
  13. function(compilerSpecificCompileOptions PROJECTNAME ROOT)
  14. #cmake_print_properties(TARGETS ${PROJECTNAME} PROPERTIES DISABLEOPTIMIZATION)
  15. get_target_property(DISABLEOPTIM ${PROJECTNAME} DISABLEOPTIMIZATION)
  16. get_target_property(DISABLEHALF ${PROJECTNAME} DISABLEHALFFLOATSUPPORT)
  17. #cmake_print_variables(${PROJECTNAME} DISABLEHALF DISABLEOPTIM)
  18. # Add support for the type __fp16 even if there is no HW
  19. # support for it. But support disabled when building boot code
  20. if ((NOT DISABLEHALF) AND (FLOAT16))
  21. target_compile_options(${PROJECTNAME} PRIVATE "--fp16_format=alternative")
  22. endif()
  23. if ((OPTIMIZED) AND (NOT DISABLEOPTIM))
  24. #cmake_print_variables(DISABLEOPTIM)
  25. target_compile_options(${PROJECTNAME} PRIVATE "-O2")
  26. endif()
  27. if (FASTMATHCOMPUTATIONS)
  28. target_compile_options(${PROJECTNAME} PUBLIC "--fpmode=fast")
  29. endif()
  30. #if (HARDFP)
  31. # target_compile_options(${PROJECTNAME} PUBLIC "-mfloat-abi=hard")
  32. #endif()
  33. #if (LITTLEENDIAN)
  34. # target_compile_options(${PROJECTNAME} PUBLIC "-mlittle-endian")
  35. #endif()
  36. if (ARM_CPU STREQUAL "Cortex-M7.fp.dp" )
  37. target_compile_options(${PROJECTNAME} PUBLIC "--fpu=FPv5_D16")
  38. target_compile_options(${PROJECTNAME} PUBLIC "--thumb")
  39. endif()
  40. if (ARM_CPU STREQUAL "Cortex-A5.neon" )
  41. target_compile_options(${PROJECTNAME} PUBLIC "--fp16_format=ieee")
  42. endif()
  43. if(EXPERIMENTAL)
  44. experimentalCompilerSpecificCompileOptions(${PROJECTNAME} ${ROOT})
  45. endif()
  46. endfunction()
  47. function(toolchainSpecificLinkForCortexM PROJECTNAME ROOT CORE PLATFORMFOLDER HASCSTARTUP)
  48. # A specific library is created for ASM file
  49. # since we do not want standard compile flags (for C) to be applied to
  50. # ASM files.
  51. if (HASCSTARTUP)
  52. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.c)
  53. else()
  54. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.s)
  55. endif()
  56. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
  57. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
  58. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/mem_${CORE}.h")
  59. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  60. target_link_options(${PROJECTNAME} PRIVATE "--entry=Reset_Handler;--scatter=${SCATTERFILE}")
  61. endfunction()
  62. function(toolchainSpecificLinkForCortexA PROJECTNAME ROOT CORE PLATFORMFOLDER)
  63. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.c)
  64. # RTE Components.h
  65. target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
  66. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
  67. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/mem_${CORE}.h")
  68. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
  69. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  70. target_link_options(${PROJECTNAME} PRIVATE "--entry=Vectors;--scatter=${SCATTERFILE}")
  71. endfunction()
  72. function(toolchainSpecificLinkForCortexR PROJECTNAME ROOT CORE PLATFORMFOLDER)
  73. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.c)
  74. # RTE Components.h
  75. target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
  76. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
  77. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/mem_${CORE}.h")
  78. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
  79. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  80. target_link_options(${PROJECTNAME} PRIVATE "--entry=Vectors;--scatter=${SCATTERFILE}")
  81. endfunction()
  82. function(compilerSpecificPlatformConfigLibForM PROJECTNAME ROOT)
  83. endfunction()
  84. function(compilerSpecificPlatformConfigLibForA PROJECTNAME ROOT)
  85. endfunction()
  86. function(compilerSpecificPlatformConfigLibForR PROJECTNAME ROOT)
  87. endfunction()
  88. function(compilerSpecificPlatformConfigAppForM PROJECTNAME ROOT)
  89. endfunction()
  90. function(compilerSpecificPlatformConfigAppForA PROJECTNAME ROOT)
  91. endfunction()
  92. function(compilerSpecificPlatformConfigAppForR PROJECTNAME ROOT)
  93. endfunction()