plugin: delay window construction until needed #520
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" |