From a2fb4b099bdc72886a097b1c27f93371557ca5b6 Mon Sep 17 00:00:00 2001 From: wilsonianb Date: Wed, 22 Jun 2016 11:24:05 -0700 Subject: [PATCH] Build coverage and usan Travis CI targets with CMake --- .travis.yml | 31 ++++++++++--------------------- CMakeLists.txt | 23 +++++++++++++++++++++-- scripts/build-and-test.sh | 3 ++- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index 274732de..57c16c5d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,32 +30,19 @@ packages: &gcc5_pkgs matrix: include: - # GCC/Coverage + # GCC/Coverage/Autobahn - 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 - - compiler: gcc - env: - - GCC_VER=5 - - VARIANT=debug - - ADDRESS_MODEL=64 - - BUILD_SYSTEM=cmake - - PATH=$PWD/cmake/bin:$PATH - addons: *ao_gcc5 - - # # GCC/Debug - # - compiler: gcc - # env: GCC_VER=5 VARIANT=debug ADDRESS_MODEL=64 - # addons: *ao_gcc5 - # branches: # NOTE: this does NOT work, though it SHOULD - # - master - # - develop - # Clang/UndefinedBehaviourSanitizer - compiler: clang env: @@ -63,7 +50,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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 956f7133..12945aee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,10 +20,29 @@ 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() -message ("cxx Flags: " ${CMAKE_CXX_FLAGS}) +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() function(DoGroupSources curdir rootdir folder) file(GLOB children RELATIVE ${PROJECT_SOURCE_DIR}/${curdir} ${PROJECT_SOURCE_DIR}/${curdir}/*) diff --git a/scripts/build-and-test.sh b/scripts/build-and-test.sh index 271d1a09..3eecf30e 100755 --- a/scripts/build-and-test.sh +++ b/scripts/build-and-test.sh @@ -85,7 +85,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/. \; @@ -137,6 +137,7 @@ if [[ $VARIANT == "coverage" ]]; then run_tests_with_valgrind run_autobahn_test_suite else + echo "skipping autobahn tests for feature branch build" run_tests fi