CI-Projucer #244
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: CI-Projucer | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
jobs: | |
build_and_test: | |
name: Build example plugins with Projucer on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false # show all errors for each platform (vs. cancel jobs on error) | |
matrix: | |
include: | |
- os: ubuntu-latest | |
jucer: build/_deps/juce-src/extras/Projucer/Builds/LinuxMakefile/build/Projucer | |
clap_gen: "Unix Makefiles" | |
juce_version: "7.0.6" | |
cxx_standard: 17 | |
- os: macos-latest | |
jucer: build/_deps/juce-src/extras/Projucer/Builds/MacOSX/build/Debug/Projucer.app/Contents/MacOS/Projucer | |
clap_gen: "Xcode" | |
xcode_version: latest-stable | |
juce_version: "7.0.6" | |
cxx_standard: 17 | |
- os: macos-13 | |
jucer: build/_deps/juce-src/extras/Projucer/Builds/MacOSX/build/Debug/Projucer.app/Contents/MacOS/Projucer | |
clap_gen: "Xcode" | |
xcode_version: "15.0" | |
juce_version: "7.0.6" | |
cxx_standard: 17 | |
- os: windows-2022 | |
jucer: build/_deps/juce-src/extras/Projucer/Builds/VisualStudio2019/x64/Debug/App/Projucer.exe | |
clap_gen: "Visual Studio 17 2022" | |
juce_version: "7.0.6" | |
cxx_standard: 17 | |
steps: | |
- name: Install Linux Deps | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt install libasound2-dev libcurl4-openssl-dev libx11-dev libxinerama-dev libxext-dev libfreetype6-dev libwebkit2gtk-4.0-dev libglu1-mesa-dev libjack-jackd2-dev libxml2-utils | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 | |
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9 | |
- name: Add msbuild to PATH | |
if: runner.os == 'Windows' | |
uses: microsoft/[email protected] | |
- name: Set up Xcode | |
if: runner.os == 'MacOS' | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ matrix.xcode_version }} | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install JUCE | |
shell: bash | |
run: git clone --depth 1 --branch $JUCE_VERSION https://github.com/juce-framework/JUCE build/_deps/juce-src | |
env: | |
JUCE_VERSION: ${{ matrix.juce_version }} | |
- name: Build Projucer (MacOS) | |
if: runner.os == 'MacOS' | |
shell: bash | |
run: xcodebuild -project Projucer.xcodeproj -jobs 4 | xcpretty | |
working-directory: build/_deps/juce-src/extras/Projucer/Builds/MacOSX | |
- name: Build Projucer (Windows) | |
if: runner.os == 'Windows' | |
shell: bash | |
run: msbuild.exe -v:normal -m:4 Projucer.sln | |
working-directory: build/_deps/juce-src/extras/Projucer/Builds/VisualStudio2019 | |
- name: Build Projucer (Linux) | |
if: runner.os == 'Linux' | |
shell: bash | |
run: make -j4 | |
working-directory: build/_deps/juce-src/extras/Projucer/Builds/LinuxMakefile | |
- name: Resave jucer | |
shell: bash | |
run: $PROJUCER --resave examples/GainPlugin/GainPlugin.jucer | |
env: | |
PROJUCER: ${{ matrix.jucer }} | |
- name: Build Plugin (MacOS) | |
if: runner.os == 'MacOS' | |
shell: bash | |
run: xcodebuild -project GainPlugin.xcodeproj -jobs 4 | xcpretty | |
working-directory: examples/GainPlugin/Builds/MacOSX | |
- name: Build Plugin (Windows) | |
if: runner.os == 'Windows' | |
shell: bash | |
run: msbuild.exe -v:normal -m:4 GainPlugin.sln | |
working-directory: examples/GainPlugin/Builds/VisualStudio2019 | |
- name: Build Plugin (Linux) | |
if: runner.os == 'Linux' | |
shell: bash | |
run: make -j4 | |
working-directory: examples/GainPlugin/Builds/LinuxMakefile | |
- name: Get latest CMake | |
uses: lukka/get-cmake@latest | |
- name: Build CLAP | |
shell: bash | |
run: | | |
cmake -Bbuild-clap -G"$CLAP_GEN" -DCMAKE_BUILD_TYPE=Debug -DCLAP_WRAP_PROJUCER_PLUGIN=ON -DCLAP_JUCE_VERSION=$JUCE_VERSION -DCMAKE_CXX_STANDARD=$CXX_STANDARD | |
cmake --build build-clap --config Debug --target GainPlugin_CLAP | |
env: | |
CLAP_GEN: ${{ matrix.clap_gen }} | |
JUCE_VERSION: ${{ matrix.juce_version }} | |
CXX_STANDARD: ${{ matrix.cxx_standard }} | |
- name: Set up clap-info | |
shell: bash | |
run: | | |
git clone --recurse-submodules https://github.com/surge-synthesizer/clap-info | |
cd clap-info | |
cmake -Bbuild -DCMAKE_BUILD_TYPE=Release | |
cmake --build build --config Release --parallel 4 | |
- name: Run clap-info (Max/Linux) | |
if: runner.os == 'MacOS' || runner.os == 'Linux' | |
shell: bash | |
run: | | |
clap-info/build/clap-info --version | |
clap-info/build/clap-info build-clap/examples/GainPlugin/GainPlugin_artefacts/Debug/MyGreatGainPlugin.clap | |
- name: Run clap-info (Windows) | |
if: runner.os == 'Windows' | |
shell: bash | |
run: | | |
clap-info/build/Release/clap-info --version | |
clap-info/build/Release/clap-info build-clap/examples/GainPlugin/GainPlugin_artefacts/Debug/MyGreatGainPlugin.clap |