LocalAvrGcc.cmake 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. get_filename_component(PROJECT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
  2. include("${PROJECT_CMAKE_DIR}/Utilities.cmake")
  3. set(CMAKE_SYSTEM_NAME Generic)
  4. set(CMAKE_SYSTEM_PROCESSOR avr)
  5. set(CMAKE_CROSSCOMPILING 1)
  6. set(AVR_GCC_VERSION 7.3.0)
  7. set(AVR_TOOLCHAIN_DIR "${PROJECT_CMAKE_DIR}/../.dependencies/avr-gcc-${AVR_GCC_VERSION}/")
  8. message( "tc dir is ${AVR_TOOLCHAIN_DIR}")
  9. #
  10. # Utilities
  11. if(MINGW
  12. OR CYGWIN
  13. OR WIN32
  14. )
  15. set(UTIL_SEARCH_CMD where)
  16. set(EXECUTABLE_SUFFIX ".exe")
  17. elseif(UNIX OR APPLE)
  18. set(UTIL_SEARCH_CMD which)
  19. set(EXECUTABLE_SUFFIX "")
  20. endif()
  21. set(TOOLCHAIN_PREFIX avr-)
  22. #
  23. # Looking up the toolchain
  24. #
  25. if(AVR_TOOLCHAIN_DIR)
  26. # using toolchain set by AvrGcc.cmake (locked version)
  27. set(BINUTILS_PATH "${AVR_TOOLCHAIN_DIR}/bin")
  28. else()
  29. # search for ANY avr-gcc toolchain
  30. execute_process(
  31. COMMAND ${UTIL_SEARCH_CMD} ${TOOLCHAIN_PREFIX}gcc
  32. OUTPUT_VARIABLE AVR_GCC_PATH
  33. OUTPUT_STRIP_TRAILING_WHITESPACE
  34. RESULT_VARIABLE FIND_RESULT
  35. )
  36. # found?
  37. if(NOT "${FIND_RESULT}" STREQUAL "0")
  38. message(FATAL_ERROR "avr-gcc not found")
  39. endif()
  40. get_filename_component(BINUTILS_PATH "${AVR_GCC_PATH}" DIRECTORY)
  41. get_filename_component(AVR_TOOLCHAIN_DIR ${BINUTILS_PATH} DIRECTORY)
  42. endif()
  43. #
  44. # Setup CMake
  45. #
  46. # Without that flag CMake is not able to pass test compilation check
  47. set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
  48. set(CMAKE_C_COMPILER
  49. "${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}gcc${EXECUTABLE_SUFFIX}"
  50. CACHE FILEPATH "" FORCE
  51. )
  52. set(CMAKE_ASM_COMPILER
  53. "${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}gcc${EXECUTABLE_SUFFIX}"
  54. CACHE FILEPATH "" FORCE
  55. )
  56. set(CMAKE_CXX_COMPILER
  57. "${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}g++${EXECUTABLE_SUFFIX}"
  58. CACHE FILEPATH "" FORCE
  59. )
  60. set(CMAKE_EXE_LINKER_FLAGS_INIT
  61. ""
  62. CACHE STRING "" FORCE
  63. )
  64. set(CMAKE_ASM_COMPILE_OBJECT
  65. "<CMAKE_ASM_COMPILER> <DEFINES> <FLAGS> -o <OBJECT> -c <SOURCE>"
  66. CACHE STRING "" FORCE
  67. )
  68. set(CMAKE_OBJCOPY
  69. "${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}objcopy${EXECUTABLE_SUFFIX}"
  70. CACHE INTERNAL "objcopy tool"
  71. )
  72. set(CMAKE_OBJDUMP
  73. "${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}objdump${EXECUTABLE_SUFFIX}"
  74. CACHE INTERNAL "objdump tool"
  75. )
  76. set(CMAKE_SIZE_UTIL
  77. "${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}size${EXECUTABLE_SUFFIX}"
  78. CACHE INTERNAL "size tool"
  79. )
  80. set(CMAKE_FIND_ROOT_PATH "${AVR_TOOLCHAIN_DIR}")
  81. set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
  82. set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
  83. set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)