mirror of https://github.com/ggml-org/llama.cpp
234 lines
10 KiB
YAML
234 lines
10 KiB
YAML
name: Build on Linux using cross-compiler
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
|
|
jobs:
|
|
ubuntu-24-riscv64-cpu-cross:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Riscv
|
|
run: |
|
|
sudo dpkg --add-architecture riscv64
|
|
|
|
# Add arch-specific repositories for non-amd64 architectures
|
|
cat << EOF | sudo tee /etc/apt/sources.list.d/riscv64-ports.list
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
|
|
EOF
|
|
|
|
sudo apt-get update || true ;# Prevent failure due to missing URLs.
|
|
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
gcc-14-riscv64-linux-gnu \
|
|
g++-14-riscv64-linux-gnu \
|
|
libcurl4-openssl-dev:riscv64
|
|
|
|
- name: Build
|
|
run: |
|
|
cmake -B build -DCMAKE_BUILD_TYPE=Release \
|
|
-DGGML_OPENMP=OFF \
|
|
-DLLAMA_BUILD_EXAMPLES=ON \
|
|
-DLLAMA_BUILD_TOOLS=ON \
|
|
-DLLAMA_BUILD_TESTS=OFF \
|
|
-DCMAKE_SYSTEM_NAME=Linux \
|
|
-DCMAKE_SYSTEM_PROCESSOR=riscv64 \
|
|
-DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
|
|
-DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
|
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
-DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
|
|
|
|
cmake --build build --config Release -j $(nproc)
|
|
|
|
ubuntu-24-riscv64-vulkan-cross:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Riscv
|
|
run: |
|
|
sudo dpkg --add-architecture riscv64
|
|
|
|
# Add arch-specific repositories for non-amd64 architectures
|
|
cat << EOF | sudo tee /etc/apt/sources.list.d/riscv64-ports.list
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
|
|
deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
|
|
EOF
|
|
|
|
sudo apt-get update || true ;# Prevent failure due to missing URLs.
|
|
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
glslc \
|
|
gcc-14-riscv64-linux-gnu \
|
|
g++-14-riscv64-linux-gnu \
|
|
libvulkan-dev:riscv64 \
|
|
libcurl4-openssl-dev:riscv64
|
|
|
|
- name: Build
|
|
run: |
|
|
cmake -B build -DCMAKE_BUILD_TYPE=Release \
|
|
-DGGML_VULKAN=ON \
|
|
-DGGML_OPENMP=OFF \
|
|
-DLLAMA_BUILD_EXAMPLES=ON \
|
|
-DLLAMA_BUILD_TOOLS=ON \
|
|
-DLLAMA_BUILD_TESTS=OFF \
|
|
-DCMAKE_SYSTEM_NAME=Linux \
|
|
-DCMAKE_SYSTEM_PROCESSOR=riscv64 \
|
|
-DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
|
|
-DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
|
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
-DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
|
|
|
|
cmake --build build --config Release -j $(nproc)
|
|
|
|
ubuntu-24-arm64-vulkan-cross:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Arm64
|
|
run: |
|
|
sudo dpkg --add-architecture arm64
|
|
|
|
# Add arch-specific repositories for non-amd64 architectures
|
|
cat << EOF | sudo tee /etc/apt/sources.list.d/arm64-ports.list
|
|
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
|
|
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
|
|
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
|
|
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
|
|
EOF
|
|
|
|
sudo apt-get update || true ;# Prevent failure due to missing URLs.
|
|
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
glslc \
|
|
crossbuild-essential-arm64 \
|
|
libvulkan-dev:arm64 \
|
|
libcurl4-openssl-dev:arm64
|
|
|
|
- name: Build
|
|
run: |
|
|
cmake -B build -DCMAKE_BUILD_TYPE=Release \
|
|
-DGGML_VULKAN=ON \
|
|
-DGGML_OPENMP=OFF \
|
|
-DLLAMA_BUILD_EXAMPLES=ON \
|
|
-DLLAMA_BUILD_TOOLS=ON \
|
|
-DLLAMA_BUILD_TESTS=OFF \
|
|
-DCMAKE_SYSTEM_NAME=Linux \
|
|
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
|
|
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
|
|
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
|
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
-DCMAKE_FIND_ROOT_PATH=/usr/lib/aarch64-linux-gnu \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
|
|
|
|
cmake --build build --config Release -j $(nproc)
|
|
|
|
ubuntu-24-ppc64el-cpu-cross:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup PowerPC64le
|
|
run: |
|
|
sudo dpkg --add-architecture ppc64el
|
|
|
|
# Add arch-specific repositories for non-amd64 architectures
|
|
cat << EOF | sudo tee /etc/apt/sources.list.d/ppc64el-ports.list
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
|
|
EOF
|
|
|
|
sudo apt-get update || true ;# Prevent failure due to missing URLs.
|
|
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
gcc-14-powerpc64le-linux-gnu \
|
|
g++-14-powerpc64le-linux-gnu \
|
|
libcurl4-openssl-dev:ppc64el
|
|
|
|
- name: Build
|
|
run: |
|
|
cmake -B build -DCMAKE_BUILD_TYPE=Release \
|
|
-DGGML_OPENMP=OFF \
|
|
-DLLAMA_BUILD_EXAMPLES=ON \
|
|
-DLLAMA_BUILD_TOOLS=ON \
|
|
-DLLAMA_BUILD_TESTS=OFF \
|
|
-DCMAKE_SYSTEM_NAME=Linux \
|
|
-DCMAKE_SYSTEM_PROCESSOR=ppc64 \
|
|
-DCMAKE_C_COMPILER=powerpc64le-linux-gnu-gcc-14 \
|
|
-DCMAKE_CXX_COMPILER=powerpc64le-linux-gnu-g++-14 \
|
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
-DCMAKE_FIND_ROOT_PATH=/usr/lib/powerpc64le-linux-gnu \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
|
|
|
|
cmake --build build --config Release -j $(nproc)
|
|
|
|
ubuntu-24-ppc64el-vulkan-cross:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup PowerPC64le
|
|
run: |
|
|
sudo dpkg --add-architecture ppc64el
|
|
|
|
# Add arch-specific repositories for non-amd64 architectures
|
|
cat << EOF | sudo tee /etc/apt/sources.list.d/ppc64el-ports.list
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble main universe
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe
|
|
deb [arch=ppc64el] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe
|
|
EOF
|
|
|
|
sudo apt-get update || true ;# Prevent failure due to missing URLs.
|
|
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
glslc \
|
|
gcc-14-powerpc64le-linux-gnu \
|
|
g++-14-powerpc64le-linux-gnu \
|
|
libvulkan-dev:ppc64el \
|
|
libcurl4-openssl-dev:ppc64el
|
|
|
|
- name: Build
|
|
run: |
|
|
cmake -B build -DCMAKE_BUILD_TYPE=Release \
|
|
-DGGML_VULKAN=ON \
|
|
-DGGML_OPENMP=OFF \
|
|
-DLLAMA_BUILD_EXAMPLES=ON \
|
|
-DLLAMA_BUILD_TOOLS=ON \
|
|
-DLLAMA_BUILD_TESTS=OFF \
|
|
-DCMAKE_SYSTEM_NAME=Linux \
|
|
-DCMAKE_SYSTEM_PROCESSOR=ppc64 \
|
|
-DCMAKE_C_COMPILER=powerpc64le-linux-gnu-gcc-14 \
|
|
-DCMAKE_CXX_COMPILER=powerpc64le-linux-gnu-g++-14 \
|
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
-DCMAKE_FIND_ROOT_PATH=/usr/lib/powerpc64le-linux-gnu \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
|
|
|
|
cmake --build build --config Release -j $(nproc)
|