From 2bacf31731f8ac1066135151135fb23fafb88cd0 Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Wed, 10 Apr 2019 23:31:53 +0800 Subject: [PATCH] [travis] support clang code coverage (#3741) --- .travis.yml | 4 ++-- .travis/after_success.sh | 50 ++++++++++++++++++++++++++++++++++++++++ configure.ac | 1 + 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 .travis/after_success.sh diff --git a/.travis.yml b/.travis.yml index 7ba2dc928..cb973c43e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,14 +44,14 @@ script: - .travis/script.sh after_success: - - bash <(curl -s https://codecov.io/bash) + - .travis/after_success.sh matrix: include: - env: BUILD_TARGET="posix-app-cli" VERBOSE=1 VIRTUAL_TIME=1 os: linux compiler: gcc - - env: BUILD_TARGET="posix-app-pty" CC=clang CXX=clang++ VERBOSE=1 + - env: BUILD_TARGET="posix-app-pty" CC=clang CXX=clang++ VERBOSE=1 COVERAGE=1 os: linux compiler: clang - env: BUILD_TARGET="posix-app-pty" DAEMON=1 VERBOSE=1 COVERAGE=1 diff --git a/.travis/after_success.sh b/.travis/after_success.sh new file mode 100755 index 000000000..80ca312a3 --- /dev/null +++ b/.travis/after_success.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# Copyright (c) 2019, The OpenThread Authors. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +set -e + +codecov_upload() { + curl -s https://codecov.io/bash > codecov + chmod a+x codecov + + # Assume gcov by default, and llvm-cov if CC is clang + if [[ -z $CC ]]; then + ./codecov + elif "$CC" --version | grep -q gcc; then + ./codecov + elif "$CC" --version | grep -q clang; then + ./codecov -x "llvm-cov gcov" + fi +} + +main() { + codecov_upload +} + +main "$@" diff --git a/configure.ac b/configure.ac index 29d0aba81..0a5bb05f2 100644 --- a/configure.ac +++ b/configure.ac @@ -1946,6 +1946,7 @@ CPPFLAGS="${CPPFLAGS} ${MBEDTLS_CPPFLAGS}" CPPFLAGS="${CPPFLAGS} ${NL_COVERAGE_CPPFLAGS}" LIBS="${LIBS} ${NL_COVERAGE_LIBS}" +LDFLAGS="${LDFLAGS} ${NL_COVERAGE_LDFLAGS}" # At this point, we can restore the compiler flags to whatever the # user passed in, now that we're clear of an -Werror issues by