diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..309dcb75 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,105 @@ +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\" PKG_CONFIG_PATH=$PKG_CONFIG_PATH" + - 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 diff --git a/integration-tests/setenv.in b/integration-tests/setenv.in index c0f6b481..7177200e 100644 --- a/integration-tests/setenv.in +++ b/integration-tests/setenv.in @@ -5,8 +5,9 @@ if [ -d "$libdir/.libs" ]; then libdir="$libdir/.libs" fi -export CGO_CFLAGS="-I@abs_top_srcdir@/lib/includes -I@abs_top_builddir@/lib/includes" -export CGO_LDFLAGS="-L$libdir" +export CGO_CFLAGS="-I@abs_top_srcdir@/lib/includes -I@abs_top_builddir@/lib/includes @CFLAGS@" +export CGO_CPPFLAGS="@CPPFLAGS@" +export CGO_LDFLAGS="-L$libdir @LDFLAGS@" export LD_LIBRARY_PATH="$libdir" export GODEBUG=cgocheck=0 "$@"