Skip to content

build

build #318

Workflow file for this run

name: build
on: [workflow_call, workflow_dispatch]
env:
RUST_VERSION: "nightly-2025-12-10"
PYTHON_VERSION: "3.13"
jobs:
build-winmac:
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-pc-windows-msvc
os: windows-2022
arch: x64
- target: i686-pc-windows-msvc
os: windows-2022
arch: x86
- target: x86_64-apple-darwin
os: macos-15-intel
arch: x64
min_macos: "10.13"
- target: aarch64-apple-darwin
os: macos-15
arch: arm64
min_macos: "11.0"
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Install Nightly Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
components: rust-src, rustfmt, clippy
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
architecture: ${{ matrix.arch }}
- name: Install Python packages
run: pip install -r python/requirements.txt
- name: Build wheel
shell: bash
run: |
export MACOSX_DEPLOYMENT_TARGET=${{ matrix.min_macos }}
make TARGET=${{ matrix.target }}
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: pyxel-${{ matrix.target }}
path: dist/*
build-linux:
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
image: messense/manylinux2014-cross:x86_64
- target: i686-unknown-linux-gnu
image: messense/manylinux2014-cross:i686
- target: aarch64-unknown-linux-gnu
image: messense/manylinux2014-cross:aarch64
- target: armv7-unknown-linux-gnueabihf
image: messense/manylinux2014-cross:armv7l
runs-on: ubuntu-22.04
container: ${{ matrix.image }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install Nightly Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
components: rust-src, rustfmt, clippy
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Python packages
run: pip install -r python/requirements.txt
- name: Build and install SDL2
run: |
SDL2_VERSION=2.0.10
export CC=$TARGET_CC
export AR=$TARGET_AR
export RANLIB=$TARGET_RANLIB
curl -sqLO https://github.com/libsdl-org/SDL/releases/download/release-${SDL2_VERSION}/SDL2-${SDL2_VERSION}.tar.gz
tar xzf SDL2-${SDL2_VERSION}.tar.gz
cd SDL2-${SDL2_VERSION}
CFLAGS="-O3 -fPIC" ./configure \
--build=x86_64-unknown-linux-gnu \
--host=${{ matrix.target }} \
--prefix=/usr/${{ matrix.target }}
make -j4
make install
cd ..
rm -rf SDL2-${SDL2_VERSION}
- name: Build wheel
run: |
export BINDGENFLAGS="-I/usr/${{ matrix.target }}/include/SDL2 -I/usr/${{ matrix.target }}/${{ matrix.target }}/sysroot/usr/include"
export RUSTFLAGS="-L/usr/${{ matrix.target }}/lib"
make TARGET=${{ matrix.target }}
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: pyxel-${{ matrix.target }}
path: dist/*