382 lines
14 KiB
YAML
382 lines
14 KiB
YAML
name: asio CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ master, citest-* ]
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build-type: ['sanity']
|
|
runs-on: [ubuntu-18.04, ubuntu-20.04, macos-latest]
|
|
compiler: [g++-4.8, g++-5, g++-6, g++-7, g++-8, g++-9, g++-10, clang++-10, g++]
|
|
cxx-std: ['c++03', 'c++11', 'c++14', 'c++17', 'c++2a']
|
|
separate-compilation: ['', '--enable-separate-compilation']
|
|
optim-level: ['-O0']
|
|
no-deprecated: ['']
|
|
select-reactor: ['', '-DASIO_DISABLE_EPOLL', '-DASIO_DISABLE_KQUEUE']
|
|
handler-tracking: ['']
|
|
boost: ['']
|
|
boost-url: ['']
|
|
exclude:
|
|
# Newer compilers don't run on ubuntu 18.04
|
|
- runs-on: ubuntu-18.04
|
|
compiler: g++
|
|
- runs-on: ubuntu-18.04
|
|
compiler: g++-7
|
|
- runs-on: ubuntu-18.04
|
|
compiler: g++-8
|
|
- runs-on: ubuntu-18.04
|
|
compiler: g++-9
|
|
- runs-on: ubuntu-18.04
|
|
compiler: g++-10
|
|
- runs-on: ubuntu-18.04
|
|
compiler: clang++-10
|
|
# Older compilers don't run on ubuntu 20.04
|
|
- runs-on: ubuntu-20.04
|
|
compiler: g++
|
|
- runs-on: ubuntu-20.04
|
|
compiler: g++-4.8
|
|
- runs-on: ubuntu-20.04
|
|
compiler: g++-4.9
|
|
- runs-on: ubuntu-20.04
|
|
compiler: g++-5
|
|
- runs-on: ubuntu-20.04
|
|
compiler: g++-6
|
|
# Versioned g++ and clang++ don't run on macOS
|
|
- runs-on: macos-latest
|
|
compiler: g++-4.8
|
|
- runs-on: macos-latest
|
|
compiler: g++-4.9
|
|
- runs-on: macos-latest
|
|
compiler: g++-5
|
|
- runs-on: macos-latest
|
|
compiler: g++-6
|
|
- runs-on: macos-latest
|
|
compiler: g++-7
|
|
- runs-on: macos-latest
|
|
compiler: g++-8
|
|
- runs-on: macos-latest
|
|
compiler: g++-9
|
|
- runs-on: macos-latest
|
|
compiler: g++-10
|
|
- runs-on: macos-latest
|
|
compiler: clang++-10
|
|
# Older compilers don't support newer std variants
|
|
- compiler: g++-4.8
|
|
cxx-std: c++14
|
|
- compiler: g++-4.8
|
|
cxx-std: c++17
|
|
- compiler: g++-4.8
|
|
cxx-std: c++2a
|
|
- compiler: g++-5
|
|
cxx-std: c++2a
|
|
- compiler: g++-6
|
|
cxx-std: c++2a
|
|
- compiler: g++-7
|
|
cxx-std: c++2a
|
|
# Specifying the select reactor is OS-specific
|
|
- runs-on: ubuntu-18.04
|
|
select-reactor: -DASIO_DISABLE_KQUEUE
|
|
- runs-on: ubuntu-20.04
|
|
select-reactor: -DASIO_DISABLE_KQUEUE
|
|
- runs-on: macos-latest
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
# Trim builds that use separate compilation
|
|
- compiler: g++-5
|
|
separate-compilation: --enable-separate-compilation
|
|
- compiler: g++-6
|
|
separate-compilation: --enable-separate-compilation
|
|
- compiler: g++-7
|
|
separate-compilation: --enable-separate-compilation
|
|
- compiler: g++-8
|
|
separate-compilation: --enable-separate-compilation
|
|
- compiler: g++-9
|
|
separate-compilation: --enable-separate-compilation
|
|
- runs-on: macos-latest
|
|
cxx-std: c++14
|
|
separate-compilation: --enable-separate-compilation
|
|
- runs-on: macos-latest
|
|
cxx-std: c++17
|
|
separate-compilation: --enable-separate-compilation
|
|
# Trim builds that use select reactor
|
|
- compiler: g++-5
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
- compiler: g++-6
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
- compiler: g++-7
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
- compiler: g++-8
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
- compiler: g++-9
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
# C++03 builds are always explicitly included
|
|
- cxx-std: c++03
|
|
include:
|
|
#
|
|
# Linux / g++-10 -std=c++2a / -O2 / standalone
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-20.04
|
|
compiler: g++-10
|
|
cxx-std: c++2a
|
|
optim-level: -O2
|
|
#
|
|
# Linux / g++-10 -std=c++17 / -O2 / boost 1.73
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-20.04
|
|
compiler: g++-10
|
|
cxx-std: c++17
|
|
optim-level: -O2
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_73_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.bz2/download
|
|
#
|
|
# Linux / g++-9 -std=c++14 / -O0 / standalone / separate compilation
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-20.04
|
|
compiler: g++-9
|
|
cxx-std: c++14
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
#
|
|
# Linux / g++-6 / -O2 / standalone
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-6
|
|
cxx-std: c++14
|
|
optim-level: -O2
|
|
#
|
|
# Linux / g++-6 / -O0 / standalone / handler tracking
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-6
|
|
cxx-std: c++14
|
|
optim-level: -O0
|
|
handler-tracking: -DASIO_ENABLE_HANDLER_TRACKING
|
|
#
|
|
# Linux / g++-6 / -O0 / standalone / epoll disabled
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-6
|
|
cxx-std: c++14
|
|
optim-level: -O0
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
#
|
|
# Linux / g++-6 / -O0 / standalone / separate compilation / handler tracking
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-6
|
|
cxx-std: c++14
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
handler-tracking: -DASIO_ENABLE_HANDLER_TRACKING
|
|
#
|
|
# Linux / g++-6 / -O0 / standalone / separate compilation / epoll disabled
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-6
|
|
cxx-std: c++14
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
#
|
|
# Linux / g++-6 / -O2 / boost 1.64
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-10
|
|
cxx-std: c++14
|
|
optim-level: -O2
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
#
|
|
# Linux / g++-6 / -O0 / boost 1.64 / epoll disabled
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-10
|
|
cxx-std: c++14
|
|
optim-level: -O0
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
select-reactor: -DASIO_DISABLE_EPOLL
|
|
#
|
|
# Linux / g++-6 / -O0 / boost 1.64 / separate compilation
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-10
|
|
cxx-std: c++14
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
#
|
|
# Linux / g++-4.8 / -O2 / standalone
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-4.8
|
|
cxx-std: c++11
|
|
optim-level: -O2
|
|
#
|
|
# Linux / g++-4.8 / -O0 / standalone / separate compilation
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-4.8
|
|
cxx-std: c++11
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
#
|
|
# Linux / g++-4.8 / -O2 / boost 1.64
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-4.8
|
|
cxx-std: c++03
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O2
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
#
|
|
# Linux / g++-4.8 -std=c++11 / -O2 / boost 1.64
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-18.04
|
|
compiler: g++-4.8
|
|
cxx-std: c++11
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O2
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
#
|
|
# Linux / clang++-10 -std=c++2a / -O2 / standalone
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-20.04
|
|
compiler: clang++-10
|
|
cxx-std: c++2a
|
|
optim-level: -O2
|
|
#
|
|
# Linux / clang++-10 -std=c++11 / -O0 / standalone / separate compilation
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-20.04
|
|
compiler: clang++-10
|
|
cxx-std: c++11
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
#
|
|
# Linux / clang++-3.8 -std=c++11 / -O2 / standalone
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-16.04
|
|
compiler: clang++-3.8
|
|
cxx-std: c++11
|
|
optim-level: -O2
|
|
#
|
|
# Linux / clang++-3.8 -std=c++11 / -O0 / boost 1.64 / separate compilation
|
|
#
|
|
- build-type: full
|
|
runs-on: ubuntu-16.04
|
|
compiler: clang++-3.8
|
|
cxx-std: c++03
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
#
|
|
# macOS / c++2a -fcoroutines-ts / -O2 / standalone
|
|
#
|
|
- build-type: full
|
|
runs-on: macos-latest
|
|
compiler: g++
|
|
cxx-std: c++2a -fcoroutines-ts
|
|
optim-level: -O2
|
|
#
|
|
# macOS / c++11 / -O2 / standalone
|
|
#
|
|
- build-type: full
|
|
runs-on: macos-latest
|
|
compiler: g++
|
|
cxx-std: c++11
|
|
optim-level: -O2
|
|
#
|
|
# macOS / c++11 / -O0 / standalone / kqueue disabled
|
|
#
|
|
- build-type: full
|
|
runs-on: macos-latest
|
|
compiler: g++
|
|
cxx-std: c++11
|
|
optim-level: -O0
|
|
select-reactor: -DASIO_DISABLE_KQUEUE
|
|
#
|
|
# macOS / c++11 / -O0 / standalone / separate compilation
|
|
#
|
|
- build-type: full
|
|
runs-on: macos-latest
|
|
compiler: g++
|
|
cxx-std: c++11
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
#
|
|
# macOS / c++03 / -O2 / boost 1.64
|
|
#
|
|
- build-type: full
|
|
runs-on: macos-latest
|
|
compiler: g++
|
|
cxx-std: c++03
|
|
optim-level: -O2
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
#
|
|
# macOS / c++03 / -O2 / boost 1.64 / separate compilation
|
|
#
|
|
- build-type: full
|
|
runs-on: macos-latest
|
|
compiler: g++
|
|
cxx-std: c++03
|
|
separate-compilation: --enable-separate-compilation
|
|
optim-level: -O0
|
|
with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_64_0
|
|
boost-url: https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download
|
|
runs-on: ${{ matrix.runs-on }}
|
|
env:
|
|
CXX: ${{ matrix.compiler }}
|
|
CXXFLAGS: -std=${{ matrix.cxx-std }} ${{ matrix.optim-level }} -Wall -Wextra ${{ matrix.no-deprecated }} ${{ matrix.select-reactor }} ${{ matrix.handler-tracking }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install autotools
|
|
if: startsWith(matrix.runs-on, 'macos')
|
|
run: brew install automake
|
|
- name: Install compiler
|
|
if: startsWith(matrix.runs-on, 'ubuntu')
|
|
run: sudo apt-get install -y ${{ matrix.compiler }}
|
|
- name: Install boost
|
|
if: startsWith(matrix.with-boost, '--with-boost=$GITHUB_WORKSPACE')
|
|
run: |
|
|
wget --quiet -O - ${{ matrix.boost-url }} | tar -xj
|
|
- name: Configure
|
|
working-directory: asio
|
|
run: |
|
|
./autogen.sh
|
|
./configure ${{ matrix.separate-compilation }} ${{ matrix.with-boost }}
|
|
- name: Sanity check
|
|
if: startsWith(matrix.build-type, 'sanity')
|
|
working-directory: asio/src/tests
|
|
run: make unit/io_context.log unit/ip/tcp.log unit/ts/net.log
|
|
- name: Build
|
|
if: startsWith(matrix.build-type, 'full')
|
|
working-directory: asio
|
|
run: make && make check
|