ResolveToolchain.cmake 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. function(resolve_toolchain PROCESSOR TOOLCHAIN_STR)
  2. unset(${TOOLCHAIN_STR} PARENT_SCOPE)
  3. if(
  4. ${PROCESSOR} MATCHES "^at.*"
  5. )
  6. set(${TOOLCHAIN_STR} "avr" PARENT_SCOPE)
  7. set(QMK_EXTENSION ".hex" PARENT_SCOPE)
  8. include(FindAVRToolchain)
  9. find_avr_toolchain()
  10. elseif(
  11. ${PROCESSOR} MATCHES "^STM.*" OR
  12. ${PROCESSOR} MATCHES "^WB32.*" OR
  13. ${PROCESSOR} MATCHES "^MK.*" OR
  14. ${PROCESSOR} MATCHES "RP2040" OR
  15. ${PROCESSOR} MATCHES "^GD32.*"
  16. )
  17. set(${TOOLCHAIN_STR} "arm-none-eabi" PARENT_SCOPE)
  18. set(QMK_EXTENSION ".bin" PARENT_SCOPE)
  19. include(FindARMToolchain)
  20. find_arm_toolchain()
  21. elseif(
  22. ${PROCESSOR} MATCHES "risc-v"
  23. )
  24. set(${TOOLCHAIN_STR} "riscv32-unknown-elf" PARENT_SCOPE)
  25. set(QMK_EXTENSION ".bin" PARENT_SCOPE)
  26. else()
  27. message(FATAL_ERROR "Could not find toolchain for ${PROCESSOR}")
  28. endif()
  29. endfunction()
  30. function(find_toolchain TOOLCHAIN TOOLCHAIN_ROOT_STR)
  31. unset(${TOOLCHAIN_STR} PARENT_SCOPE)
  32. if(UNIX)
  33. set(OS_SUFFIX "")
  34. find_path(TOOLCHAIN_ROOT
  35. NAMES
  36. ${TOOLCHAIN}-gcc${OS_SUFFIX}
  37. PATHS
  38. "${CMAKE_SOURCE_DIR}/toolchains/avr-gcc/avr-gcc-12.1.0-x64-linux/bin/"
  39. "${CMAKE_SOURCE_DIR}/toolchains/gcc-arm-none-eabi-10.3-2021.10/bin/"
  40. /usr/bin/
  41. /usr/local/bin
  42. /bin/
  43. $ENV{AVR_ROOT}
  44. )
  45. elseif(WIN32)
  46. set(OS_SUFFIX ".exe")
  47. find_path(TOOLCHAIN_ROOT
  48. NAMES
  49. ${TOOLCHAIN}-gcc${OS_SUFFIX}
  50. PATHS
  51. "${CMAKE_SOURCE_DIR}/toolchains/avr-gcc-12.1.0-x64-windows/bin"
  52. "${CMAKE_SOURCE_DIR}/toolchains/gcc-arm-none-eabi-10.3-2021.10/bin/"
  53. $ENV{AVR_ROOT}
  54. )
  55. else()
  56. message(FATAL_ERROR "Unsure how to handle this OS")
  57. endif(UNIX)
  58. set(${TOOLCHAIN_ROOT_STR} ${TOOLCHAIN_ROOT} PARENT_SCOPE)
  59. endfunction(find_toolchain)