build-riscv-native.yml 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. name: Build on RISCV Linux Machine by Cloud-V
  2. on:
  3. pull_request:
  4. workflow_dispatch:
  5. workflow_call:
  6. jobs:
  7. debian-13-riscv64-native: # Bianbu 2.2
  8. runs-on: self-hosted
  9. steps:
  10. - name: Install prerequisites
  11. run: |
  12. sudo apt-get update || true
  13. sudo apt-get install -y libatomic1
  14. - uses: actions/checkout@v4
  15. - name: Setup Riscv
  16. run: |
  17. sudo apt-get update || true
  18. sudo apt-get install -y --no-install-recommends \
  19. build-essential \
  20. gcc-14-riscv64-linux-gnu \
  21. g++-14-riscv64-linux-gnu \
  22. ccache \
  23. cmake
  24. - name: Setup ccache
  25. run: |
  26. mkdir -p $HOME/.ccache
  27. ccache -M 5G -d $HOME/.ccache
  28. export CCACHE_LOGFILE=/home/runneruser/ccache_debug/ccache.log
  29. export CCACHE_DEBUGDIR="/home/runneruser/ccache_debug"
  30. echo "$GITHUB_WORKSPACE"
  31. echo "CCACHE_LOGFILE=$CCACHE_LOGFILE" >> $GITHUB_ENV
  32. echo "CCACHE_DEBUGDIR=$CCACHE_DEBUGDIR" >> $GITHUB_ENV
  33. echo "CCACHE_BASEDIR=$GITHUB_WORKSPACE" >> $GITHUB_ENV
  34. echo "CCACHE_DIR=$HOME/.ccache" >> $GITHUB_ENV
  35. - name: Build
  36. run: |
  37. cmake -B build \
  38. -DLLAMA_CURL=OFF \
  39. -DCMAKE_BUILD_TYPE=Release \
  40. -DGGML_OPENMP=OFF \
  41. -DLLAMA_BUILD_EXAMPLES=ON \
  42. -DLLAMA_BUILD_TOOLS=ON \
  43. -DLLAMA_BUILD_TESTS=OFF \
  44. -DCMAKE_SYSTEM_NAME=Linux \
  45. -DCMAKE_SYSTEM_PROCESSOR=riscv64 \
  46. -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
  47. -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
  48. -DCMAKE_C_COMPILER_LAUNCHER=ccache \
  49. -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
  50. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  51. -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
  52. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  53. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  54. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  55. cmake --build build --config Release -j $(nproc)