diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000000000000000000000000000000000..49de58dd297eb3be1904caf59871237f45f881e2 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,77 @@ +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@v1 + - name: Linux setup + if: runner.os == 'Linux' + run: | + sudo apt install \ + g++-8 \ + autoconf \ + automake \ + autotools-dev \ + libtool \ + pkg-config \ + libcunit1-dev \ + libssl-dev \ + libev-dev \ + cmake \ + cmake-data + - name: MacOS setup + if: runner.os == 'macOS' + run: | + brew install libev cunit autoconf automake pkg-config libtool + - name: Setup clang + if: matrix.compiler == 'clang' + run: | + echo '::set-env name=CC::clang' + echo '::set-env name=CXX::clang++' + - name: Setup gcc + if: runner.os == 'Linux' && matrix.compiler == 'gcc' + run: | + echo '::set-env name=CC::gcc-8' + echo '::set-env name=CXX::g++-8' + - name: Build OpenSSL + run: | + ./ci/build_openssl.sh + - name: Build nghttp3 + run: | + ./ci/build_nghttp3.sh + - name: Setup environment variables + run: | + PKG_CONFIG_PATH="$PWD/../openssl/build/lib/pkgconfig:$PWD/../nghttp3/build/lib/pkgconfig" + LDFLAGS="$EXTRA_LDFLAGS -Wl,-rpath,$PWD/../openssl/build/lib" + + echo '::set-env name=PKG_CONFIG_PATH::'"$PKG_CONFIG_PATH" + echo '::set-env name=LDFLAGS::'"$LDFLAGS" + - name: Configure autotools + if: matrix.buildtool == 'autotools' + run: | + autoreconf -i && ./configure --enable-werror $AUTOTOOLS_OPTS + - name: Configure cmake + if: matrix.buildtool == 'cmake' + # Set CMAKE_LIBRARY_ARCHITECTURE to workaround failure to parse + # implicit link information from GCC 5 + run: | + cmake $CMAKE_OPTS -DCMAKE_LIBRARY_ARCHITECTURE=x86_64-linux-gnu + - name: Build ngtcp2 + run: | + make + make check + - name: Integration test + run: | + ./ci/gen-certificate.sh + ./examples/server localhost 4433 cert/server.key cert/server.crt & + ./examples/client localhost 4433 https://localhost/