Skip to content

Merge pull request #166 from ngtcp2/invoke-result #479

Merge pull request #166 from ngtcp2/invoke-result

Merge pull request #166 from ngtcp2/invoke-result #479

Workflow file for this run

name: build
on: [push, pull_request]
permissions: read-all
jobs:
build:
strategy:
matrix:
os: [ubuntu-22.04, macos-12]
compiler: [gcc, clang]
buildtool: [autotools, distcheck, cmake]
exclude:
- os: macos-12
buildtool: distcheck
- compiler: gcc
buildtool: distcheck
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Linux setup
if: runner.os == 'Linux'
run: |
sudo apt-get install \
g++-12 \
clang-14 \
autoconf \
automake \
autotools-dev \
libtool \
pkg-config \
libcunit1-dev \
cmake \
cmake-data
- name: MacOS setup
if: runner.os == 'macOS'
run: |
brew install cunit autoconf automake pkg-config libtool
- name: Setup clang (Linux)
if: runner.os == 'Linux' && matrix.compiler == 'clang'
run: |
echo 'CC=clang-14' >> $GITHUB_ENV
echo 'CXX=clang++-14' >> $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-12' >> $GITHUB_ENV
echo 'CXX=g++-12' >> $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: Configure autotools
if: matrix.buildtool == 'autotools'
run: |
autoreconf -i && ./configure --enable-werror
- name: Configure distcheck
if: matrix.buildtool == 'distcheck'
run: |
autoreconf -i && ./configure
- name: Configure cmake
if: matrix.buildtool == 'cmake'
run: |
autoreconf -i && ./configure
make dist
VERSION=$(grep PACKAGE_VERSION config.h | cut -d' ' -f3 | tr -d '"')
tar xf nghttp3-$VERSION.tar.gz
cd nghttp3-$VERSION
mkdir build
cd build
echo 'NGHTTP3_BUILD_DIR='"$PWD" >> $GITHUB_ENV
cmake $CMAKE_OPTS ..
- name: Build nghttp3
if: matrix.buildtool != 'distcheck'
run: |
[ -n "$NGHTTP3_BUILD_DIR" ] && cd "$NGHTTP3_BUILD_DIR"
make
make check
- name: Build nghttp3 with distcheck
if: matrix.buildtool == 'distcheck'
run: |
make distcheck
build-cross:
strategy:
matrix:
host: [x86_64-w64-mingw32, i686-w64-mingw32]
runs-on: ubuntu-22.04
env:
HOST: ${{ matrix.host }}
steps:
- uses: actions/checkout@v4
- name: Linux setup
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install \
gcc-mingw-w64 \
autoconf \
automake \
autotools-dev \
libtool \
pkg-config \
wine
- name: Build CUnit
run: |
curl -LO https://jaist.dl.sourceforge.net/project/cunit/CUnit/2.1-3/CUnit-2.1-3.tar.bz2
tar xf CUnit-2.1-3.tar.bz2
cd CUnit-2.1-3
./bootstrap
./configure --disable-shared --host="$HOST" --prefix="$PWD/build"
make -j$(nproc) install
- name: Configure autotools
run: |
autoreconf -i && \
./configure --enable-werror --enable-lib-only --with-cunit \
--host="$HOST" PKG_CONFIG_PATH="$PWD/CUnit-2.1-3/build/lib/pkgconfig"
- name: Build nghttp3
run: |
make -j$(nproc)
make -j$(nproc) check TESTS=""
- name: Run tests
if: matrix.host == 'x86_64-w64-mingw32'
run: |
cd tests
wine main.exe
build-windows:
strategy:
matrix:
arch: [x86, x64]
include:
- arch: x86
platform: Win32
- arch: x64
platform: x64
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: microsoft/setup-msbuild@v1
- run: |
vcpkg --triplet=${{ matrix.arch }}-windows install cunit
- name: Configure cmake
run: |
mkdir build
cd build
cmake -DENABLE_LIB_ONLY=ON -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_GENERATOR_PLATFORM=${{ matrix.platform }} -DVCPKG_TARGET_TRIPLET=${{ matrix.arch}}-windows ..
- name: Build nghttp3
run: |
cmake --build build
cmake --build build --target check