diff --git a/.github/workflows/autoconf.yml b/.github/workflows/autoconf.yml new file mode 100644 index 00000000..d1d00bca --- /dev/null +++ b/.github/workflows/autoconf.yml @@ -0,0 +1,86 @@ +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