This repository contains a GitHub Action specialized for building DPF-based audio plugins that use Makefile as their build system.
It supports:
- building Linux, macOS and Windows in various architectures
- perform plugin validation for all formats supported by DPF, including run-time memory checks
- upload "nightly" artifact archives for each build
- upload release archives
The latest recommended setup is:
jobs:
linux:
strategy:
matrix:
target: [linux-arm64, linux-armhf, linux-i686, linux-riscv64, linux-x86_64]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: ${{ matrix.target }}
macos:
strategy:
matrix:
target: [macos-intel, macos-universal]
runs-on: macos-11
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: ${{ matrix.target }}
windows:
strategy:
matrix:
target: [win32, win64]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: ${{ matrix.target }}
pluginval:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: pluginval
source:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: distrho/dpf-makefile-action@v1
with:
target: source
The table below contains all possible properties for use with distrho/dpf-makefile-action@v1
action.
Property | Required? | Description |
---|---|---|
target | Yes | The target platform and architecture to build for |
debug | No | Whether to build in debug mode, defaults to no |
lto | No | Whether to enable Link-Time-Optimizations, defaults to no |
dpf_path | No | Where DPF is located within your repo, defaults to "./dpf" |
extraargs | No | Extra arguments to pass into make |
faust | No | Whether to install faust |
hvcc | No | Whether to install hvcc |
pawpaw | No | Whether to use PawPaw to install and setup extra libraries, defaults to no |
release | No | Whether to automatically upload releases, defaults to yes |
suffix | No | Artifact and release filename suffix |
The table below contains all possible targets and supported runners.
Target | Aliases | Allowed runners |
---|---|---|
linux-arm64 | ubuntu-20.04,22.04,24.04 | |
linux-armhf | ubuntu-20.04,22.04,24.04 | |
linux-i686 | linux-i386 | ubuntu-20.04,22.04,24.04 |
linux-riscv64 | ubuntu-20.04,22.04,24.04 | |
linux-x86_64 | linux | ubuntu-20.04,22.04,24.04 |
macos-intel | macos-12,13,14 | |
macos-universal | macos | macos-12,13,14 |
macos-10.15 | macos-universal-10.15 | macos-12,13,14 |
win32 | ubuntu-20.04,22.04,24.04 | |
win64 | ubuntu-20.04,22.04,24.04 | |
pluginval | plugin-validation | ubuntu-20.04,22.04,24.04 |
source | ubuntu-20.04,22.04,24.04 |
Notes:
- ubuntu-24.04 runner has broken 32bit support, which breaks wine and i686 builds
- macos-intel uses 10.8 as minimum version
- macos-universal uses 10.12 as minimum version
- Windows builds use Ubuntu runners in cross-compilation instead of Windows ones
Initial release
- Set up MOD Audio builds