name: build on: push: branches: - 'develop' - 'master' tags: - '[0-9]*' - 'v[0-9]*' pull_request: branches: - '*' workflow_dispatch: env: BUILD_TYPE: Release jobs: clang_tidy: # if: ${{ false }} runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Set up dependencies run: | sudo apt-get update && \ sudo apt-get install \ clang-tidy \ libsndfile1-dev - name: Clang Tidy working-directory: ${{runner.workspace}} run: cd "$GITHUB_WORKSPACE" && scripts/run_clang_tidy.sh build_for_linux: # if: ${{ false }} runs-on: ubuntu-20.04 steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}-linux" >> "$GITHUB_ENV" - uses: actions/checkout@v3 with: submodules: recursive - name: Set up dependencies run: | sudo apt-get update && \ sudo apt-get install \ ninja-build \ libjack-jackd2-dev \ libsndfile1-dev \ libcairo2-dev \ libpango1.0-dev \ libfontconfig1-dev \ libx11-xcb-dev \ libxcb-util-dev \ libxcb-cursor-dev \ libxcb-xkb-dev \ libxkbcommon-dev \ libxkbcommon-x11-dev \ libxcb-keysyms1-dev - name: Create Build Environment shell: bash working-directory: ${{runner.workspace}} run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: ${{runner.workspace}}/build run: | cmake "$GITHUB_WORKSPACE" -G Ninja \ -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ -DSFIZZ_JACK=ON \ -DSFIZZ_VST=ON \ -DSFIZZ_LV2_UI=ON \ -DSFIZZ_PUREDATA=ON \ -DSFIZZ_TESTS=ON \ -DSFIZZ_SHARED=OFF \ -DSFIZZ_STATIC_DEPENDENCIES=OFF \ -DSFIZZ_LV2=ON \ -DCMAKE_CXX_STANDARD=17 - name: Build tests if: ${{ false }} # DISABLED: Do this in library repo shell: bash working-directory: ${{runner.workspace}}/build run: cmake --build . --config "$BUILD_TYPE" -j 2 --target sfizz_tests - name: Run tests if: ${{ false }} # DISABLED: Do this in library repo shell: bash run: ${{runner.workspace}}/build/tests/sfizz_tests # Reenable with newer cmakes # working-directory: ${{runner.workspace}}/build # run: ctest -j 2 -C "$BUILD_TYPE" --output-on-failure - name: Build all shell: bash working-directory: ${{runner.workspace}}/build run: cmake --build . --config "$BUILD_TYPE" -j 2 - name: Install working-directory: ${{runner.workspace}}/build shell: bash run: | DESTDIR="$(pwd)/$install_name" cmake --build . --config "$BUILD_TYPE" --target install tar czvf "$install_name".tar.gz "$install_name" - uses: actions/upload-artifact@v3 with: name: Linux tarball path: ${{runner.workspace}}/build/${{env.install_name}}.tar.gz build_with_libsndfile: if: ${{ false }} # DISABLED: Do this in library repo runs-on: ubuntu-20.04 steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}-linux" >> "$GITHUB_ENV" - uses: actions/checkout@v3 with: submodules: recursive - name: Set up dependencies run: | sudo apt-get update && \ sudo apt-get install \ ninja-build \ libsndfile1-dev - name: Create Build Environment shell: bash working-directory: ${{runner.workspace}} run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: ${{runner.workspace}}/build run: | cmake "$GITHUB_WORKSPACE" -G Ninja \ -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ -DSFIZZ_JACK=OFF \ -DSFIZZ_VST=OFF \ -DSFIZZ_LV2_UI=OFF \ -DSFIZZ_PUREDATA=OFF \ -DSFIZZ_USE_SNDFILE=ON \ -DSFIZZ_TESTS=ON \ -DSFIZZ_SHARED=OFF \ -DSFIZZ_STATIC_DEPENDENCIES=OFF \ -DSFIZZ_LV2=OFF - name: Build tests shell: bash working-directory: ${{runner.workspace}}/build run: cmake --build . --config "$BUILD_TYPE" -j 2 --target sfizz_tests - name: Run tests shell: bash run: ${{runner.workspace}}/build/tests/sfizz_tests build_for_macos: # if: ${{ false }} runs-on: macos-11 steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}-macos" >> "$GITHUB_ENV" - uses: actions/checkout@v3 with: submodules: recursive - name: Create Build Environment shell: bash working-directory: ${{runner.workspace}} run: cmake -E make_directory build - name: Configure CMake shell: bash working-directory: ${{runner.workspace}}/build run: | cmake "$GITHUB_WORKSPACE" \ -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ -DSFIZZ_AU=ON \ -DSFIZZ_LV2=ON \ -DSFIZZ_LV2_UI=ON \ -DSFIZZ_VST=ON \ -DSFIZZ_JACK=OFF \ -DSFIZZ_TESTS=ON \ -DSFIZZ_SHARED=OFF \ -DSFIZZ_STATIC_DEPENDENCIES=OFF \ -DCMAKE_CXX_STANDARD=17 - name: Build tests if: ${{ false }} # DISABLED: Do this in library repo shell: bash working-directory: ${{runner.workspace}}/build run: | cmake --build . --config "$BUILD_TYPE" -j 2 --target sfizz_tests - name: Run tests if: ${{ false }} # DISABLED: Do this in library repo shell: bash run: ${{runner.workspace}}/build/tests/sfizz_tests # Reenable with newer cmakes # working-directory: ${{runner.workspace}}/build # run: ctest -j 2 -C "$BUILD_TYPE" --output-on-failure - name: Build plugins shell: bash working-directory: ${{runner.workspace}}/build run: cmake --build . --config "$BUILD_TYPE" -j 2 - name: Package OSX bundles shell: bash working-directory: ${{runner.workspace}} run: $GITHUB_WORKSPACE/scripts/package-osx-bundles.sh - name: Create OSX installer shell: bash working-directory: ${{runner.workspace}}/build run: | productbuild \ --distribution $GITHUB_WORKSPACE/scripts/plugin.pkg/package.xml \ --identifier "sfz.tools.sfizz" \ --package-path "${{runner.workspace}}/build" \ --version 0 \ ${{env.install_name}}.pkg - uses: actions/upload-artifact@v3 with: name: macOS installer path: | ${{runner.workspace}}/build/${{env.install_name}}.pkg build_for_mod: if: ${{ false }} # DISABLED: Old image which doesn't work with CMake > 3.5 runs-on: ubuntu-20.04 container: image: jpcima/mod-plugin-builder options: --user 0 steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}-moddevices" >> "$GITHUB_ENV" - uses: actions/checkout@v3 with: submodules: recursive - name: Fix up MOD environment shell: bash run: ln -sf /home/builder/mod-workdir ~/mod-workdir - name: Create Build Environment shell: bash working-directory: ${{runner.workspace}} run: mod-plugin-builder /usr/local/bin/cmake -E make_directory build - name: Configure CMake shell: bash working-directory: ${{runner.workspace}}/build run: | mod-plugin-builder /usr/local/bin/cmake "$GITHUB_WORKSPACE" \ -DPROJECT_SYSTEM_PROCESSOR=armv7-a \ -DCMAKE_BUILD_TYPE=Release \ -DSFIZZ_JACK=OFF \ -DSFIZZ_VST=OFF \ -DSFIZZ_LV2_UI=OFF - name: Build shell: bash working-directory: ${{runner.workspace}}/build run: mod-plugin-builder /usr/local/bin/cmake --build . --config "$BUILD_TYPE" -- -j 2 - name: Install working-directory: ${{runner.workspace}}/build shell: bash run: | DESTDIR="$(pwd)/$install_name" mod-plugin-builder /usr/local/bin/cmake --build . --config "$BUILD_TYPE" --target install tar czvf "$install_name".tar.gz "$install_name" - uses: actions/upload-artifact@v3 with: name: MOD devices tarball path: ${{runner.workspace}}/build/${{env.install_name}}.tar.gz build_for_windows: # if: ${{ false }} runs-on: windows-2019 strategy: matrix: include: - platform: x86 pkg_platform: Win32 release_arch: Win32 bits: 32 - platform: x64 pkg_platform: Win64 release_arch: x64 bits: 64 steps: - name: Set install name run: | echo "install_ref=$(${Env:GITHUB_REF}.split('/')[-1])" >> "${Env:GITHUB_ENV}" echo "install_name=sfizz-$(${Env:GITHUB_REF}.split('/')[-1])-win${{matrix.bits}}" >> "${Env:GITHUB_ENV}" - uses: actions/checkout@v3 with: submodules: recursive - name: Create Build Environment working-directory: ${{runner.workspace}} run: cmake -E make_directory build - name: Configure CMake working-directory: ${{runner.workspace}}/build run: | cmake "${Env:GITHUB_WORKSPACE}" -G"Visual Studio 16 2019" -A"${{matrix.release_arch}}" -DCMAKE_BUILD_TYPE="${Env:BUILD_TYPE}" -DCMAKE_CXX_STANDARD=17 -DSFIZZ_TESTS=ON -DSFIZZ_VST=ON -DSFIZZ_LV2=ON -DSFIZZ_PUREDATA=ON - name: Build tests if: ${{ false }} # DISABLED: Do this in library repo working-directory: ${{runner.workspace}}/build run: cmake --build . --config "${Env:BUILD_TYPE}" -j 2 --target sfizz_tests - name: Test if: ${{ false }} # DISABLED: Do this in library repo run: ${{runner.workspace}}/build/tests/Release/sfizz_tests - name: Build all working-directory: ${{runner.workspace}}/build run: cmake --build . --config "${Env:BUILD_TYPE}" -j 2 - name: Install pluginval if: ${{ matrix.platform == 'x64' }} run: | Invoke-WebRequest https://github.com/Tracktion/pluginval/releases/download/latest_release/pluginval_Windows.zip -OutFile pluginval.zip Expand-Archive pluginval.zip -DestinationPath pluginval echo "$(Get-Location)\pluginval" | Out-File -FilePath ${Env:GITHUB_PATH} -Encoding utf8 -Append pluginval\pluginval --version - name: Validate VST3 if: ${{ matrix.platform == 'x64' }} working-directory: ${{runner.workspace}}/build run: pluginval --validate-in-process --validate sfizz.vst3 - name: Create installer working-directory: ${{runner.workspace}}/build run: iscc /O"." /F"${Env:install_name}" /dARCH="${{matrix.platform}}" innosetup.iss - uses: actions/upload-artifact@v3 with: name: ${{matrix.pkg_platform}} installer path: ${{runner.workspace}}/build/${{env.install_name}}.exe build_for_mingw: if: ${{ false }} # DISABLED TEMPORARILY runs-on: ubuntu-20.04 strategy: matrix: include: - platform: i686 pkg_platform: Win32 bits: 32 - platform: x86_64 pkg_platform: Win64 bits: 64 container: image: archlinux steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}-mingw${{matrix.bits}}" >> "$GITHUB_ENV" - name: Configure pacman repositories shell: bash run: | cat >>/etc/pacman.conf <> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}" >> "$GITHUB_ENV" - uses: actions/checkout@v3 with: submodules: recursive - name: Set up dependencies run: | sudo apt-get update && \ sudo apt-get install \ python3-pip sudo pip install git-archive-all - name: Archive source code shell: bash run: | cd "$GITHUB_WORKSPACE" && \ git-archive-all --prefix="${install_name}/" -9 "${{runner.workspace}}/${install_name}.tar.gz" - uses: actions/upload-artifact@v3 with: name: Source code tarball path: ${{runner.workspace}}/${{env.install_name}}.tar.gz deploy: runs-on: ubuntu-20.04 if: startsWith(github.ref, 'refs/tags/') needs: # - build_for_linux # - build_for_mod # - build_for_mingw - build_for_macos - build_for_windows - archive_source_code steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" - uses: actions/download-artifact@v3 if: ${{ false }} # DISABLED: Use distro packages with: name: Linux tarball - uses: actions/download-artifact@v3 with: name: macOS installer - uses: actions/download-artifact@v3 if: ${{ false }} # DISABLED: See comment above with: name: MOD devices tarball - uses: actions/download-artifact@v3 if: ${{ false }} # DISABLED: MinGW 32 build temporarily disabled with: name: Win32 MinGW tarball - uses: actions/download-artifact@v3 if: ${{ false }} # DISABLED: MinGW 64 build temporarily disabled with: name: Win64 MinGW tarball - uses: actions/download-artifact@v3 with: name: Win32 installer - uses: actions/download-artifact@v3 with: name: Win64 installer - uses: actions/download-artifact@v3 with: name: Source code tarball - name: Display file information shell: bash run: ls -lR - uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} with: tag_name: ${{env.install_ref}} name: Release ${{env.install_ref}} draft: false prerelease: false files: | sfizz-${{env.install_ref}}-* sfizz-${{env.install_ref}}.*