AC6.cmake 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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. if ((OPTIMIZED) AND (NOT DISABLEOPTIM))
  17. #cmake_print_variables(DISABLEOPTIM)
  18. target_compile_options(${PROJECTNAME} PRIVATE "-Ofast")
  19. endif()
  20. if (FASTMATHCOMPUTATIONS)
  21. target_compile_options(${PROJECTNAME} PUBLIC "-ffast-math")
  22. endif()
  23. if (HARDFP)
  24. target_compile_options(${PROJECTNAME} PUBLIC "-mfloat-abi=hard")
  25. endif()
  26. if (LITTLEENDIAN)
  27. target_compile_options(${PROJECTNAME} PUBLIC "-mlittle-endian")
  28. endif()
  29. if (CORTEXM OR CORTEXR)
  30. target_compile_options(${PROJECTNAME} PUBLIC "-mthumb")
  31. endif()
  32. # Core specific config
  33. if (ARM_CPU STREQUAL "cortex-m55" )
  34. target_compile_options(${PROJECTNAME} PUBLIC "-fshort-enums")
  35. target_compile_options(${PROJECTNAME} PUBLIC "-fshort-wchar")
  36. endif()
  37. if (ARM_CPU STREQUAL "cortex-m55+nomve" )
  38. target_compile_options(${PROJECTNAME} PUBLIC "-fshort-enums")
  39. target_compile_options(${PROJECTNAME} PUBLIC "-fshort-wchar")
  40. endif()
  41. if (ARM_CPU STREQUAL "cortex-m33" )
  42. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=fpv5-sp-d16")
  43. endif()
  44. if (ARM_CPU STREQUAL "cortex-m7" )
  45. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=fpv5-d16")
  46. endif()
  47. if (ARM_CPU STREQUAL "cortex-m4" )
  48. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=fpv4-sp-d16")
  49. endif()
  50. if (ARM_CPU STREQUAL "cortex-a9" )
  51. if (NOT (NEON OR NEONEXPERIMENTAL))
  52. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv3-d16-fp16")
  53. endif()
  54. endif()
  55. if (ARM_CPU STREQUAL "cortex-a32" )
  56. if (NEON OR NEONEXPERIMENTAL)
  57. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=neon-fp-armv8")
  58. endif()
  59. endif()
  60. if (ARM_CPU STREQUAL "cortex-a7" )
  61. if (NOT (NEON OR NEONEXPERIMENTAL))
  62. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv4-d16")
  63. endif()
  64. endif()
  65. if (ARM_CPU STREQUAL "cortex-a5" )
  66. if ((NEON OR NEONEXPERIMENTAL))
  67. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=neon-vfpv4")
  68. else()
  69. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv4-d16")
  70. endif()
  71. endif()
  72. if (ARM_CPU STREQUAL "cortex-r52" )
  73. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=neon-fp-armv8")
  74. endif()
  75. if (ARM_CPU STREQUAL "cortex-r8" )
  76. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv3-d16-fp16")
  77. endif()
  78. if (ARM_CPU STREQUAL "cortex-r5" )
  79. target_compile_options(${PROJECTNAME} PUBLIC "-mfpu=vfpv3")
  80. endif()
  81. if(EXPERIMENTAL)
  82. experimentalCompilerSpecificCompileOptions(${PROJECTNAME} ${ROOT})
  83. endif()
  84. endfunction()
  85. function(toolchainSpecificLinkForCortexM PROJECTNAME ROOT CORE PLATFORMFOLDER HASCSTARTUP)
  86. # A specific library is created for ASM file
  87. # since we do not want standard compile flags (for C) to be applied to
  88. # ASM files.
  89. if (HASCSTARTUP)
  90. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC6/startup_${CORE}.c)
  91. else()
  92. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC6/startup_${CORE}.s)
  93. endif()
  94. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6)
  95. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/lnk.sct")
  96. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/mem_${CORE}.h")
  97. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  98. target_link_options(${PROJECTNAME} PRIVATE "--entry=Reset_Handler;--scatter=${SCATTERFILE}")
  99. endfunction()
  100. function(toolchainSpecificLinkForCortexA PROJECTNAME ROOT CORE PLATFORMFOLDER)
  101. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC6/startup_${CORE}.c)
  102. # RTE Components.h
  103. target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
  104. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/lnk.sct")
  105. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/mem_${CORE}.h")
  106. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6)
  107. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  108. target_link_options(${PROJECTNAME} PRIVATE "--entry=Vectors;--scatter=${SCATTERFILE}")
  109. endfunction()
  110. function(toolchainSpecificLinkForCortexR PROJECTNAME ROOT CORE PLATFORMFOLDER)
  111. #target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC6/startup_${CORE}.c)
  112. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC6/startup.s)
  113. # RTE Components.h
  114. target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
  115. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/lnk.sct")
  116. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6/mem_${CORE}.h")
  117. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC6)
  118. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  119. target_link_options(${PROJECTNAME} PRIVATE "--entry=Reset_Handler;--scatter=${SCATTERFILE}")
  120. endfunction()
  121. function(compilerSpecificPlatformConfigLibForM PROJECTNAME ROOT)
  122. endfunction()
  123. function(compilerSpecificPlatformConfigLibForA PROJECTNAME ROOT)
  124. endfunction()
  125. function(compilerSpecificPlatformConfigLibForR PROJECTNAME ROOT)
  126. endfunction()
  127. function(compilerSpecificPlatformConfigAppForM PROJECTNAME ROOT)
  128. endfunction()
  129. function(compilerSpecificPlatformConfigAppForA PROJECTNAME ROOT)
  130. endfunction()
  131. function(compilerSpecificPlatformConfigAppForR PROJECTNAME ROOT)
  132. endfunction()