diff --git a/.travis.yml b/.travis.yml index 293842d..bd9f12e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,49 +10,55 @@ os: matrix: fast_finish: true include: - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 + #- os: linux + #addons: + #apt: + #sources: + #- ubuntu-toolchain-r-test + #packages: + #- g++-5 + #env: + #- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" + #- BUILD_TYPE=Debug + + #- os: linux + #addons: + #apt: + #sources: + #- ubuntu-toolchain-r-test + #packages: + #- g++-5 + #env: + #- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" + #- BUILD_TYPE=Release + + #- os: linux + #addons: + #apt: + #sources: + #- ubuntu-toolchain-r-test + #packages: + #- g++-5 + #env: + #- MATRIX_EVAL="CC=clang && CXX=clang++" + #- BUILD_TYPE=Debug + + #- os: linux + #addons: + #apt: + #sources: + #- ubuntu-toolchain-r-test + #packages: + #- g++-5 + #env: + #- MATRIX_EVAL="CC=clang && CXX=clang++" + #- BUILD_TYPE=Release + + - os: osx env: - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" - BUILD_TYPE=Debug - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" - - BUILD_TYPE=Release - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - MATRIX_EVAL="CC=clang && CXX=clang++" - - BUILD_TYPE=Debug - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - MATRIX_EVAL="CC=clang && CXX=clang++" - - BUILD_TYPE=Release + - EXTRA_CMAKE_OPTIONS=-DMULTY_TEST_WITH_MEMORY_SANITIZER=1 + - MATRIX_EVAL="export ASAN_OPTIONS=detect_container_overflow=0" - language: android jdk: oraclejdk8 @@ -130,6 +136,6 @@ before_script: script: - mkdir build && cd build - - cmake .. -G'Unix Makefiles' -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DMULTY_MORE_WARNINGS=ON -DMULTY_TEST_DISABLE_DEATH_TESTS=ON -DMULTY_WARNINGS_AS_ERRORS=ON -DMULTY_WITH_TESTS=ON -DMULTY_WITH_TEST_APP=ON + - cmake .. -G'Unix Makefiles' -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DMULTY_MORE_WARNINGS=ON -DMULTY_TEST_DISABLE_DEATH_TESTS=ON -DMULTY_WARNINGS_AS_ERRORS=ON -DMULTY_WITH_TESTS=ON -DMULTY_WITH_TEST_APP=ON ${EXTRA_CMAKE_OPTIONS} - cmake --build . --target all - ./multy diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fe71c4..f91f8b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,15 +7,17 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) # General options -option(MULTY_WITH_TESTS "Build multy_test library" NO) option(MULTY_MORE_WARNINGS "More warnings" OFF) option(MULTY_WARNINGS_AS_ERRORS "Treat warnings as errors" OFF) option(MULTY_ENABLE_SIMULATE_ERROR "Enable simulating errors in multy_core, see THROW_IF_WALLY_ERROR for details." OFF) # This is a standard CMake option, but we are putting it here to emphasise. option(BUILD_SHARED_LIBS "Build as shared libraries." OFF) +option(MULTY_FORCE_ENABLE_ERROR_BACKTRACE "Force collecting backtrace for Release builds." OFF) + +# Tests options option(MULTY_WITH_TEST_APP "Build sample app that runs the tests (consider MULTY_WITH_TESTS)." OFF) option(MULTY_TEST_DISABLE_DEATH_TESTS "Explicitly disable death tests." ON) -option(MULTY_FORCE_ENABLE_ERROR_BACKTRACE "Force collecting backtrace for Release builds." OFF) +option(MULTY_TEST_WITH_MEMORY_SANITIZER "Enable memory sanitizer for multy_test." OFF) project(multy C CXX) diff --git a/multy_test/CMakeLists.txt b/multy_test/CMakeLists.txt index 72a89e2..269a5a6 100644 --- a/multy_test/CMakeLists.txt +++ b/multy_test/CMakeLists.txt @@ -71,6 +71,20 @@ target_link_libraries( libwally-core ) +if (MULTY_TEST_WITH_MEMORY_SANITIZER) + target_compile_options( + multy_test + PUBLIC + -fsanitize=address -fno-omit-frame-pointer + ) + + target_link_libraries( + multy_test + PUBLIC + -fsanitize=address + ) +endif() + if (MULTY_TEST_DISABLE_DEATH_TESTS) target_compile_definitions(multy_test PRIVATE MULTY_TEST_DISABLE_DEATH_TESTS) message("DEATH tests disabled.")