build-linux-cross.yml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. name: Build on Linux using cross-compiler
  2. on:
  3. workflow_dispatch:
  4. workflow_call:
  5. jobs:
  6. ubuntu-24-riscv64-cpu-cross:
  7. runs-on: ubuntu-24.04
  8. steps:
  9. - uses: actions/checkout@v4
  10. - name: Setup Riscv
  11. run: |
  12. sudo dpkg --add-architecture riscv64
  13. # Add arch-specific repositories for non-amd64 architectures
  14. cat << EOF | sudo tee /etc/apt/sources.list.d/riscv64-ports.list
  15. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
  16. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
  17. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
  18. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
  19. EOF
  20. sudo apt-get update || true ;# Prevent failure due to missing URLs.
  21. sudo apt-get install -y --no-install-recommends \
  22. build-essential \
  23. gcc-14-riscv64-linux-gnu \
  24. g++-14-riscv64-linux-gnu
  25. - name: Build
  26. run: |
  27. cmake -B build -DLLAMA_CURL=OFF \
  28. -DCMAKE_BUILD_TYPE=Release \
  29. -DGGML_OPENMP=OFF \
  30. -DLLAMA_BUILD_EXAMPLES=ON \
  31. -DLLAMA_BUILD_TOOLS=ON \
  32. -DLLAMA_BUILD_TESTS=OFF \
  33. -DCMAKE_SYSTEM_NAME=Linux \
  34. -DCMAKE_SYSTEM_PROCESSOR=riscv64 \
  35. -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
  36. -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
  37. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  38. -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
  39. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  40. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  41. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  42. cmake --build build --config Release -j $(nproc)
  43. ubuntu-24-riscv64-vulkan-cross:
  44. runs-on: ubuntu-24.04
  45. steps:
  46. - uses: actions/checkout@v4
  47. - name: Setup Riscv
  48. run: |
  49. sudo dpkg --add-architecture riscv64
  50. # Add arch-specific repositories for non-amd64 architectures
  51. cat << EOF | sudo tee /etc/apt/sources.list.d/riscv64-ports.list
  52. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
  53. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
  54. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
  55. deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
  56. EOF
  57. sudo apt-get update || true ;# Prevent failure due to missing URLs.
  58. sudo apt-get install -y --no-install-recommends \
  59. build-essential \
  60. glslc \
  61. gcc-14-riscv64-linux-gnu \
  62. g++-14-riscv64-linux-gnu \
  63. libvulkan-dev:riscv64
  64. - name: Build
  65. run: |
  66. cmake -B build -DLLAMA_CURL=OFF \
  67. -DCMAKE_BUILD_TYPE=Release \
  68. -DGGML_VULKAN=ON \
  69. -DGGML_OPENMP=OFF \
  70. -DLLAMA_BUILD_EXAMPLES=ON \
  71. -DLLAMA_BUILD_TOOLS=ON \
  72. -DLLAMA_BUILD_TESTS=OFF \
  73. -DCMAKE_SYSTEM_NAME=Linux \
  74. -DCMAKE_SYSTEM_PROCESSOR=riscv64 \
  75. -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
  76. -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
  77. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  78. -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
  79. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  80. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  81. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  82. cmake --build build --config Release -j $(nproc)
  83. ubuntu-24-arm64-vulkan-cross:
  84. runs-on: ubuntu-24.04
  85. steps:
  86. - uses: actions/checkout@v4
  87. - name: Setup Arm64
  88. run: |
  89. sudo dpkg --add-architecture arm64
  90. # Add arch-specific repositories for non-amd64 architectures
  91. cat << EOF | sudo tee /etc/apt/sources.list.d/arm64-ports.list
  92. deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
  93. deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
  94. deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
  95. deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
  96. EOF
  97. sudo apt-get update || true ;# Prevent failure due to missing URLs.
  98. sudo apt-get install -y --no-install-recommends \
  99. build-essential \
  100. glslc \
  101. crossbuild-essential-arm64 \
  102. libvulkan-dev:arm64
  103. - name: Build
  104. run: |
  105. cmake -B build -DLLAMA_CURL=OFF \
  106. -DCMAKE_BUILD_TYPE=Release \
  107. -DGGML_VULKAN=ON \
  108. -DGGML_OPENMP=OFF \
  109. -DLLAMA_BUILD_EXAMPLES=ON \
  110. -DLLAMA_BUILD_TOOLS=ON \
  111. -DLLAMA_BUILD_TESTS=OFF \
  112. -DCMAKE_SYSTEM_NAME=Linux \
  113. -DCMAKE_SYSTEM_PROCESSOR=aarch64 \
  114. -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
  115. -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
  116. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  117. -DCMAKE_FIND_ROOT_PATH=/usr/lib/aarch64-linux-gnu \
  118. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  119. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  120. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  121. cmake --build build --config Release -j $(nproc)
  122. ubuntu-24-ppc64el-cpu-cross:
  123. runs-on: ubuntu-24.04
  124. steps:
  125. - uses: actions/checkout@v4
  126. - name: Setup PowerPC64le
  127. run: |
  128. sudo dpkg --add-architecture ppc64el
  129. # Add arch-specific repositories for non-amd64 architectures
  130. cat << EOF | sudo tee /etc/apt/sources.list.d/ppc64el-ports.list
  131. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
  132. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
  133. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
  134. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
  135. EOF
  136. sudo apt-get update || true ;# Prevent failure due to missing URLs.
  137. sudo apt-get install -y --no-install-recommends \
  138. build-essential \
  139. gcc-14-powerpc64le-linux-gnu \
  140. g++-14-powerpc64le-linux-gnu
  141. - name: Build
  142. run: |
  143. cmake -B build -DLLAMA_CURL=OFF \
  144. -DCMAKE_BUILD_TYPE=Release \
  145. -DGGML_OPENMP=OFF \
  146. -DLLAMA_BUILD_EXAMPLES=ON \
  147. -DLLAMA_BUILD_TOOLS=ON \
  148. -DLLAMA_BUILD_TESTS=OFF \
  149. -DCMAKE_SYSTEM_NAME=Linux \
  150. -DCMAKE_SYSTEM_PROCESSOR=ppc64 \
  151. -DCMAKE_C_COMPILER=powerpc64le-linux-gnu-gcc-14 \
  152. -DCMAKE_CXX_COMPILER=powerpc64le-linux-gnu-g++-14 \
  153. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  154. -DCMAKE_FIND_ROOT_PATH=/usr/lib/powerpc64le-linux-gnu \
  155. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  156. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  157. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  158. cmake --build build --config Release -j $(nproc)
  159. ubuntu-24-ppc64el-vulkan-cross:
  160. runs-on: ubuntu-24.04
  161. steps:
  162. - uses: actions/checkout@v4
  163. - name: Setup PowerPC64le
  164. run: |
  165. sudo dpkg --add-architecture ppc64el
  166. # Add arch-specific repositories for non-amd64 architectures
  167. cat << EOF | sudo tee /etc/apt/sources.list.d/ppc64el-ports.list
  168. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
  169. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
  170. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
  171. deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
  172. EOF
  173. sudo apt-get update || true ;# Prevent failure due to missing URLs.
  174. sudo apt-get install -y --no-install-recommends \
  175. build-essential \
  176. glslc \
  177. gcc-14-powerpc64le-linux-gnu \
  178. g++-14-powerpc64le-linux-gnu \
  179. libvulkan-dev:ppc64el
  180. - name: Build
  181. run: |
  182. cmake -B build -DLLAMA_CURL=OFF \
  183. -DCMAKE_BUILD_TYPE=Release \
  184. -DGGML_VULKAN=ON \
  185. -DGGML_OPENMP=OFF \
  186. -DLLAMA_BUILD_EXAMPLES=ON \
  187. -DLLAMA_BUILD_TOOLS=ON \
  188. -DLLAMA_BUILD_TESTS=OFF \
  189. -DCMAKE_SYSTEM_NAME=Linux \
  190. -DCMAKE_SYSTEM_PROCESSOR=ppc64 \
  191. -DCMAKE_C_COMPILER=powerpc64le-linux-gnu-gcc-14 \
  192. -DCMAKE_CXX_COMPILER=powerpc64le-linux-gnu-g++-14 \
  193. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  194. -DCMAKE_FIND_ROOT_PATH=/usr/lib/powerpc64le-linux-gnu \
  195. -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
  196. -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
  197. -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
  198. cmake --build build --config Release -j $(nproc)