| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346 |
- 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
- - name: Build
- run: |
- cmake -B build -DLLAMA_CURL=OFF \
- -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
- - name: Build
- run: |
- cmake -B build -DLLAMA_CURL=OFF \
- -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
- - name: Build
- run: |
- cmake -B build -DLLAMA_CURL=OFF \
- -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
- - name: Build
- run: |
- cmake -B build -DLLAMA_CURL=OFF \
- -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
- - name: Build
- run: |
- cmake -B build -DLLAMA_CURL=OFF \
- -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)
- debian-13-loongarch64-cpu-cross:
- runs-on: ubuntu-24.04
- container: debian@sha256:653dfb9f86c3782e8369d5f7d29bb8faba1f4bff9025db46e807fa4c22903671
- steps:
- - uses: actions/checkout@v4
- - name: Setup LoongArch
- run: |
- rm -f /etc/apt/sources.list.d/*
- cat << EOF | tee /etc/apt/sources.list.d/debian-ports.list
- deb http://snapshot.debian.org/archive/debian/20250515T202920Z/ trixie main
- EOF
- ( echo 'quiet "true";'; \
- echo 'APT::Get::Assume-Yes "true";'; \
- echo 'APT::Install-Recommends "false";'; \
- echo 'Acquire::Check-Valid-Until "false";'; \
- echo 'Acquire::Retries "5";'; \
- ) > /etc/apt/apt.conf.d/99snapshot-repos
- apt-get update
- apt-get install -y ca-certificates debian-ports-archive-keyring cmake git zip
- dpkg --add-architecture loong64
- # Add arch-specific repositories for non-amd64 architectures
- cat << EOF | tee /etc/apt/sources.list.d/loong64-ports.list
- deb [arch=loong64] http://snapshot.debian.org/archive/debian-ports/20250515T194251Z/ sid main
- EOF
- apt-get update || true ;# Prevent failure due to missing URLs.
- apt-get install -y --no-install-recommends \
- build-essential \
- gcc-14-loongarch64-linux-gnu \
- g++-14-loongarch64-linux-gnu
- - name: Build
- run: |
- cmake -B build -DLLAMA_CURL=OFF \
- -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=loongarch64 \
- -DCMAKE_C_COMPILER=loongarch64-linux-gnu-gcc-14 \
- -DCMAKE_CXX_COMPILER=loongarch64-linux-gnu-g++-14 \
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
- -DCMAKE_FIND_ROOT_PATH=/usr/lib/loongarch64-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)
- debian-13-loongarch64-vulkan-cross:
- runs-on: ubuntu-24.04
- container: debian@sha256:653dfb9f86c3782e8369d5f7d29bb8faba1f4bff9025db46e807fa4c22903671
- steps:
- - uses: actions/checkout@v4
- - name: Setup LoongArch
- run: |
- rm -f /etc/apt/sources.list.d/*
- cat << EOF | tee /etc/apt/sources.list.d/debian-ports.list
- deb http://snapshot.debian.org/archive/debian/20250515T202920Z/ trixie main
- EOF
- ( echo 'quiet "true";'; \
- echo 'APT::Get::Assume-Yes "true";'; \
- echo 'APT::Install-Recommends "false";'; \
- echo 'Acquire::Check-Valid-Until "false";'; \
- echo 'Acquire::Retries "5";'; \
- ) > /etc/apt/apt.conf.d/99snapshot-repos
- apt-get update
- apt-get install -y ca-certificates debian-ports-archive-keyring cmake git zip
- dpkg --add-architecture loong64
- # Add arch-specific repositories for non-amd64 architectures
- cat << EOF | tee /etc/apt/sources.list.d/loong64-ports.list
- deb [arch=loong64] http://snapshot.debian.org/archive/debian-ports/20250515T194251Z/ sid main
- EOF
- apt-get update || true ;# Prevent failure due to missing URLs.
- apt-get install -y --no-install-recommends \
- build-essential \
- glslc \
- gcc-14-loongarch64-linux-gnu \
- g++-14-loongarch64-linux-gnu \
- libvulkan-dev:loong64
- - name: Build
- run: |
- cmake -B build -DLLAMA_CURL=OFF \
- -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=loongarch64 \
- -DCMAKE_C_COMPILER=loongarch64-linux-gnu-gcc-14 \
- -DCMAKE_CXX_COMPILER=loongarch64-linux-gnu-g++-14 \
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
- -DCMAKE_FIND_ROOT_PATH=/usr/lib/loongarch64-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)
|