build-linux-cross.yml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. name: Build on Linux using cross-compiler
  2. on:
  3. workflow_dispatch:
  4. workflow_call:
  5. jobs:
  6. ubuntu-latest-riscv64-cpu-cross:
  7. runs-on: ubuntu-latest
  8. steps:
  9. - uses: actions/checkout@v4
  10. - name: Setup Riscv
  11. run: |
  12. sudo dpkg --add-architecture riscv64
  13. sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu|http://ports.ubuntu.com/ubuntu-ports|g' \
  14. /etc/apt/sources.list /etc/apt/apt-mirrors.txt
  15. sudo apt-get clean
  16. sudo apt-get update
  17. sudo apt-get install -y --no-install-recommends \
  18. build-essential \
  19. gcc-14-riscv64-linux-gnu \
  20. g++-14-riscv64-linux-gnu \
  21. libcurl4-openssl-dev:riscv64
  22. - name: Build
  23. run: |
  24. cmake -B build -DCMAKE_BUILD_TYPE=Release \
  25. -DGGML_OPENMP=OFF \
  26. -DLLAMA_BUILD_EXAMPLES=ON \
  27. -DLLAMA_BUILD_TESTS=OFF \
  28. -DCMAKE_SYSTEM_NAME=Linux \
  29. -DCMAKE_SYSTEM_PROCESSOR=riscv64 \
  30. -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
  31. -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
  32. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  33. -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
  34. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  35. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  36. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  37. cmake --build build --config Release -j $(nproc)
  38. ubuntu-latest-riscv64-vulkan-cross:
  39. runs-on: ubuntu-latest
  40. steps:
  41. - uses: actions/checkout@v4
  42. with:
  43. fetch-depth: 0
  44. - name: Setup Riscv
  45. run: |
  46. sudo dpkg --add-architecture riscv64
  47. sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu|http://ports.ubuntu.com/ubuntu-ports|g' \
  48. /etc/apt/sources.list /etc/apt/apt-mirrors.txt
  49. sudo apt-get clean
  50. sudo apt-get update
  51. sudo apt-get install -y --no-install-recommends \
  52. build-essential \
  53. glslc \
  54. gcc-14-riscv64-linux-gnu \
  55. g++-14-riscv64-linux-gnu \
  56. libvulkan-dev:riscv64 \
  57. libcurl4-openssl-dev:riscv64
  58. - name: Build
  59. run: |
  60. cmake -B build -DCMAKE_BUILD_TYPE=Release \
  61. -DGGML_VULKAN=ON \
  62. -DGGML_OPENMP=OFF \
  63. -DLLAMA_BUILD_EXAMPLES=ON \
  64. -DLLAMA_BUILD_TESTS=OFF \
  65. -DCMAKE_SYSTEM_NAME=Linux \
  66. -DCMAKE_SYSTEM_PROCESSOR=riscv64 \
  67. -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
  68. -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
  69. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  70. -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
  71. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  72. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  73. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  74. cmake --build build --config Release -j $(nproc)
  75. ubuntu-latest-arm64-vulkan-cross:
  76. runs-on: ubuntu-latest
  77. steps:
  78. - uses: actions/checkout@v4
  79. with:
  80. fetch-depth: 0
  81. - name: Setup Arm64
  82. run: |
  83. sudo dpkg --add-architecture arm64
  84. sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu|http://ports.ubuntu.com/ubuntu-ports|g' \
  85. /etc/apt/sources.list /etc/apt/apt-mirrors.txt
  86. sudo apt-get clean
  87. sudo apt-get update
  88. sudo apt-get install -y --no-install-recommends \
  89. build-essential \
  90. glslc \
  91. crossbuild-essential-arm64 \
  92. libvulkan-dev:arm64 \
  93. libcurl4-openssl-dev:arm64
  94. - name: Build
  95. run: |
  96. cmake -B build -DCMAKE_BUILD_TYPE=Release \
  97. -DGGML_VULKAN=ON \
  98. -DGGML_OPENMP=OFF \
  99. -DLLAMA_BUILD_EXAMPLES=ON \
  100. -DLLAMA_BUILD_TESTS=OFF \
  101. -DCMAKE_SYSTEM_NAME=Linux \
  102. -DCMAKE_SYSTEM_PROCESSOR=aarch64 \
  103. -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
  104. -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
  105. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  106. -DCMAKE_FIND_ROOT_PATH=/usr/lib/aarch64-linux-gnu \
  107. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  108. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  109. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  110. cmake --build build --config Release -j $(nproc)