Skip to content

plugin: delay window construction until needed #520

plugin: delay window construction until needed

plugin: delay window construction until needed #520

Workflow file for this run

name: build
on:
push:
branches:
- '*'
tags:
- '[0-9]*'
- 'v[0-9]*'
pull_request:
branches:
- '*'
workflow_dispatch:
jobs:
build:
strategy:
matrix:
include:
- name: win32
display-name: Windows 32-bit
runs-on: windows-2019
platform: x86
release-arch: Win32
cmake-generator: Visual Studio 16 2019
os-type: Windows
shell: pwsh
artifacts: yes
- name: win64
display-name: Windows 64-bit
runs-on: windows-2019
platform: x64
release-arch: x64
cmake-generator: Visual Studio 16 2019
os-type: Windows
shell: pwsh
artifacts: yes
- name: linux64
display-name: Linux 64-bit
runs-on: ubuntu-20.04
platform: x86_64
release-arch: Linux64
os-type: Linux
shell: bash
artifacts: yes
- name: macos
display-name: macOS
runs-on: macos-12
os-type: macOS
shell: bash
artifacts: yes
- name: mingw32
display-name: MSYS MinGW 32-bit
runs-on: windows-2019
platform: i686
msystem: MINGW32
os-type: MinGW
shell: msys2 {0}
artifacts: yes
- name: mingw64
display-name: MSYS MinGW 64-bit
runs-on: windows-2019
platform: x86_64
msystem: MINGW64
os-type: MinGW
shell: msys2 {0}
artifacts: yes
fail-fast: false
name: Compile for ${{matrix.display-name}}
runs-on: ${{matrix.runs-on}}
defaults:
run:
shell: ${{matrix.shell}}
env:
name: ${{matrix.name}}
display_name: ${{matrix.display-name}}
platform: ${{matrix.platform}}
release_arch: ${{matrix.release-arch}}
cmake_generator: ${{matrix.cmake-generator}}
build_type: Release
num_jobs: 2
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies (Linux)
if: ${{matrix.os-type == 'Linux'}}
run: >-
sudo apt-get -y update && sudo apt-get -y install
libsndfile1-dev
libfreetype-dev
libfontconfig-dev
libgl-dev
libx11-dev
libxext-dev
libxrandr-dev
libxinerama-dev
libxcursor-dev
libxss-dev
g++-10
gcc-10
- uses: ilammy/setup-nasm@v1
if: ${{matrix.os-type == 'Windows'}}
- uses: msys2/setup-msys2@v2
if: ${{matrix.os-type == 'MinGW'}}
with:
msystem: ${{matrix.msystem}}
update: true
install: >-
git
mingw-w64-${{matrix.platform}}-toolchain
mingw-w64-${{matrix.platform}}-cmake
mingw-w64-${{matrix.platform}}-ninja
mingw-w64-${{matrix.platform}}-libsndfile
- name: Create Build Directory
working-directory: ${{runner.workspace}}
run: cmake -E make_directory build
- name: Configure CMake (Windows)
if: ${{matrix.os-type == 'Windows'}}
working-directory: ${{runner.workspace}}/build
run: cmake "${Env:GITHUB_WORKSPACE}" -G"${Env:cmake_generator}" -A"${Env:release_arch}" -DCMAKE_BUILD_TYPE="${Env:build_type}" -DYSFX_TESTS=ON
- name: Configure CMake (macOS)
if: ${{matrix.os-type == 'macOS'}}
working-directory: ${{runner.workspace}}/build
run: cmake "${GITHUB_WORKSPACE}" -DCMAKE_BUILD_TYPE="${build_type}" -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DYSFX_TESTS=ON
- name: Configure CMake (Linux)
if: ${{matrix.os-type == 'Linux'}}
working-directory: ${{runner.workspace}}/build
run: cmake "${GITHUB_WORKSPACE}" -DCMAKE_BUILD_TYPE="${build_type}" -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DYSFX_TESTS=ON
env:
CC: gcc-10
CXX: g++-10
- name: Configure CMake (MinGW)
if: ${{matrix.os-type == 'MinGW'}}
working-directory: ${{runner.workspace}}/build
run: cmake "${GITHUB_WORKSPACE}" -DCMAKE_BUILD_TYPE="${build_type}" -DYSFX_TESTS=ON -DYSFX_PLUGIN=OFF
- name: Build tests (Windows)
if: ${{matrix.os-type == 'Windows'}}
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config "${Env:build_type}" --target ysfx_tests -j "${Env:num_jobs}"
- name: Build tests (Linux, macOS and MinGW)
if: ${{matrix.os-type == 'Linux' || matrix.os-type == 'macOS' || matrix.os-type == 'MinGW'}}
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config "${build_type}" --target ysfx_tests -j "${num_jobs}"
- name: Test
working-directory: ${{runner.workspace}}/build
run: ctest --output-on-failure
- name: Build all (Windows)
if: ${{matrix.os-type == 'Windows'}}
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config "${Env:build_type}" -j "${Env:num_jobs}"
- name: Build all (Linux, macOS and MinGW)
if: ${{matrix.os-type == 'Linux' || matrix.os-type == 'macOS' || matrix.os-type == 'MinGW'}}
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config "${build_type}" -j "${num_jobs}"
- uses: actions/upload-artifact@v4
if: ${{matrix.artifacts == 'yes'}}
with:
name: ${{matrix.display-name}} VST3
path: "${{runner.workspace}}/build/*_artefacts/${{env.build_type}}/VST3/*.vst3"
- uses: actions/upload-artifact@v4
if: ${{matrix.artifacts == 'yes'}}
with:
name: ${{matrix.display-name}} CLAP
path: "${{runner.workspace}}/build/*_artefacts/${{env.build_type}}/CLAP/*.clap"
- uses: actions/upload-artifact@v4
if: ${{matrix.os-type == 'macOS' && matrix.artifacts == 'yes'}}
with:
name: ${{matrix.display-name}} AU
path: "${{runner.workspace}}/build/*_artefacts/${{env.build_type}}/AU/*.component"