AC5.cmake 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 "-O2")
  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 (ARM_CPU STREQUAL "Cortex-M7.fp.dp" )
  30. target_compile_options(${PROJECTNAME} PUBLIC "--fpu=FPv5_D16")
  31. target_compile_options(${PROJECTNAME} PUBLIC "--thumb")
  32. endif()
  33. if (ARM_CPU STREQUAL "Cortex-A5.neon" )
  34. target_compile_options(${PROJECTNAME} PUBLIC "--fp16_format=ieee")
  35. endif()
  36. if(EXPERIMENTAL)
  37. experimentalCompilerSpecificCompileOptions(${PROJECTNAME} ${ROOT})
  38. endif()
  39. endfunction()
  40. function(toolchainSpecificLinkForCortexM PROJECTNAME ROOT CORE PLATFORMFOLDER HASCSTARTUP)
  41. # A specific library is created for ASM file
  42. # since we do not want standard compile flags (for C) to be applied to
  43. # ASM files.
  44. if (HASCSTARTUP)
  45. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.c)
  46. else()
  47. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.s)
  48. endif()
  49. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
  50. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
  51. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/mem_${CORE}.h")
  52. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  53. target_link_options(${PROJECTNAME} PRIVATE "--entry=Reset_Handler;--scatter=${SCATTERFILE}")
  54. endfunction()
  55. function(toolchainSpecificLinkForCortexA PROJECTNAME ROOT CORE PLATFORMFOLDER)
  56. target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/Startup/AC5/startup_${CORE}.c)
  57. # RTE Components.h
  58. target_include_directories(${PROJECTNAME} PRIVATE ${ROOT}/CMSIS/DSP/Testing)
  59. set(SCATTERFILE "${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/lnk.sct")
  60. set_target_properties(${PROJECTNAME} PROPERTIES LINK_DEPENDS "${SCATTERFILE};${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5/mem_${CORE}.h")
  61. target_include_directories(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/LinkScripts/AC5)
  62. #target_link_options(${PROJECTNAME} PRIVATE "--info=sizes")
  63. target_link_options(${PROJECTNAME} PRIVATE "--entry=Vectors;--scatter=${SCATTERFILE}")
  64. endfunction()
  65. function(compilerSpecificPlatformConfigLibForM PROJECTNAME ROOT)
  66. endfunction()
  67. function(compilerSpecificPlatformConfigLibForA PROJECTNAME ROOT)
  68. endfunction()
  69. function(compilerSpecificPlatformConfigAppForM PROJECTNAME ROOT)
  70. endfunction()
  71. function(compilerSpecificPlatformConfigAppForA PROJECTNAME ROOT)
  72. endfunction()