fix #412
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: build-and-test | |
| 'on': | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: DoozyX/clang-format-lint-action@v0.5 | |
| with: | |
| source: . | |
| exclude: ./third_party | |
| extensions: h,c | |
| build-linux: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libfftw3-dev \ | |
| libasound2-dev \ | |
| libncursesw5-dev \ | |
| libpulse-dev \ | |
| libtool \ | |
| automake \ | |
| autoconf-archive \ | |
| libiniparser-dev \ | |
| portaudio19-dev \ | |
| libsndio-dev \ | |
| libsdl2-2.0-0 \ | |
| libsdl2-dev \ | |
| squeezelite \ | |
| pulseaudio \ | |
| libpipewire-0.3-dev | |
| - name: Generate configure | |
| run: ./autogen.sh | |
| - name: Run ./configure | |
| run: ./configure | |
| - name: Run make | |
| run: make CFLAGS='-Werror' | |
| # - name: Run make distcheck | |
| # run: make distcheck | |
| - name: Prepare tests | |
| run: | | |
| pulseaudio -D | |
| squeezelite -o pulse -v -m 51:fb:32:f8:e6:9f -z | |
| - name: run non zero test | |
| run: ./cava -p example_files/test_configs/non_zero_test > /dev/null | |
| - name: run pulseaudio test | |
| run: ./cava -p example_files/test_configs/pulse_zero_test > /dev/null | |
| - name: run fifo test | |
| run: ./cava -p example_files/test_configs/fifo_zero_test > /dev/null | |
| - name: run shmem test | |
| run: ./cava -p example_files/test_configs/shmem_zero_test > /dev/null | |
| - name: build cavacore test application | |
| run: gcc -I include -c -g cavacore_test.c | |
| - name: link cavacore test application | |
| run: gcc -o cavacore_test cavacore_test.o cava-cavacore.o -lm -lfftw3 | |
| - name: run cavacore test application | |
| run: ./cavacore_test | |
| build-linux-meson: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libfftw3-dev \ | |
| libasound2-dev \ | |
| libncursesw5-dev \ | |
| libpulse-dev \ | |
| libtool \ | |
| automake \ | |
| autoconf-archive \ | |
| libiniparser-dev \ | |
| portaudio19-dev \ | |
| libsndio-dev \ | |
| libsdl2-2.0-0 \ | |
| libsdl2-dev \ | |
| squeezelite \ | |
| pulseaudio \ | |
| libpipewire-0.3-dev \ | |
| meson | |
| - name: Generate configure | |
| run: meson setup -Dcpp_std=c++20 -Dbuild_target=all build | |
| - name: Run make | |
| run: ninja -C build | |
| - name: Prepare tests | |
| run: | | |
| pulseaudio -D | |
| squeezelite -o pulse -v -m 51:fb:32:f8:e6:9f -z | |
| - name: run non zero test | |
| run: ./build/cava -p example_files/test_configs/non_zero_test > /dev/null | |
| - name: run pulseaudio test | |
| run: ./build/cava -p example_files/test_configs/pulse_zero_test > /dev/null | |
| - name: run fifo test | |
| run: ./build/cava -p example_files/test_configs/fifo_zero_test > /dev/null | |
| - name: run shmem test | |
| run: ./build/cava -p example_files/test_configs/shmem_zero_test > /dev/null | |
| - name: build cavacore test application | |
| run: gcc -I include -c -g cavacore_test.c | |
| - name: link cavacore test application | |
| run: gcc -o cavacore_test cavacore_test.o cava-cavacore.o -lm -lfftw3 | |
| - name: run cavacore test application | |
| run: ./cavacore_test | |
| build-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| brew install fftw libtool automake portaudio iniparser sdl2 | |
| ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize | |
| - name: Generate configuresdl2 | |
| run: | | |
| PATH="/opt/homebrew/opt/libtool/libexec/gnubin:$PATH" ./autogen.sh | |
| - name: Run ./configure | |
| run: | | |
| LDFLAGS="-L/opt/homebrew/lib" \ | |
| CPPFLAGS="-I/opt/homebrew/include" \ | |
| ./configure | |
| - name: Run make | |
| run: make CFLAGS='-Werror' | |
| - name: run non zero test | |
| run: ./cava -p example_files/test_configs/non_zero_test > /dev/null | |
| build-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v2 | |
| - name: Install vcpkg | |
| run: | | |
| git clone https://github.com/microsoft/vcpkg.git | |
| .\vcpkg\bootstrap-vcpkg.bat | |
| - name: Set VCPKG_ROOT | |
| run: | | |
| echo "VCPKG_ROOT=$(pwd)\vcpkg" >> $env:GITHUB_ENV | |
| - name: Install vcpkg dependencies | |
| run: | | |
| cd cava_win | |
| & $env:VCPKG_ROOT\\vcpkg install | |
| cd .. | |
| - name: Run msbuild with vcpkg | |
| run: | | |
| msbuild /p:Configuration=Release /p:VcpkgEnabled=true /p:VcpkgRoot=$env:VCPKG_ROOT /p:VcpkgTriplet=x64-windows cava_win\cava_win.sln | |
| - name: Install WiX Toolset | |
| run: dotnet tool install --global wix --version 6.0.2 | |
| - name: Install WiX extensions | |
| run: | | |
| wix extension add WixToolset.UI.wixext/6.0.2 | |
| wix extension add WixToolset.Util.wixext/6.0.2 | |
| - name: Build MSI installer | |
| run: | | |
| $versionLine = Select-String -Path cava_win\setup.iss -Pattern '^AppVersion=' | Select-Object -First 1 | |
| $cavaVersion = $versionLine.Line.Split('=')[1].Trim() | |
| wix build -arch x64 cava_win\cava.wxs -d CavaVersion=$cavaVersion -ext WixToolset.UI.wixext -ext WixToolset.Util.wixext -o cava_win\cava_win_x64_install.msi | |
| - name: Upload MSI artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cava-msi | |
| path: cava_win\cava_win_x64_install.msi | |
| build-mingw: | |
| runs-on: windows-latest | |
| strategy: | |
| matrix: | |
| msystem: [ucrt64, clang64] | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: ${{ matrix.msystem }} | |
| pacboy: cc cmake fftw glew ninja SDL2 | |
| - name: Run cmake build | |
| run: | | |
| cmake -B bin | |
| cmake --build bin |