From f5fd22ab6825185d2594bc6c9254bad1f299abfc Mon Sep 17 00:00:00 2001 From: wilsonianb Date: Wed, 22 Jun 2016 11:24:05 -0700 Subject: [PATCH] Build all Travis CI targets with CMake: * Skip release and coverage targets for push builds --- .travis.yml | 17 +++++++++++++---- CMakeLists.txt | 23 ++++++++++++++++++++++- scripts/build-and-test.sh | 28 +++++++++++----------------- 3 files changed, 46 insertions(+), 22 deletions(-) diff --git a/.travis.yml b/.travis.yml index 274732deb3..33d47098c0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,17 +32,22 @@ matrix: include: # GCC/Coverage - compiler: gcc - env: GCC_VER=5 VARIANT=coverage ADDRESS_MODEL=64 + env: + - GCC_VER=5 + - VARIANT=coverage + - ADDRESS_MODEL=64 + - BUILD_SYSTEM=cmake + - PATH=$PWD/cmake/bin:$PATH addons: &ao_gcc5 apt: sources: ['ubuntu-toolchain-r-test'] packages: *gcc5_pkgs - # GCC/Debug/CMake + # GCC/Release/Autobahn - compiler: gcc env: - GCC_VER=5 - - VARIANT=debug + - VARIANT=release - ADDRESS_MODEL=64 - BUILD_SYSTEM=cmake - PATH=$PWD/cmake/bin:$PATH @@ -63,7 +68,9 @@ matrix: - VARIANT=usan - CLANG_VER=3.8 - ADDRESS_MODEL=64 - - UBSAN_OPTIONS='print_stacktrace=1' + - UBSAN_OPTIONS='print_stacktrace=1' + - BUILD_SYSTEM=cmake + - PATH=$PWD/cmake/bin:$PATH - PATH=$PWD/llvm-$LLVM_VERSION/bin:$PATH addons: *ao_gcc5 @@ -74,6 +81,8 @@ matrix: - VARIANT=asan - CLANG_VER=3.8 - ADDRESS_MODEL=64 + - BUILD_SYSTEM=cmake + - PATH=$PWD/cmake/bin:$PATH - PATH=$PWD/llvm-$LLVM_VERSION/bin:$PATH addons: *ao_gcc5 diff --git a/CMakeLists.txt b/CMakeLists.txt index 956f713311..97fb75ea98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,28 @@ else() find_package(Threads) set(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -g -std=c++11 -Wall -Wpedantic") + "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wpedantic") +endif() + +if (${VARIANT} STREQUAL "coverage") + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") + set(CMAKE_BUILD_TYPE RELWITHDEBINFO) + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov") +elseif (${VARIANT} STREQUAL "asan") + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") + set(CMAKE_BUILD_TYPE RELWITHDEBINFO) +elseif (${VARIANT} STREQUAL "usan") + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fno-omit-frame-pointer") + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined") + set(CMAKE_BUILD_TYPE RELWITHDEBINFO) +elseif (${VARIANT} STREQUAL "debug") + set(CMAKE_BUILD_TYPE DEBUG) +elseif (${VARIANT} STREQUAL "release") + set(CMAKE_BUILD_TYPE RELEASE) endif() message ("cxx Flags: " ${CMAKE_CXX_FLAGS}) diff --git a/scripts/build-and-test.sh b/scripts/build-and-test.sh index 271d1a0906..5e6bb7bfdb 100755 --- a/scripts/build-and-test.sh +++ b/scripts/build-and-test.sh @@ -20,15 +20,6 @@ else export PATH=$VALGRIND_ROOT/bin:$LCOV_ROOT/usr/bin:$PATH fi -MAIN_BRANCH="0" -# For builds not triggered by a pull request TRAVIS_BRANCH is the name of the -# branch currently being built; whereas for builds triggered by a pull request -# it is the name of the branch targeted by the pull request (in many cases this -# will be master). -if [[ $TRAVIS_BRANCH == "master" || $TRAVIS_BRANCH == "develop" ]]; then - MAIN_BRANCH="1" -fi - num_jobs="1" if [[ $(uname) == "Darwin" ]]; then num_jobs=$(sysctl -n hw.physicalcpu) @@ -42,11 +33,16 @@ elif [[ $(uname -s) == "Linux" ]]; then fi fi +if [[ $TRAVIS_PULL_REQUEST == "false" && + ( $VARIANT == "coverage" || $VARIANT == "release" ) ]]; then + echo "skipping target for non-pull request build" + exit 0 +fi + echo "using toolset: $CC" echo "using variant: $VARIANT" echo "using address-model: $ADDRESS_MODEL" echo "using PATH: $PATH" -echo "using MAIN_BRANCH: $MAIN_BRANCH" echo "using BOOST_ROOT: $BOOST_ROOT" #################################### HELPERS ################################### @@ -85,7 +81,7 @@ function build_beast { function build_beast_cmake { mkdir -p build pushd build > /dev/null - cmake -DCMAKE_BUILD_TYPE=${VARIANT^} .. + cmake -DVARIANT=${VARIANT} .. make -j${num_jobs} mkdir -p ../bin/$VARIANT find . -executable -type f -exec cp {} ../bin/$VARIANT/. \; @@ -133,12 +129,7 @@ if [[ $VARIANT == "coverage" ]]; then lcov --no-external -c -i -d . -o baseline.info > /dev/null # Perform test - if [[ $MAIN_BRANCH == "1" ]]; then - run_tests_with_valgrind - run_autobahn_test_suite - else - run_tests - fi + run_tests # Create test coverage data file lcov --no-external -c -d . -o testrun.info > /dev/null @@ -154,6 +145,9 @@ if [[ $VARIANT == "coverage" ]]; then # Clean up these stragglers so BOOST_ROOT cache is clean find $BOOST_ROOT/bin.v2 -name "*.gcda" | xargs rm -f +elif [[ $VARIANT == "release" ]]; then + run_tests_with_valgrind + run_autobahn_test_suite else run_tests_with_debugger fi