riscv-gnu.toolchain.cmake 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. if(COMMAND toolchain_save_config)
  2. return() # prevent recursive call
  3. endif()
  4. set(CMAKE_SYSTEM_NAME Linux)
  5. set(CMAKE_SYSTEM_VERSION 1)
  6. if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR)
  7. set(CMAKE_SYSTEM_PROCESSOR riscv64)
  8. else()
  9. #message("CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}")
  10. endif()
  11. include("${CMAKE_CURRENT_LIST_DIR}/gnu.toolchain.cmake")
  12. if(NOT "x${GCC_COMPILER_VERSION}" STREQUAL "x")
  13. set(__GCC_VER_SUFFIX "-${GCC_COMPILER_VERSION}")
  14. endif()
  15. if(NOT DEFINED GNU_MACHINE)
  16. set(GNU_MACHINE riscv64-unknown-linux-gnu CACHE STRING "GNU compiler triple")
  17. endif()
  18. if(NOT DEFINED TOOLCHAIN_COMPILER_LOCATION_HINT)
  19. set(TOOLCHAIN_COMPILER_LOCATION_HINT PATHS /opt/riscv/bin ENV PATH)
  20. endif()
  21. find_program(CMAKE_C_COMPILER NAMES ${GNU_MACHINE}-gcc${__GCC_VER_SUFFIX} PATHS ${TOOLCHAIN_COMPILER_LOCATION_HINT})
  22. find_program(CMAKE_CXX_COMPILER NAMES ${GNU_MACHINE}-g++${__GCC_VER_SUFFIX} PATHS ${TOOLCHAIN_COMPILER_LOCATION_HINT})
  23. find_program(CMAKE_LINKER NAMES ${GNU_MACHINE}-ld${__GCC_VER_SUFFIX} ${GNU_MACHINE}-ld PATHS ${TOOLCHAIN_COMPILER_LOCATION_HINT})
  24. find_program(CMAKE_AR NAMES ${GNU_MACHINE}-ar${__GCC_VER_SUFFIX} ${GNU_MACHINE}-ar PATHS ${TOOLCHAIN_COMPILER_LOCATION_HINT})
  25. if(NOT CMAKE_C_COMPILER OR NOT CMAKE_CXX_COMPILER OR NOT CMAKE_LINKER OR NOT CMAKE_AR)
  26. message(FATAL_ERROR "\
  27. One of RISC-V toolchain components have not been found:
  28. CMAKE_C_COMPILER=${CMAKE_C_COMPILER}
  29. CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  30. CMAKE_LINKER=${CMAKE_LINKER}
  31. CMAKE_AR=${CMAKE_AR}
  32. Use PATH environment variable and/or GNU_MACHINE, TOOLCHAIN_COMPILER_LOCATION_HINT and others cmake variables to help CMake find them.")
  33. endif()
  34. if(NOT DEFINED RISCV_SYSROOT)
  35. get_filename_component(_base_dir ${CMAKE_C_COMPILER} DIRECTORY)
  36. get_filename_component(_base_dir ${_base_dir} DIRECTORY)
  37. set(RISCV_SYSROOT ${_base_dir}/sysroot CACHE PATH "RISC-V sysroot")
  38. endif()
  39. set(CMAKE_SYSROOT "${RISCV_SYSROOT}")
  40. set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${RISCV_SYSROOT})
  41. set(TOOLCHAIN_CONFIG_VARS ${TOOLCHAIN_CONFIG_VARS}
  42. RISCV_SYSROOT
  43. )
  44. toolchain_save_config()