name: build on: push: branches: - '*' tags: - '[0-9]*' - 'v[0-9]*' pull_request: branches: - '*' env: BUILD_TYPE: Release jobs: clang_tidy: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 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-18.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@v2 with: submodules: recursive - name: Set up dependencies run: | sudo apt-get update && \ sudo apt-get install \ 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" -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ -DSFIZZ_JACK=ON \ -DSFIZZ_VST=ON \ -DSFIZZ_LV2_UI=ON \ -DSFIZZ_TESTS=ON \ -DSFIZZ_SHARED=OFF \ -DSFIZZ_STATIC_DEPENDENCIES=OFF \ -DSFIZZ_LV2=ON \ -DCMAKE_CXX_STANDARD=17 - name: Build shell: bash working-directory: ${{runner.workspace}}/build run: cmake --build . --config "$BUILD_TYPE" -j 2 - name: Test shell: bash run: ${{runner.workspace}}/build/tests/sfizz_tests - 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@v2 with: name: Linux tarball path: ${{runner.workspace}}/build/${{env.install_name}}.tar.gz build_for_mod: runs-on: ubuntu-18.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@v2 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@v2 with: name: MOD devices tarball path: ${{runner.workspace}}/build/${{env.install_name}}.tar.gz build_for_win32: runs-on: windows-2019 steps: - name: Set install name run: | echo platform=x86 >> "${Env:GITHUB_ENV}" echo release_arch=Win32 >> "${Env:GITHUB_ENV}" echo "install_ref=$(${Env:GITHUB_REF}.split('/')[-1])" >> "${Env:GITHUB_ENV}" echo "install_name=sfizz-$(${Env:GITHUB_REF}.split('/')[-1])-win32" >> "${Env:GITHUB_ENV}" - uses: actions/checkout@v2 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"${Env:release_arch}" -DCMAKE_BUILD_TYPE="${Env:BUILD_TYPE}" -DCMAKE_CXX_STANDARD=17 -DSFIZZ_TESTS=ON -DSFIZZ_VST=ON -DSFIZZ_LV2=ON - name: Build working-directory: ${{runner.workspace}}/build run: cmake --build . --config "${Env:BUILD_TYPE}" -j 2 - name: Test run: ${{runner.workspace}}/build/tests/Release/sfizz_tests - name: Create installer working-directory: ${{runner.workspace}}/build run: iscc /O"." /F"${Env:install_name}" /dARCH="${Env:platform}" innosetup.iss - uses: actions/upload-artifact@v2 with: name: Win32 installer path: ${{runner.workspace}}/build/${{env.install_name}}.exe build_for_win64: runs-on: windows-2019 steps: - name: Set install name run: | echo platform=x64 >> "${Env:GITHUB_ENV}" echo release_arch=x64 >> "${Env:GITHUB_ENV}" echo "install_ref=$(${Env:GITHUB_REF}.split('/')[-1])" >> "${Env:GITHUB_ENV}" echo "install_name=sfizz-$(${Env:GITHUB_REF}.split('/')[-1])-win64" >> "${Env:GITHUB_ENV}" - uses: actions/checkout@v2 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"${Env:release_arch}" -DCMAKE_BUILD_TYPE="${Env:BUILD_TYPE}" -DCMAKE_CXX_STANDARD=17 -DSFIZZ_TESTS=ON -DSFIZZ_VST=ON -DSFIZZ_LV2=ON - name: Build working-directory: ${{runner.workspace}}/build run: cmake --build . --config "${Env:BUILD_TYPE}" -j 2 - name: Test run: ${{runner.workspace}}/build/tests/Release/sfizz_tests - name: Create installer working-directory: ${{runner.workspace}}/build run: iscc /O"." /F"${Env:install_name}" /dARCH="${Env:platform}" innosetup.iss - uses: actions/upload-artifact@v2 with: name: Win64 installer path: ${{runner.workspace}}/build/${{env.install_name}}.exe build_for_mingw32: runs-on: ubuntu-18.04 container: image: archlinux steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}-mingw32" >> "$GITHUB_ENV" - name: Configure pacman repositories shell: bash run: | cat >>/etc/pacman.conf <//' - 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: | i686-w64-mingw32-cmake "$GITHUB_WORKSPACE" \ -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ -DENABLE_LTO=OFF \ -DSFIZZ_JACK=OFF \ -DSFIZZ_VST=ON \ -DSFIZZ_STATIC_DEPENDENCIES=ON \ -DCMAKE_CXX_STANDARD=17 - name: Build shell: bash working-directory: ${{runner.workspace}}/build run: i686-w64-mingw32-cmake --build . --config "$BUILD_TYPE" -j 2 - name: Install working-directory: ${{runner.workspace}}/build shell: bash run: | DESTDIR="$(pwd)/$install_name" i686-w64-mingw32-cmake --build . --config "$BUILD_TYPE" --target install tar czvf "$install_name".tar.gz "$install_name" - uses: actions/upload-artifact@v2 with: name: Win32 MinGW tarball path: ${{runner.workspace}}/build/${{env.install_name}}.tar.gz build_for_mingw64: runs-on: ubuntu-18.04 container: image: archlinux steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" echo "install_name=sfizz-${GITHUB_REF##*/}-mingw64" >> "$GITHUB_ENV" - name: Configure pacman repositories shell: bash run: | cat >>/etc/pacman.conf <//' - 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: | x86_64-w64-mingw32-cmake "$GITHUB_WORKSPACE" \ -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ -DENABLE_LTO=OFF \ -DSFIZZ_JACK=OFF \ -DSFIZZ_VST=ON \ -DSFIZZ_STATIC_DEPENDENCIES=ON \ -DCMAKE_CXX_STANDARD=17 - name: Build shell: bash working-directory: ${{runner.workspace}}/build run: x86_64-w64-mingw32-cmake --build . --config "$BUILD_TYPE" -j 2 - name: Install working-directory: ${{runner.workspace}}/build shell: bash run: | DESTDIR="$(pwd)/$install_name" x86_64-w64-mingw32-cmake --build . --config "$BUILD_TYPE" --target install tar czvf "$install_name".tar.gz "$install_name" - uses: actions/upload-artifact@v2 with: name: Win64 MinGW tarball path: ${{runner.workspace}}/build/${{env.install_name}}.tar.gz build_with_makefile: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 with: submodules: recursive - name: Build with GNU make shell: bash run: make -C "$GITHUB_WORKSPACE" -f generic.mk -j2 - name: Compile a simple program shell: bash run: | cat < "$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-18.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@v2 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@v2 with: name: Source code tarball path: ${{runner.workspace}}/${{env.install_name}}.tar.gz deploy: runs-on: ubuntu-18.04 if: startsWith(github.ref, 'refs/tags/') needs: - build_for_linux - build_for_mod - build_for_mingw32 - build_for_mingw64 - archive_source_code steps: - name: Set install name run: | echo "install_ref=${GITHUB_REF##*/}" >> "$GITHUB_ENV" - uses: actions/download-artifact@v2 with: name: Linux tarball - uses: actions/download-artifact@v2 with: name: MOD devices tarball - uses: actions/download-artifact@v2 with: name: Win32 MinGW tarball - uses: actions/download-artifact@v2 with: name: Win64 MinGW tarball - uses: actions/download-artifact@v2 with: name: Source code tarball - name: Display file information shell: bash run: ls -lR ## Note: not using `actions/create-release@v1` ## because it cannot update an existing release ## see https://github.com/actions/create-release/issues/29 - 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}}.*