Skip to content

Use Meson to build all reference decoders #27

Use Meson to build all reference decoders

Use Meson to build all reference decoders #27

Workflow file for this run

# Fluster - testing framework for decoders conformance
# Copyright (C) 2025, Fluendo, S.A.
#
# CI workflow to build all reference decoders on multiple platforms
name: Build Reference Decoders
on:
push:
branches:
- master
paths:
- 'subprojects/**'
- 'meson.build'
- 'meson_options.txt'
- 'build/**'
- '.github/workflows/build-decoders.yml'
pull_request:
branches:
- master
paths:
- 'subprojects/**'
- 'meson.build'
- 'meson_options.txt'
- 'build/**'
- '.github/workflows/build-decoders.yml'
workflow_dispatch:
jobs:
build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: ${{ matrix.shell }}
strategy:
fail-fast: false
matrix:
include:
- name: Linux x86_64
os: ubuntu-22.04
arch: x86_64
artifact: decoders-linux-x86_64
shell: bash
- name: Linux ARM64
os: ubuntu-22.04-arm
arch: arm64
artifact: decoders-linux-arm64
shell: bash
- name: Windows x86_64
os: windows-2022
arch: x64
artifact: decoders-windows-x86_64
shell: msys2 {0}
- name: macOS ARM64
os: macos-14
arch: arm64
artifact: decoders-macos-arm64
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
# Linux dependencies
- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y ninja-build cmake build-essential unzip curl
# macOS dependencies
- name: Install dependencies (macOS)
if: runner.os == 'macOS'
run: brew install ninja cmake meson
# Windows dependencies - use MSYS2/UCRT64
- name: Setup MSYS2 (Windows)
if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
update: true
install: >-
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-ninja
mingw-w64-ucrt-x86_64-meson
mingw-w64-ucrt-x86_64-python
mingw-w64-ucrt-x86_64-python-pip
git
unzip
curl
- name: Install Meson
if: runner.os != 'Windows'
run: pip install meson ninja
- name: Download dependencies
run: python3 build/download_deps.py
- name: Configure Meson
run: meson setup builddir
- name: Build decoders
run: meson compile -C builddir
- name: Upload decoders
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: decoders/
if-no-files-found: warn