name: build on: push jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-18.04, macos-10.15] compiler: [gcc, clang] buildtool: [autotools, cmake] steps: - uses: actions/checkout@v2 - name: Linux setup if: runner.os == 'Linux' run: | sudo apt-get install \ g++-8 \ clang-10 \ autoconf \ automake \ autotools-dev \ libtool \ pkg-config \ zlib1g-dev \ libcunit1-dev \ libssl-dev \ libxml2-dev \ libev-dev \ libevent-dev \ libjansson-dev \ libjemalloc-dev \ libc-ares-dev \ cmake \ cmake-data echo 'CPPFLAGS=-fsanitize=address' >> $GITHUB_ENV echo 'LDFLAGS=-fsanitize=address' >> $GITHUB_ENV - name: MacOS setup if: runner.os == 'macOS' run: | brew install \ libev \ libevent \ c-ares \ cunit \ libressl \ autoconf \ automake \ pkg-config \ libtool echo 'PKG_CONFIG_PATH=/usr/local/opt/libressl/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig' >> $GITHUB_ENV # This fixes infamous 'stdio.h not found' error. echo 'SDKROOT='"$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV - name: Setup clang (Linux) if: runner.os == 'Linux' && matrix.compiler == 'clang' run: | echo 'CC=clang-10' >> $GITHUB_ENV echo 'CXX=clang++-10' >> $GITHUB_ENV - name: Setup clang (MacOS) if: runner.os == 'macOS' && matrix.compiler == 'clang' run: | echo 'CC=clang' >> $GITHUB_ENV echo 'CXX=clang++' >> $GITHUB_ENV - name: Setup gcc (Linux) if: runner.os == 'Linux' && matrix.compiler == 'gcc' run: | echo 'CC=gcc-8' >> $GITHUB_ENV echo 'CXX=g++-8' >> $GITHUB_ENV - name: Setup gcc (MacOS) if: runner.os == 'macOS' && matrix.compiler == 'gcc' run: | echo 'CC=gcc' >> $GITHUB_ENV echo 'CXX=g++' >> $GITHUB_ENV - name: Setup git submodules run: | git submodule update --init - name: Configure autotools if: matrix.buildtool == 'autotools' run: | autoreconf -i ./configure --enable-werror --with-mruby - name: Configure cmake if: matrix.buildtool == 'cmake' run: | cmake -DENABLE_WERROR=1 -DWITH_MRUBY=1 -DWITH_NEVERBLEED=1 -DCPPFLAGS="$CPPFLAGS" -DLDFLAGS="$LDFLAGS" . - name: Build nghttp2 with autotools if: matrix.buildtool == 'autotools' run: | make distcheck \ DISTCHECK_CONFIGURE_FLAGS="--with-mruby --with-neverbleed --enable-werror CPPFLAGS=\"$CPPFLAGS\" LDFLAGS=\"$LDFLAGS\"" - name: Build nghttp2 with cmake if: matrix.buildtool == 'cmake' run: | make make check - name: Integration test # Integration tests for nghttpx; autotools erases build # artifacts. if: matrix.buildtool == 'cmake' run: | cd integration-tests make itprep it