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" - os: macos-latest jucer: build/_deps/juce-src/extras/Projucer/Builds/MacOSX/build/Debug/Projucer.app/Contents/MacOS/Projucer clap_gen: "Xcode" - os: windows-2019 jucer: build/_deps/juce-src/extras/Projucer/Builds/VisualStudio2019/x64/Debug/App/Projucer.exe clap_gen: "Visual Studio 16 2019" 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 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/setup-msbuild@v1.0.3 - name: Set up Xcode if: runner.os == 'MacOS' uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: latest-stable - name: Checkout code uses: actions/checkout@v2 with: submodules: recursive - name: Install JUCE shell: bash run: git clone --depth 1 --branch 6.1.5 https://github.com/juce-framework/JUCE build/_deps/juce-src - 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 cmake --build build-clap --config Debug --target GainPlugin_CLAP env: CLAP_GEN: ${{ matrix.clap_gen }} - 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