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: 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: 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 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 # 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: 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: 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 - 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 # 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: ./sfizz/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: 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" \ -DSFIZZ_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: 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 working-directory: ${{runner.workspace}}/build run: cmake --build . --config "${Env:BUILD_TYPE}" -j 2 --target sfizz_tests - name: Test 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: # 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_WORKSPACE"/simple.cpp #include int main() { sfz::Sfizz synth; synth.loadSfzString("", ""); return 0; } EOF cat < "$GITHUB_WORKSPACE"/simple.mk all: simple include generic.mk simple.o: simple.cpp \$(CXX) \$(CXXFLAGS) \$(SFIZZ_CXX_FLAGS) -c -o \$@ \$< simple: simple.o \$(SFIZZ_TARGET) \$(CXX) -o \$@ \$^ \$(SFIZZ_LINK_FLAGS) \$(LDFLAGS) EOF make -C "$GITHUB_WORKSPACE" -f simple.mk archive_source_code: runs-on: ubuntu-20.04 if: startsWith(github.ref, 'refs/tags/') steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$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 \ python-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_windows - archive_source_code steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" # - uses: actions/download-artifact@v3 # with: # name: Linux tarball - uses: actions/download-artifact@v3 with: name: MOD devices tarball # - uses: actions/download-artifact@v3 # with: # name: Win32 MinGW tarball # - uses: actions/download-artifact@v3 # 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}}.*