mirror of
https://github.com/gbdev/rgbds.git
synced 2026-05-08 10:59:36 +00:00
65ec1af1e8
This moves the tortuous flags out of our CI scripts, and allows us to benefit from the libpng download caching.
113 lines
3.9 KiB
YAML
113 lines
3.9 KiB
YAML
name: Create release artifacts
|
|
on:
|
|
push:
|
|
tags:
|
|
- v[0-9]*
|
|
|
|
env:
|
|
CLICOLOR_FORCE: 1 # Tells CMake to have colored output.
|
|
CMAKE_COLOR_DIAGNOSTICS: ON # Tells CMake-generated build systems to have colored output.
|
|
# Approximate number of CPU cores in GitHub's runners as of 2026-03-18:
|
|
# https://docs.github.com/en/actions/reference/runners/github-hosted-runners#standard-github-hosted-runners-for-public-repositories
|
|
CMAKE_BUILD_PARALLEL_LEVEL: 4 # `cmake --build` now implies `--parallel 4`.
|
|
CMAKE_INSTALL_PARALLEL_LEVEL: 4 # `cmake --install` now implies `--parallel 4`.
|
|
CMAKE_BUILD_TYPE: Release # `cmake -S` now implies `-DCMAKE_BUILD_TYPE=Release`.
|
|
CMAKE_CONFIG_TYPE: Release # `cmake --build` now implies `--config Release`.
|
|
|
|
# We instruct CMake to download and build third-party projects in the same place as in `testing.yml`
|
|
# to prevent divergence between testing and release workflows.
|
|
DEPS_ROOT_DIR: ~/_deps
|
|
|
|
jobs:
|
|
windows:
|
|
runs-on: windows-2022
|
|
strategy:
|
|
matrix:
|
|
bits: [32, 64]
|
|
fail-fast: false
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v6
|
|
- name: Install deps
|
|
run: |
|
|
bash .github/scripts/install_deps.sh windows
|
|
- name: Build Windows binaries
|
|
run: |
|
|
cmake -S . -B build --preset msvc${{ matrix.bits }} -DFETCHCONTENT_BASE_DIR="${{ env.DEPS_ROOT_DIR }}"
|
|
cmake --build build --config Release
|
|
- name: Package binaries
|
|
working-directory: build
|
|
run: |
|
|
cpack -DCPACK_PACKAGE_FILE_NAME=rgbds-win${{ matrix.bits }} -G ZIP -C Release --verbose
|
|
- name: Upload Windows binaries
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: win${{ matrix.bits }}
|
|
path: build/rgbds-win${{ matrix.bits }}.zip
|
|
if-no-files-found: error
|
|
|
|
macos:
|
|
runs-on: macos-14
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v6
|
|
- name: Install deps
|
|
run: |
|
|
./.github/scripts/install_deps.sh macos
|
|
- name: Build binaries
|
|
run: |
|
|
cmake -S . -B build --preset macos-static -DFETCHCONTENT_BASE_DIR="${{ env.DEPS_ROOT_DIR }}"
|
|
cmake --build build
|
|
strip rgb{asm,link,fix,gfx}
|
|
- name: Package binaries
|
|
run: |
|
|
zip --junk-paths rgbds-macos.zip rgb{asm,link,fix,gfx} man/* .github/scripts/install.sh
|
|
- name: Upload macOS binaries
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: macos
|
|
path: rgbds-macos.zip
|
|
if-no-files-found: error
|
|
|
|
linux:
|
|
runs-on: ubuntu-22.04 # Oldest supported, for best glibc compatibility.
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v6
|
|
- name: Install deps
|
|
run: |
|
|
./.github/scripts/install_deps.sh ubuntu-22.04
|
|
- name: Build binaries
|
|
run: |
|
|
make -kj WARNFLAGS="-Wall -Wextra -pedantic -static" PKG_CONFIG="pkg-config --static" Q=
|
|
strip rgb{asm,link,fix,gfx}
|
|
- name: Package binaries
|
|
run: |
|
|
tar caf rgbds-linux-x86_64.tar.xz --transform='s#.*/##' rgb{asm,link,fix,gfx} man/* .github/scripts/install.sh
|
|
- name: Upload Linux binaries
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: linux
|
|
path: rgbds-linux-x86_64.tar.xz
|
|
if-no-files-found: error
|
|
|
|
release:
|
|
runs-on: ubuntu-slim
|
|
needs: [windows, macos, linux]
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v6
|
|
- name: Package sources
|
|
run: |
|
|
make dist Q=
|
|
- name: Download all binary packages
|
|
uses: actions/download-artifact@v8
|
|
- name: Draft the release
|
|
run: |
|
|
.github/scripts/draft-release.sh "${ref#refs/tags/}"
|
|
env:
|
|
ref: ${{ github.ref_name }}
|
|
GH_TOKEN: ${{ github.token }} # Required by the `gh` command.
|