359 lines
11 KiB
YAML
359 lines
11 KiB
YAML
language: cpp
|
|
os:
|
|
- linux
|
|
- osx
|
|
compiler:
|
|
- gcc
|
|
- clang
|
|
env:
|
|
- DEBUG="debug" COVERAGE="coverage"
|
|
- DEBUG="nodebug" COVERAGE="nocoverage"
|
|
- LINKING="static"
|
|
before_install:
|
|
- eval "${MATRIX_EVAL}"
|
|
# Installing iwyu manually because clang and iwyu paths won't match on Ubuntu otherwise.
|
|
- if [ "$IWYU" = "iwyu" ]; then
|
|
CLANG_VERSION=`clang --version | grep version | cut -f3 -d' ' | cut -f1 -d'-'` ;
|
|
CLANG_PKG_VERSION=`echo $CLANG_VERSION | cut -f1,2 -d'.'`
|
|
CLANG_PREFIX_PATH="/usr/local/clang-${CLANG_VERSION}/lib/clang/${CLANG_VERSION}" ;
|
|
CLANG_BIN_PATH="/usr/local/clang-${CLANG_VERSION}/bin" ;
|
|
git clone https://github.com/include-what-you-use/include-what-you-use.git ;
|
|
cd include-what-you-use ;
|
|
echo "$CLANG_PKG_VERSION" | grep '\.[0-9]$' ;
|
|
if [ $? -eq 0 ]; then
|
|
git checkout clang_${CLANG_PKG_VERSION} ;
|
|
else
|
|
git checkout clang_${CLANG_PKG_VERSION}.0 ;
|
|
fi;
|
|
cd .. ;
|
|
mkdir build_iwyu ;
|
|
cd build_iwyu ;
|
|
cmake -G "Unix Makefiles" -DCMAKE_PREFIX_PATH=$CLANG_PREFIX_PATH -DCMAKE_C_COMPILER=$CLANG_BIN_PATH/clang -DCMAKE_CXX_COMPILER=$CLANG_BIN_PATH/clang++ ../include-what-you-use ;
|
|
make ;
|
|
sudo make install ;
|
|
cd .. ;
|
|
fi
|
|
- export LDFLAGS="$LDFLAGS -L/usr/local/lib -L/usr/lib"
|
|
- export PATH=$PATH:/usr/local/lib
|
|
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
|
|
- export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib
|
|
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get install info install-info; fi
|
|
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo pip install codecov; fi
|
|
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo pip install gcovr; fi
|
|
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get install cppcheck; fi
|
|
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export CFLAGS='-mtune=generic'; fi
|
|
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export IPV6_TESTS_ENABLED="true"; fi
|
|
- curl https://s3.amazonaws.com/libhttpserver/libmicrohttpd_releases/libmicrohttpd-0.9.59.tar.gz -o libmicrohttpd-0.9.59.tar.gz
|
|
- tar -xzf libmicrohttpd-0.9.59.tar.gz
|
|
- cd libmicrohttpd-0.9.59
|
|
- ./configure --disable-examples
|
|
- make
|
|
- sudo make install
|
|
- cd ..
|
|
- if [ "$BUILD_TYPE" = "asan" ]; then export CFLAGS='-fsanitize=address'; export CXXLAGS='-fsanitize=address'; export LDFLAGS='-fsanitize=address'; fi
|
|
- if [ "$BUILD_TYPE" = "msan" ]; then export CFLAGS='-fsanitize=memory'; export CXXLAGS='-fsanitize=memory'; export LDFLAGS='-fsanitize=memory'; fi
|
|
- if [ "$BUILD_TYPE" = "lsan" ]; then export CFLAGS='-fsanitize=leak'; export CXXLAGS='-fsanitize=leak'; export LDFLAGS='-fsanitize=leak'; fi
|
|
- if [ "$BUILD_TYPE" = "tsan" ]; then export CFLAGS='-fsanitize=thread'; export CXXLAGS='-fsanitize=thread'; export LDFLAGS='-fsanitize=thread'; fi
|
|
- if [ "$BUILD_TYPE" = "ubsan" ]; then export export CFLAGS='-fsanitize=undefined'; export CXXLAGS='-fsanitize=undefined'; export LDFLAGS='-fsanitize=undefined'; fi
|
|
install:
|
|
- ./bootstrap
|
|
- mkdir build
|
|
- cd build
|
|
- |
|
|
if [ "$LINKING" = "static" ]; then
|
|
../configure --enable-static --disable-fastopen;
|
|
elif [ "$DEBUG" = "debug" ] && [ "$COVERAGE" = "coverage" ]; then
|
|
../configure --enable-debug --enable-coverage --disable-shared --disable-fastopen;
|
|
elif [ "$DEBUG" = "debug" ]; then
|
|
../configure --enable-debug --disable-shared --disable-fastopen;
|
|
elif [ "$VALGRIND" = "valgrind" ]; then
|
|
../configure --enable-debug --disable-fastopen --disable-valgrind-helgrind --disable-valgrind-drd --disable-valgrind-sgcheck;
|
|
elif [ "$IWYU" = "iwyu" ]; then
|
|
../configure --disable-examples;
|
|
else
|
|
../configure --disable-fastopen;
|
|
fi
|
|
# Make or run iwyu. If running iwyu, check for the result code to be 2 (IWYU always returns an error code, if it is 2, no corrections are necessary).
|
|
- |
|
|
if [ "$IWYU" = "iwyu" ]; then
|
|
make -k CXX='/usr/local/bin/include-what-you-use -Xiwyu --mapping_file=${top_builddir}/../custom_iwyu.imp' CXXFLAGS="-isystem ${CLANG_PREFIX_PATH}/include -std=c++11 -DHTTPSERVER_COMPILATION -D_REENTRANT $CXXFLAGS" ;
|
|
if [ $? -ne 2 ]; then
|
|
return 1;
|
|
fi
|
|
else
|
|
make;
|
|
fi
|
|
script:
|
|
- if [ "$IWYU" != "iwyu" ]; then make check; cat test/test-suite.log; fi
|
|
- if [ "$VALGRIND" = "valgrind" ]; then make check-valgrind; fi;
|
|
- if [ "$VALGRIND" = "valgrind" ]; then cat test/test-suite-memcheck.log; fi;
|
|
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd ../src/; cppcheck --error-exitcode=1 .; cd ../build; fi
|
|
- |
|
|
if [ "$PERFORMANCE" = "select" ]; then
|
|
cd examples
|
|
./benchmark_select 8080 $(nproc) &
|
|
sleep 5 && ab -n 10000000 -c 100 localhost:8080/plaintext
|
|
fi
|
|
- |
|
|
if [ "$PERFORMANCE" = "nodelay" ]; then
|
|
cd examples
|
|
./benchmark_nodelay 8080 $(nproc) &
|
|
sleep 5 && ab -n 10000000 -c 100 localhost:8080/plaintext
|
|
fi
|
|
- |
|
|
if [ "$PERFORMANCE" = "threads" ]; then
|
|
cd examples
|
|
./benchmark_threads 8080 &
|
|
sleep 5 && ab -n 10000000 -c 100 localhost:8080/plaintext
|
|
fi
|
|
after_success:
|
|
- if [ "$DEBUG" = "debug" ] && [ "$COVERAGE" = "coverage" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then bash <(curl -s https://codecov.io/bash); fi
|
|
matrix:
|
|
exclude:
|
|
- compiler: clang
|
|
env: DEBUG="debug" COVERAGE="coverage"
|
|
include:
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.8
|
|
packages:
|
|
- clang-3.8
|
|
env: MATRIX_EVAL="BUILD_TYPE=asan && CC=clang-3.8 && CXX=clang++-3.8 && DEBUG=debug && COVERAGE=nocoverage"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.8
|
|
packages:
|
|
- clang-3.8
|
|
env: MATRIX_EVAL="BUILD_TYPE=msan && CC=clang-3.8 && CXX=clang++-3.8 && DEBUG=debug && COVERAGE=nocoverage"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.8
|
|
packages:
|
|
- clang-3.8
|
|
env: MATRIX_EVAL="BUILD_TYPE=lsan && CC=clang-3.8 && CXX=clang++-3.8 && DEBUG=debug && COVERAGE=nocoverage"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.8
|
|
packages:
|
|
- clang-3.8
|
|
env: MATRIX_EVAL="BUILD_TYPE=tsan && CC=clang-3.8 && CXX=clang++-3.8 && DEBUG=debug && COVERAGE=nocoverage"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.8
|
|
packages:
|
|
- clang-3.8
|
|
env: MATRIX_EVAL="BUILD_TYPE=ubsan && CC=clang-3.8 && CXX=clang++-3.8 && DEBUG=debug && COVERAGE=nocoverage"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-5
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-6
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-7
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-8
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-9
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-9 && CXX=g++-9"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-7
|
|
- valgrind
|
|
- valgrind-dbg
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && VALGRIND=valgrind"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-7
|
|
- apache2-utils
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && PERFORMANCE=select"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-7
|
|
- apache2-utils
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && PERFORMANCE=nodelay"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-7
|
|
- apache2-utils
|
|
env:
|
|
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && PERFORMANCE=threads"
|
|
# works on Precise and Trusty
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.6
|
|
packages:
|
|
- clang-3.6
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6"
|
|
# works on Precise and Trusty
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.7
|
|
packages:
|
|
- clang-3.7
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-3.7 && CXX=clang++-3.7"
|
|
# works on Precise and Trusty
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-precise-3.8
|
|
packages:
|
|
- clang-3.8
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"
|
|
# works on Trusty
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- llvm-toolchain-trusty-3.9
|
|
packages:
|
|
- clang-3.9
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9"
|
|
# works on Trusty
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- clang-4.0
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"
|
|
# works on Trusty
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- clang-5.0
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- clang-6.0
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- llvm-toolchain-xenial-7
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- clang-7
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-7 && CXX=clang++-7"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- llvm-toolchain-xenial-8
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- clang-8
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
- os: linux
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- llvm-toolchain-xenial-9
|
|
- ubuntu-toolchain-r-test
|
|
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
|
|
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
|
|
packages:
|
|
- clang-9
|
|
env:
|
|
- MATRIX_EVAL="CC=clang-9 && CXX=clang++-9"
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- llvm-toolchain-xenial-7
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- iwyu
|
|
- cmake
|
|
- llvm-dev
|
|
- libclang-dev
|
|
env:
|
|
- MATRIX_EVAL="IWYU=iwyu"
|