1dist: xenial
2language: cpp
3os:
4  - osx
5  - linux
6osx_image: xcode11
7compiler:
8  - clang
9  - gcc
10env:
11    - CI_BUILD=cmake
12    - CI_BUILD=autotools
13matrix:
14  exclude:
15  # Exclude gcc build (Need some work) with osx
16  - os: osx
17    compiler: gcc
18addons:
19  apt:
20    sources:
21    - ubuntu-toolchain-r-test
22    packages:
23    - g++-8
24    - autoconf
25    - automake
26    - autotools-dev
27    - libtool
28    - pkg-config
29    - libcunit1-dev
30    - libssl-dev
31    - libev-dev
32    - cmake
33    - cmake-data
34  homebrew:
35    packages:
36      - libev
37      - cunit
38before_install:
39  - $CC --version
40  - |
41    if [ "$TRAVIS_OS_NAME" == "linux" ]; then
42      CMAKE_OPTS=" -DENABLE_ASAN=1"
43      AUTOTOOLS_OPTS="--enable-asan"
44      if [ "$CXX" = "g++" ]; then
45        export CXX="g++-8" CC="gcc-8" EXTRA_LDFLAGS="-fuse-ld=gold"
46      else
47        export CXX="clang++" CC="clang"
48      fi
49    fi
50  - $CC --version
51  - cmake --version
52before_script:
53  # First build external lib
54  - ./ci/build_openssl.sh
55  - ./ci/build_nghttp3.sh
56  # configure ngtcp2
57  - export PKG_CONFIG_PATH=$PWD/../openssl/build/lib/pkgconfig:$PWD/../nghttp3/build/lib/pkgconfig LDFLAGS="$EXTRA_LDFLAGS -Wl,-rpath,$PWD/../openssl/build/lib"
58  - |
59    if [ "$CI_BUILD" == "autotools" ]; then
60      autoreconf -i && ./configure --enable-werror $AUTOTOOLS_OPTS
61    fi
62  # Set CMAKE_LIBRARY_ARCHITECTURE to workaround failure to parse
63  # implicit link information from GCC 5
64  - |
65    if [ "$CI_BUILD" == "cmake" ]; then
66      cmake $CMAKE_OPTS -DCMAKE_LIBRARY_ARCHITECTURE=x86_64-linux-gnu
67    fi
68script:
69  # Now build ngtcp2 examples and test
70  - make
71  - make check
72  - ./ci/gen-certificate.sh
73  - ./examples/server localhost 4433 cert/server.key cert/server.crt &
74  - ./examples/client localhost 4433 https://localhost/
75