IAR-DetermineCompiler.cmake 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # IAR C/C++ Compiler (https://www.iar.com)
  2. # CPU <arch> supported in CMake: 8051, Arm, AVR, MSP430, RH850, RISC-V, RL78, RX and V850
  3. #
  4. # IAR C/C++ Compiler for <arch> internal integer symbols used in CMake:
  5. #
  6. # __IAR_SYSTEMS_ICC__
  7. # Provides the compiler internal platform version
  8. # __ICC<arch>__
  9. # Provides 1 for the current <arch> in use
  10. # __VER__
  11. # Provides the current version in use
  12. # The semantic version of the compiler is architecture-dependent
  13. # When <arch> is ARM:
  14. # CMAKE_<LANG>_COMPILER_VERSION_MAJOR = (__VER__ / 1E6)
  15. # CMAKE_<LANG>_COMPILER_VERSION_MINOR = (__VER__ / 1E3) % 1E3
  16. # CMAKE_<LANG>_COMPILER_VERSION_PATCH = (__VER__ % 1E3)
  17. # When <arch> is non-ARM:
  18. # CMAKE_<LANG>_COMPILER_VERSION_MAJOR = (__VER__ / 1E2)
  19. # CMAKE_<LANG>_COMPILER_VERSION_MINOR = (__VER__ - ((__VER__/ 1E2) * 1E2))
  20. # CMAKE_<LANG>_COMPILER_VERSION_PATCH = (__SUBVERSION__)
  21. # __SUBVERSION__
  22. # Provides the version's patch level for non-ARM <arch>
  23. #
  24. set(_compiler_id_pp_test "defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)")
  25. set(_compiler_id_version_compute "
  26. # if defined(__VER__) && defined(__ICCARM__)
  27. # define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@((__VER__) / 1000000)
  28. # define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(((__VER__) / 1000) % 1000)
  29. # define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@((__VER__) % 1000)
  30. # define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__IAR_SYSTEMS_ICC__)
  31. # elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
  32. # define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@((__VER__) / 100)
  33. # define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@((__VER__) - (((__VER__) / 100)*100))
  34. # define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__SUBVERSION__)
  35. # define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__IAR_SYSTEMS_ICC__)
  36. # endif")