diff --git a/.travis.osx.yml b/.travis.osx.yml index 99854ea07..322d99eb1 100644 --- a/.travis.osx.yml +++ b/.travis.osx.yml @@ -3,7 +3,7 @@ env: global: - secure: "W8vou0KRJOOboZXP9q+D/9Wl6LlBeVS2T85MHWPz7EwCMQbJq5xWnGzYLE6FmC0iILcZkXyP63vqoYMFo5MJaEQeALGx2RuIiW7XgrD+7Bn4Vfsp6BLT7K9/AJETGGTQnLs8oZJJCXHGtzbc8EPFIZd/ZPPrve4jhEE5ZNhXnRc=" matrix: - - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=DEBUG USE_TCMALLOC=TRUE + - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=DEBUG USE_TCMALLOC=TRUE MEMCHECK=TRUE PUSH_TO_CDASH=TRUE - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=DEBUG USE_TCMALLOC=FALSE - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=RELEASE USE_TCMALLOC=TRUE UPLOAD=osx - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=RELEASE USE_TCMALLOC=FALSE UPLOAD=osx_tcmalloc @@ -20,7 +20,14 @@ before_script: script: - cd build -- ninja && yes "C" | ctest -T test -VV +- ctest -D ExperimentalBuild +- yes "C" | ctest -D ExperimentalTest -VV + - if [[ $MEMCHECK == TRUE ]]; then + ctest -D ExperimentalMemCheck; + fi +- if [[ $PUSH_TO_CDASH == TRUE ]]; then + ctest -D ExperimentalSubmit; + fi - cd .. after_script: @@ -43,6 +50,9 @@ install: brew install mpfr; brew link --overwrite mpfr; fi - brew install cmake ninja +- if [[ $MEMCHECK == TRUE ]]; then + brew install valgrind; + fi - if [[ $USE_TCMALLOC == TRUE ]]; then brew install google-perftools; fi - if [[ $UPLOAD ]]; then brew install python; pip install dropbox; diff --git a/.travis.windows.yml b/.travis.windows.yml index 12c3a19ca..2e38c7797 100644 --- a/.travis.windows.yml +++ b/.travis.windows.yml @@ -5,7 +5,7 @@ env: # DROPBOX_KEY - secure: "H1aUwvee839ZPVievqm8Fwl9hBHx5/JW6+J66+ORYL2IHHPjfOgLKRYU2rcTcbxnZO88NJRGeiI431rEadBU2Ie5aS8WpKM5orvRmdd6bLcCvzqN+hS8JCmCVygQtgpKYYUk8iDWhX9YCgPVs0RlRz3UCjwUpqdkmL+w74lIZMM=" matrix: - - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=RELEASE UPLOAD=windows DROPBOX=TRUE + - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=RELEASE UPLOAD=windows DROPBOX=TRUE PUSH_TO_CDASH=TRUE - CMAKE_CXX_COMPILER=g++ CMAKE_BUILD_TYPE=DEBUG install: @@ -27,7 +27,10 @@ script: - LEAN_ROOT=`pwd` - cd build - cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ../src -DCMAKE_TOOLCHAIN_FILE=/tmp/mxe/usr/x86_64-w64-mingw32/share/cmake/mxe-conf.cmake - - make + - ctest -D ExperimentalBuild + - if [[ $PUSH_TO_CDASH == TRUE ]]; then + ctest -D ExperimentalSubmit; + fi - cd .. after_script: diff --git a/.travis.yml b/.travis.yml index beaff8532..43b0add48 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,8 @@ env: TRIGGER_BB=TRUE TRIGGER_OSX=TRUE TRIGGER_WINDOWS=TRUE + MEMCHECK=TRUE + PUSH_TO_CDASH=TRUE - CMAKE_CXX_COMPILER=g++-4.8 CMAKE_BUILD_TYPE=DOXYGEN BUILD_DOXYGEN=TRUE @@ -25,6 +27,7 @@ env: - CMAKE_CXX_COMPILER=clang++-3.3 CMAKE_BUILD_TYPE=DEBUG USE_TCMALLOC=TRUE + PUSH_TO_CDASH=TRUE - CMAKE_CXX_COMPILER=g++-4.8 CMAKE_BUILD_TYPE=DEBUG USE_TCMALLOC=TRUE @@ -62,6 +65,9 @@ install: - until sudo apt-get -qq install libstdc++-4.8-dev; do echo retry; done - if [[ $CMAKE_CXX_COMPILER == g++-4.8 ]]; then until sudo apt-get -qq install g++-4.8; do echo retry; done fi - if [[ $CMAKE_CXX_COMPILER == clang++-3.3 ]]; then until sudo apt-get -qq install clang-3.3; do echo retry; done fi + - if [[ $MEMCHECK == TRUE ]]; then + sudo apt-get -qq install valgrind; + fi - if [[ $CMAKE_BUILD_TYPE == TESTCOV ]]; then wget http://downloads.sourceforge.net/ltp/lcov-1.10.tar.gz; tar xvfz lcov-1.10.tar.gz; @@ -75,13 +81,22 @@ install: fi script: - - if [[ $CMAKE_BUILD_TYPE == DEBUG || $CMAKE_BUILD_TYPE == RELEASE ]]; then - mkdir -p build; - cd build; - cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ../src; - make && yes "C" | ctest -T test -VV; + - mkdir -p build + - cd build + - cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ../src + - if [[ $CMAKE_BUILD_TYPE == DEBUG || $CMAKE_BUILD_TYPE == RELEASE || $CMAKE_BUILD_TYPE == TESTCOV ]]; then + ctest -D ExperimentalBuild; + yes "C" | ctest -D ExperimentalTest -VV; fi - + - if [[ $CMAKE_BUILD_TYPE == TESTCOV ]]; then + ctest -D ExperimentalCoverage; + - if [[ $MEMCHECK == TRUE ]]; then + ctest -D ExperimentalMemCheck; + fi + - if [[ $PUSH_TO_CDASH == TRUE ]]; then + ctest -D ExperimentalSubmit; + fi + - cd .. after_script: - if [[ $TRIGGER_BB == TRUE ]]; then git push -q https://soonhok:${BB_TOKEN}@bitbucket.org/soonhok/lean.git +master; @@ -110,9 +125,6 @@ after_script: mv /tmp/.travis.temp.yml .travis.yml; git reset --hard HEAD~; fi -- if [[ $CMAKE_BUILD_TYPE == DEBUG ]] || [[ $CMAKE_BUILD_TYPE == RELEASE ]]; then - cd ..; - fi - if [[ $BUILD_DOXYGEN == TRUE ]]; then sudo apt-get -qq install doxygen; script/doxygen.sh; diff --git a/README.md b/README.md index fe66b280f..54053ac59 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ Mac OS X 10.8.2, g++-4.8 [![Build Status](https://travis-ci.org/soonhokong/lean-windows.png?branch=master)](https://travis-ci.org/soonhokong/lean-windows) Windows, x86_64-w64-mingw32-g++-4.8.1 +[[Result of Build/UnitTest/Coverage/Dynamic Analysis]][cdash] + +[cdash]: http://my.cdash.org/index.php?project=Lean&date= + Requirements ============ @@ -46,15 +50,15 @@ Instructions for installing clang-3.3 (C++11 compatible) on Ubuntu sudo apt-get dist-upgrade sudo apt-get install clang-3.3 clang-3.3-doc -Note that you [still need][1] to have g++-4.8's C++ runtime library to -support some C++11 features that we are using. +Note that you [still need][clang_cxx_status] to have g++-4.8's C++ +runtime library to support some C++11 features that we are using. You can specify the C++ compiler to use by using ``-DCMAKE_CXX_COMPILER`` option. For example cmake -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_CXX_COMPILER=clang++-3.3 ../../src -[1]: http://clang.llvm.org/cxx_status.html +[clang_cxx_status]: http://clang.llvm.org/cxx_status.html Install Packages on Fedora 19 ----------------------------- @@ -117,10 +121,11 @@ Instructions for RELEASE build Using [CMake][cmake] + [Ninja][ninja] ------------------------------- [CMake 2.8.11][cmake] supports [Ninja][ninja] build system using -``-G`` option. [Some people report][1] that using [Ninja][ninja] can -reduce the build time, esp when a build is incremental. +``-G`` option. [Some people report][ninja_work] that using +[Ninja][ninja] can reduce the build time, esp when a build is +incremental. -[1]: https://plus.google.com/108996039294665965197/posts/SfhrFAhRyyd +[ninja_work]: https://plus.google.com/108996039294665965197/posts/SfhrFAhRyyd Instructions for DEBUG build diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index de3f7d550..b0a01b442 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,6 +6,11 @@ set(LEAN_VERSION_MINOR 1) set(CMAKE_COLOR_MAKEFILE ON) enable_testing() +# Added for CTest +INCLUDE(CTest) +CONFIGURE_FILE(${LEAN_SOURCE_DIR}/CTestCustom.cmake.in + ${LEAN_BINARY_DIR}/CTestCustom.cmake @ONLY) + set(LEAN_EXTRA_LINKER_FLAGS "") set(LEAN_EXTRA_CXX_FLAGS "") diff --git a/src/CTestConfig.cmake b/src/CTestConfig.cmake new file mode 100644 index 000000000..3a49c12de --- /dev/null +++ b/src/CTestConfig.cmake @@ -0,0 +1,17 @@ +## This file should be placed in the root directory of your project. +## Then modify the CMakeLists.txt file in the root directory of your +## project to incorporate the testing dashboard. +## +## # The following are required to submit to the CDash dashboard: +## ENABLE_TESTING() +## INCLUDE(CTest) + +set(CTEST_PROJECT_NAME "Lean") +set(CTEST_NIGHTLY_START_TIME "00:00:00 EST") + +set(CTEST_DROP_METHOD "http") +set(CTEST_DROP_SITE "my.cdash.org") +set(CTEST_DROP_LOCATION "/submit.php?project=Lean") +set(CTEST_DROP_SITE_CDASH TRUE) + +set(UPDATE_COMMAND "git") diff --git a/src/CTestCustom.cmake.in b/src/CTestCustom.cmake.in new file mode 100644 index 000000000..bfaf4cdad --- /dev/null +++ b/src/CTestCustom.cmake.in @@ -0,0 +1,6 @@ +# Complete list of options is available at http://cmake.org/Wiki/CMake/Testing_With_CTest + +# List of tests to ignore during the MemCheck stage +SET(CTEST_CUSTOM_MEMCHECK_IGNORE ${CTEST_CUSTOM_MEMCHECK_IGNORE} "leantests") +# Regular expression for excluding files from coverage testing +SET(CTEST_CUSTOM_COVERAGE_EXCLUDE ${CTEST_CUSTOM_COVERAGE_EXCLUDE} "tests/*")