diff --git a/.travis.yml b/.travis.yml index 13b71e26..9a470656 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,12 @@ env: - BUILD_TYPE=cmake CURVE=tweetnacl - BUILD_TYPE=default CURVE=libsodium - BUILD_TYPE=default +- BUILD_TYPE=coverage CURVE=tweetnacl + +matrix: + exclude: + - env: BUILD_TYPE=coverage CURVE=tweetnacl + os: osx sudo: false @@ -21,6 +27,7 @@ addons: - kubuntu-backports packages: - cmake + - lcov before_install: - if [ $TRAVIS_OS_NAME == "osx" ] ; then brew update; brew install binutils ; fi diff --git a/builds/coverage/ci_build.sh b/builds/coverage/ci_build.sh new file mode 100755 index 00000000..065f2bfb --- /dev/null +++ b/builds/coverage/ci_build.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -x + +mkdir tmp +BUILD_PREFIX=$PWD/tmp + +CONFIG_OPTS=() +CONFIG_OPTS+=("CFLAGS=-I${BUILD_PREFIX}/include") +CONFIG_OPTS+=("CPPFLAGS=-I${BUILD_PREFIX}/include") +CONFIG_OPTS+=("CXXFLAGS=-I${BUILD_PREFIX}/include") +CONFIG_OPTS+=("LDFLAGS=-L${BUILD_PREFIX}/lib") +CONFIG_OPTS+=("PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig") +CONFIG_OPTS+=("--prefix=${BUILD_PREFIX}") +CONFIG_OPTS+=("--enable-code-coverage") + +if [ -z $CURVE ]; then + CMAKE_OPTS+=("-DENABLE_CURVE=OFF") +elif [ $CURVE == "libsodium" ]; then + CMAKE_OPTS+=("-DWITH_LIBSODIUM=ON") + + git clone --depth 1 -b stable git://github.com/jedisct1/libsodium.git + ( cd libsodium; ./autogen.sh; ./configure --prefix=$BUILD_PREFIX; make install) +fi + +pip install --user cpp-coveralls + +# Build, check, and install from local source +( cd ../..; ./autogen.sh && ./configure "${CONFIG_OPTS[@]}" && make -j5 && make check && coveralls --exclude tests --gcov-options '\-lp') || exit 1