| name: Autoconf | |||||
| on: | |||||
| workflow_dispatch: | |||||
| push: | |||||
| branches: [ master ] | |||||
| pull_request: | |||||
| branches: [ master ] | |||||
| jobs: | |||||
| build: | |||||
| runs-on: ${{ matrix.os }}-${{ matrix.osver }} | |||||
| name: "${{ matrix.os }} ${{ matrix.arch }}: ${{ matrix.compiler }}" | |||||
| strategy: | |||||
| fail-fast: false | |||||
| matrix: | |||||
| os: [ubuntu, macos] | |||||
| arch: [amd64, i386] | |||||
| compiler: [gcc, clang] | |||||
| include: | |||||
| - os: ubuntu | |||||
| osver: 22.04 | |||||
| - os: macos | |||||
| osver: 12 | |||||
| - arch: i386 | |||||
| archcflags: "-m32 -msse2 -mfpmath=sse" | |||||
| exclude: | |||||
| - os: macos | |||||
| arch: i386 | |||||
| steps: | |||||
| # Linux - dependencies | |||||
| - name: apt-build-deps | |||||
| if: matrix.os == 'ubuntu' | |||||
| run: | | |||||
| sudo dpkg --add-architecture ${{ matrix.arch }} | |||||
| sudo apt-get update | |||||
| sudo apt-get install ronn kramdown python3 | |||||
| - name: apt-arch-deps | |||||
| if: matrix.os == 'ubuntu' | |||||
| run: "sudo apt-get install libtool-bin valgrind g++-12-multilib linux-libc-dev:${{ matrix.arch }} libpcaudio-dev:${{ matrix.arch }} libsonic-dev:${{ matrix.arch }}" | |||||
| - name: apt-compile-clang | |||||
| if: matrix.os == 'ubuntu' && matrix.compiler == 'clang' | |||||
| run: sudo apt-get install clang | |||||
| # MacOS - dependencies | |||||
| - name: brew-deps | |||||
| if: matrix.os == 'macos' | |||||
| run: brew install libtool automake ronn OJFord/homebrew-formulae/kramdown | |||||
| - name: brew-compile-deps | |||||
| if: matrix.os == 'macos' && matrix.compiler == 'gcc' | |||||
| run: brew install gcc@12 | |||||
| # Checkout code | |||||
| - uses: actions/checkout@v3 | |||||
| # Configure | |||||
| - name: configure | |||||
| run: | | |||||
| ./autogen.sh | |||||
| chmod -x INSTALL m4/*.m4 | |||||
| [ 'x${{ matrix.compiler }}' = 'xgcc' ] && export CC="gcc-12" | |||||
| [ 'x${{ matrix.compiler }}' = 'xgcc' ] && export CXX="g++-12" | |||||
| [ 'x${{ matrix.compiler }}' = 'xclang' ] && export CC="clang" | |||||
| [ 'x${{ matrix.compiler }}' = 'xclang' ] && export CXX="clang++" | |||||
| export CFLAGS="-g -Og -fno-omit-frame-pointer ${{ matrix.archcflags }}" | |||||
| export CXXFLAGS="-g -Og -fno-omit-frame-pointer ${{ matrix.archcflags }}" | |||||
| ./configure | |||||
| - name: config-failed-upload | |||||
| if: ${{ failure() }} | |||||
| uses: actions/upload-artifact@v3 | |||||
| with: | |||||
| name: config-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.compiler }}.log | |||||
| path: config.log | |||||
| # Build and test | |||||
| - name: build | |||||
| run: make all-am | |||||
| - name: test | |||||
| run: make check |