name: build on: [push, pull_request] env: CACHE_VERSION: 2 DEBIAN_FRONTEND: noninteractive PAWPAW_CI: 1 PAWPAW_SKIP_LTO: 1 PAWPAW_SKIP_FFTW: 1 PAWPAW_SKIP_GLIB: 1 PAWPAW_SKIP_LV2: 1 PAWPAW_SKIP_SAMPLERATE: 1 PAWPAW_SKIP_TESTS: 1 WITH_LTO: false jobs: linux: strategy: matrix: target: [aarch64, armhf, i686, riscv64, x86_64] runs-on: ubuntu-latest container: image: ubuntu:20.04 steps: - name: Install git run: | apt-get update -qq && apt-get install -yqq --no-install-recommends ca-certificates curl git openssl curl -sLO https://launchpad.net/~kxstudio-debian/+archive/ubuntu/toolchain/+files/git_2.34.1-1ubuntu1~bpo20.04.1~ppa1_amd64.deb curl -sLO https://launchpad.net/~kxstudio-debian/+archive/ubuntu/toolchain/+files/git-man_2.34.1-1ubuntu1~bpo20.04.1~ppa1_all.deb dpkg -i *.deb rm *.deb - uses: actions/checkout@v4 with: submodules: recursive - name: Set up cache uses: actions/cache@v4 with: path: | ~/PawPawBuilds key: linux-${{ matrix.target }}-v${{ env.CACHE_VERSION }} - name: Set up dependencies run: | git clone --depth=1 https://github.com/DISTRHO/PawPaw.git ./PawPaw/.github/workflows/bootstrap-deps.sh linux-${{ matrix.target }} - name: Set up dependencies x86_64 extra if: ${{ matrix.target == 'x86_64' }} run: | dpkg --add-architecture i386 apt-get update -qq apt-get install -yqq g++-multilib libx11-dev:i386 apt-get install -yqq binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 mingw-w64 wine-stable wine64-tools - name: Build extra dependencies run: | ./PawPaw/bootstrap-cardinal.sh linux-${{ matrix.target }} && ./PawPaw/.cleanup.sh linux-${{ matrix.target }} - name: Build linux shell: bash run: | source PawPaw/local.env linux-${{ matrix.target }} make features make NOOPT=true -j $(nproc) - name: Build linux x86_64 extra (part1) if: ${{ matrix.target == 'x86_64' }} shell: bash run: | source PawPaw/local.env linux-${{ matrix.target }} make NOOPT=true all extra-posix32 extra-win32 extra-win64 extra-wine64 -j $(nproc) - name: Build linux x86_64 extra (part2) if: ${{ matrix.target == 'x86_64' }} shell: bash run: | apt-get install -yqq libwine-dev:i386 source PawPaw/local.env linux make NOOPT=true extra-wine32 -j $(nproc) make CARLA_EXTRA_TARGETS=true NOOPT=true -j $(nproc) - name: Set sha8 run: | echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV - uses: actions/upload-artifact@v4 with: name: ${{ github.event.repository.name }}-linux-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }} path: | bin/* !bin/Ildaeil macos: strategy: matrix: target: [intel, universal] runs-on: macos-14 steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Set up cache uses: actions/cache@v4 with: path: | ~/PawPawBuilds key: macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }} - name: Set up dependencies run: | brew uninstall --ignore-dependencies -f cmake git clone --depth=1 https://github.com/DISTRHO/PawPaw.git ./PawPaw/.github/workflows/bootstrap-deps.sh macos-${{ matrix.target }} - name: Build extra dependencies run: | ./PawPaw/bootstrap-cardinal.sh macos-${{ matrix.target }} && ./PawPaw/.cleanup.sh macos-${{ matrix.target }} - name: Build macOS run: | source PawPaw/local.env macos-${{ matrix.target }} make features make NOOPT=true -j $(sysctl -n hw.logicalcpu) - name: Pack macOS run: | source PawPaw/local.env macos-${{ matrix.target }} ./dpf/utils/package-osx-bundles.sh - name: Set sha8 run: | echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV - uses: actions/upload-artifact@v4 with: name: ${{ github.event.repository.name }}-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }} path: | *-macOS.pkg bin/* !bin/pkg !bin/*.clap !bin/*.component !bin/*.lv2 !bin/*.vst !bin/*.vst3 windows: strategy: matrix: target: [win32, win64] runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Set up cache uses: actions/cache@v4 with: path: | ~/PawPawBuilds key: ${{ matrix.target }}-v${{ env.CACHE_VERSION }} - name: Fix GitHub's mess run: | sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list sudo dpkg --add-architecture i386 sudo apt-get update -qq - name: Set up dependencies run: | git clone --depth=1 https://github.com/DISTRHO/PawPaw.git ./PawPaw/.github/workflows/bootstrap-deps.sh ${{ matrix.target }} - name: Build extra dependencies run: | ./PawPaw/bootstrap-cardinal.sh ${{ matrix.target }} && ./PawPaw/.cleanup.sh ${{ matrix.target }} - name: Build cross-compiled run: | source PawPaw/local.env ${{ matrix.target }} make features make CARLA_EXTRA_TARGETS=true NOOPT=true -j $(nproc) - name: Set sha8 run: | echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV - uses: actions/upload-artifact@v4 with: name: ${{ github.event.repository.name }}-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }} path: | bin/* !bin/*.exe pluginval: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: distrho/dpf-makefile-action@v1 with: target: pluginval source: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: distrho/dpf-makefile-action@v1 with: target: source