riscv64-071-gcc.toolchain.cmake 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. set(CMAKE_SYSTEM_NAME Linux)
  2. set(CMAKE_SYSTEM_PROCESSOR riscv64)
  3. set(CMAKE_CXX_COMPILER riscv64-unknown-linux-gnu-g++)
  4. set(CMAKE_C_COMPILER riscv64-unknown-linux-gnu-gcc)
  5. # MangoPi MQ Pro - C906FD, C906FDV
  6. # Lichee Pi 4A - C910, C910V (?)
  7. # CanMV K230 - C908, C908V
  8. # See https://github.com/T-head-Semi/gcc/blob/xuantie-gcc-10.4.0/gcc/config/riscv/riscv-cores.def
  9. set(_enable_vector OFF)
  10. if(CORE STREQUAL "C906FD")
  11. set(CMAKE_C_FLAGS_INIT "-mcpu=c906fd -mabi=lp64d -mtune=c906fd")
  12. set(CMAKE_CXX_FLAGS_INIT "-mcpu=c906fd -mabi=lp64d -mtune=c906fd")
  13. elseif(CORE STREQUAL "C906FDV")
  14. set(CMAKE_C_FLAGS_INIT "-mcpu=c906fd -mabi=lp64d -mtune=c906fd")
  15. set(CMAKE_CXX_FLAGS_INIT "-mcpu=c906fd -mabi=lp64d -mtune=c906fd")
  16. # Disabled due to limited 64-bit SEW support
  17. # set(_enable_vector ON)
  18. elseif(CORE STREQUAL "C908")
  19. set(CMAKE_C_FLAGS_INIT "-mcpu=c908 -mabi=lp64d -mtune=c908")
  20. set(CMAKE_CXX_FLAGS_INIT "-mcpu=c908 -mabi=lp64d -mtune=c908")
  21. elseif(CORE STREQUAL "C908V")
  22. set(CMAKE_C_FLAGS_INIT "-mcpu=c908v -mabi=lp64d -mtune=c908")
  23. set(CMAKE_CXX_FLAGS_INIT "-mcpu=c908v -mabi=lp64d -mtune=c908")
  24. set(_enable_vector ON) # RVV 1.0
  25. elseif(CORE STREQUAL "C910")
  26. set(CMAKE_C_FLAGS_INIT "-mcpu=c910 -mabi=lp64d -mtune=c910")
  27. set(CMAKE_CXX_FLAGS_INIT "-mcpu=c910 -mabi=lp64d -mtune=c910")
  28. elseif(CORE STREQUAL "C910V")
  29. set(CMAKE_C_FLAGS_INIT "-march=rv64imafdcv0p7xthead -mabi=lp64d")
  30. set(CMAKE_CXX_FLAGS_INIT "-march=rv64imafdcv0p7xthead -mabi=lp64d")
  31. set(_enable_vector ON) # RVV 0.7.1
  32. elseif(CORE STREQUAL "C920")
  33. set(CMAKE_C_FLAGS_INIT "-mcpu=c920 -mabi=lp64d -mtune=c920")
  34. set(CMAKE_CXX_FLAGS_INIT "-mcpu=c920 -mabi=lp64d -mtune=c920")
  35. set(_enable_vector ON) # RVV 0.7.1
  36. elseif(CORE STREQUAL "C920V2")
  37. set(CMAKE_C_FLAGS_INIT "-mcpu=c920v2 -mabi=lp64d -mtune=c920v2")
  38. set(CMAKE_CXX_FLAGS_INIT "-mcpu=c920v2 -mabi=lp64d -mtune=c920v2")
  39. set(_enable_vector ON) # RVV 1.0
  40. else()
  41. set(CMAKE_C_FLAGS_INIT "-march=rv64imafdc_zihintpause_zfh_zba_zbb_zbc_zbs_xtheadc -mabi=lp64d")
  42. set(CMAKE_CXX_FLAGS_INIT "-march=rv64imafdc_zihintpause_zfh_zba_zbb_zbc_zbs_xtheadc -mabi=lp64d")
  43. endif()
  44. if(_enable_vector)
  45. set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -D__riscv_vector_071 -mrvv-vector-bits=128")
  46. set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -D__riscv_vector_071 -mrvv-vector-bits=128")
  47. endif()
  48. if(ENABLE_GCOV)
  49. set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -fprofile-arcs -ftest-coverage")
  50. set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -fprofile-arcs -ftest-coverage")
  51. endif()