name: Build Audio Library (Windows) on: push: branches: [main, develop] pull_request: branches: [main, develop] workflow_dispatch: # Allow manual triggering jobs: build-windows: runs-on: windows-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup vcpkg uses: microsoft/setup-msbuild@v2 - name: Cache vcpkg packages uses: actions/cache@v4 with: path: | ${{ env.VCPKG_INSTALLATION_ROOT }}\installed ${{ env.VCPKG_INSTALLATION_ROOT }}\packages key: vcpkg-${{ runner.os }}-${{ hashFiles('**/vcpkg.json') }} restore-keys: | vcpkg-${{ runner.os }}- - name: Install vcpkg dependencies run: | vcpkg install portaudio:x64-windows vcpkg install libsndfile:x64-windows vcpkg install libsamplerate:x64-windows vcpkg integrate install - name: Setup MSVC environment uses: microsoft/setup-msbuild@v2 - name: Check dependencies run: make check-deps shell: cmd working-directory: libs/audio env: VCPKG_INSTALLATION_ROOT: ${{ env.VCPKG_ROOT }} - name: Build audio library run: make all shell: cmd working-directory: libs/audio env: VCPKG_INSTALLATION_ROOT: ${{ env.VCPKG_ROOT }} - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: libaudio-windows-x64 path: | libs/audio/libaudio.dll libs/audio/*.lib retention-days: 30 - name: Run tests (if available) run: | if exist tests.exe ( echo Running tests... tests.exe ) else ( echo No tests found, skipping... ) shell: cmd working-directory: libs/audio continue-on-error: true build-matrix: runs-on: windows-latest strategy: matrix: architecture: [x64, x86] configuration: [Release, Debug] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup vcpkg uses: microsoft/setup-msbuild@v2 - name: Cache vcpkg packages uses: actions/cache@v4 with: path: | ${{ env.VCPKG_INSTALLATION_ROOT }}\installed ${{ env.VCPKG_INSTALLATION_ROOT }}\packages key: vcpkg-${{ matrix.architecture }}-${{ matrix.configuration }}-${{ hashFiles('**/vcpkg.json') }} restore-keys: | vcpkg-${{ matrix.architecture }}-${{ matrix.configuration }}- - name: Install vcpkg dependencies run: | vcpkg install portaudio:${{ matrix.architecture }}-windows vcpkg install libsndfile:${{ matrix.architecture }}-windows vcpkg install libsamplerate:${{ matrix.architecture }}-windows vcpkg integrate install - name: Build library (${{ matrix.architecture }}, ${{ matrix.configuration }}) run: | if ("${{ matrix.configuration }}" -eq "Debug") { make debug } else { make all } shell: powershell working-directory: libs/audio env: VCPKG_INSTALLATION_ROOT: ${{ env.VCPKG_ROOT }} - name: Upload artifacts (${{ matrix.architecture }}, ${{ matrix.configuration }}) uses: actions/upload-artifact@v4 with: name: libaudio-windows-${{ matrix.architecture }}-${{ matrix.configuration }} path: | libs/audio/libaudio.dll libs/audio/*.lib libs/audio/*.pdb retention-days: 30