| name: GitHub Actions |
| |
| on: |
| push: |
| pull_request: |
| |
| jobs: |
| build: |
| strategy: |
| matrix: |
| include: |
| - name: ubuntu-latest-clang-autotools |
| os: ubuntu-latest |
| cc: clang |
| cxx: clang++ |
| build-system: autotools |
| configure-opts: '' |
| |
| - name: ubuntu-latest-gcc-cmake |
| os: ubuntu-latest |
| cc: gcc |
| cxx: g++ |
| build-system: cmake |
| configure-opts: '' |
| |
| - name: ubuntu-latest-clang-cmake |
| os: ubuntu-latest |
| cc: clang |
| cxx: clang++ |
| build-system: cmake |
| configure-opts: '' |
| |
| - name: macos-latest-clang-autotools |
| os: macos-latest |
| cc: clang |
| cxx: clang++ |
| build-system: autotools |
| configure-opts: '' |
| |
| - name: macos-latest-clang-cmake |
| os: macos-latest |
| cc: clang |
| cxx: clang++ |
| build-system: cmake |
| configure-opts: '' |
| |
| - name: windows-latest-cmake |
| os: windows-latest |
| build-system: cmake |
| configure-opts: '' |
| |
| - name: windows-latest-cmake-shared |
| os: windows-latest |
| build-system: cmake |
| configure-opts: '-DBUILD_SHARED_LIBS=ON' |
| |
| runs-on: ${{ matrix.os }} |
| |
| steps: |
| - uses: actions/checkout@v4 |
| |
| - uses: actions/checkout@v4 |
| if: startsWith(matrix.build-system,'cmake') |
| with: |
| repository: xiph/ogg |
| path: ./ogg |
| |
| - name: Install MacOS dependencies |
| if: startsWith(matrix.os,'macos') && !startsWith(matrix.build-system,'cmake') |
| run: | |
| brew update |
| brew install automake pkg-config libogg libtool |
| |
| - name: Install Linux dependencies |
| if: startsWith(matrix.os,'ubuntu') |
| run: | |
| sudo apt-get update |
| sudo apt-get install -y libtool-bin libogg-dev |
| |
| - name: Install Windows dependencies |
| if: startsWith(matrix.os,'windows') |
| run: | |
| choco install busybox |
| |
| - name: Build with Autotools |
| if: startsWith(matrix.build-system,'autotools') |
| env: |
| CC: ${{ matrix.cc }} |
| CXX: ${{ matrix.cxx }} |
| run: | |
| ./autogen.sh |
| ./configure ${{ matrix.configure-opts }} |
| make |
| make check |
| |
| - name: Prepare CMake build directory |
| if: startsWith(matrix.build-system,'cmake') |
| env: |
| CC: ${{ matrix.cc }} |
| CXX: ${{ matrix.cxx }} |
| run: mkdir cmake-build |
| |
| - name: CMake generator |
| if: startsWith(matrix.build-system,'cmake') |
| env: |
| CC: ${{ matrix.cc }} |
| CXX: ${{ matrix.cxx }} |
| working-directory: cmake-build |
| run: cmake .. -DCMAKE_BUILD_TYPE=Release -DINSTALL_MANPAGES=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON ${{ matrix.configure-opts }} -DCMAKE_FIND_FRAMEWORK=NEVER |
| |
| - name: CMake build |
| if: startsWith(matrix.build-system,'cmake') |
| env: |
| CC: ${{ matrix.cc }} |
| CXX: ${{ matrix.cxx }} |
| working-directory: cmake-build |
| run: cmake --build . --config Release |
| |
| - name: CMake test |
| if: startsWith(matrix.build-system,'cmake') |
| env: |
| CC: ${{ matrix.cc }} |
| CXX: ${{ matrix.cxx }} |
| working-directory: cmake-build |
| run: ctest -V -C Release |
| |
| - name: Upload logs on failure |
| uses: actions/upload-artifact@v4 |
| if: failure() |
| with: |
| name: flac-${{ github.sha }}-${{ github.run_id }}-logs |
| path: | |
| ./**/*.log |
| ./**/out*.meta |