IAR-FindBinUtils.cmake 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
  2. message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
  3. endif()
  4. # Try to find tools in the same directory as Clang itself
  5. get_filename_component(__iar_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH)
  6. get_filename_component(__iar_hint_1 "${__iar_hint_1}" DIRECTORY)
  7. get_filename_component(__iar_hint_2 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
  8. set(__iar_hints "${__iar_hint_1}" "${__iar_hint_2}")
  9. if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
  10. # could allow using normal binutils ar, since objects are normal ELF files?
  11. find_program(CMAKE_IAR_LINKARM ilinkarm.exe HINTS ${__iar_hints}
  12. DOC "The IAR ARM linker")
  13. find_program(CMAKE_IAR_ARCHIVE iarchive.exe HINTS ${__iar_hints}
  14. DOC "The IAR archiver")
  15. # find auxiliary tools
  16. find_program(CMAKE_IAR_ELFTOOL ielftool.exe HINTS ${__iar_hints}
  17. DOC "The IAR ELF Tool")
  18. find_program(CMAKE_IAR_ELFDUMP ielfdumparm.exe HINTS ${__iar_hints}
  19. DOC "The IAR ELF Dumper")
  20. find_program(CMAKE_IAR_OBJMANIP iobjmanip.exe HINTS ${__iar_hints}
  21. DOC "The IAR ELF Object Tool")
  22. find_program(CMAKE_IAR_SYMEXPORT isymexport.exe HINTS ${__iar_hints}
  23. DOC "The IAR Absolute Symbol Exporter")
  24. mark_as_advanced(CMAKE_IAR_LINKARM CMAKE_IAR_ARCHIVE CMAKE_IAR_ELFTOOL CMAKE_IAR_ELFDUMP CMAKE_IAR_OBJMANIP CMAKE_IAR_SYMEXPORT)
  25. set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_CUSTOM_CODE
  26. "set(CMAKE_IAR_LINKARM \"${CMAKE_IAR_LINKARM}\")
  27. set(CMAKE_IAR_ARCHIVE \"${CMAKE_IAR_ARCHIVE}\")
  28. set(CMAKE_IAR_ELFTOOL \"${CMAKE_IAR_ELFTOOL}\")
  29. set(CMAKE_IAR_ELFDUMP \"${CMAKE_IAR_ELFDUMP}\")
  30. set(CMAKE_IAR_OBJMANIP \"${CMAKE_IAR_OBJMANIP}\")
  31. set(CMAKE_IAR_LINKARM \"${CMAKE_IAR_LINKARM}\")
  32. ")
  33. elseif("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
  34. # For AVR and AVR32, IAR uses the "xlink" linker and the "xar" archiver:
  35. find_program(CMAKE_IAR_LINKER xlink.exe HINTS ${__iar_hints}
  36. DOC "The IAR AVR linker")
  37. find_program(CMAKE_IAR_AR xar.exe HINTS ${__iar_hints}
  38. DOC "The IAR archiver")
  39. mark_as_advanced(CMAKE_IAR_LINKER CMAKE_IAR_AR)
  40. set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_CUSTOM_CODE
  41. "set(CMAKE_IAR_LINKER \"${CMAKE_IAR_LINKER}\")
  42. set(CMAKE_IAR_AR \"${CMAKE_IAR_AR}\")
  43. ")
  44. endif()