working on the command line doc
diff --git a/.travis.yml b/.travis.yml
index 9a5a139..f08da44 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,352 +1,353 @@
-sudo: false
-language: c++
-
-notifications:
- email:
- on_success: change
- on_failure: always
- # gitter
- webhooks:
- urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706
- on_success: change
- on_failure: always
-git:
- depth: 5
-
-# both apt and ccache make the builds slower...
-#cache:
-# - apt
-# - ccache
-
-env:
- global:
-# - USE_CCACHE=1
-# - CCACHE_SLOPPINESS=pch_defines,time_macros
-# - CCACHE_COMPRESS=1
-# - CCACHE_MAXSIZE=200M
-# - CCACHE_CPP2=1
- - CMAKE_OPTIONS_GLOBAL="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
- # Workaround for https://github.com/travis-ci/travis-ci/issues/4681
- # "Defining the build matrix only with matrix.include leads to an additional, unwanted job"
- matrix:
- - TRAVIS_EMPTY_JOB_WORKAROUND=true
-
-addons:
- coverity_scan:
- # COVERITY_SCAN_TOKEN added as env var in travis project
- project:
- name: onqtam/doctest
- notification_email: vik.kirilov@gmail.com
- build_command_prepend: cd examples/hello_world && cmake .
- build_command: make
- branch_pattern: coverity_scan
- # these apt sources will be referenced later (by using *name)
- apt:
- sources: &apt_sources
- - ubuntu-toolchain-r-test
- - llvm-toolchain-precise-3.5
- - llvm-toolchain-precise-3.6
- - llvm-toolchain-precise-3.7
- - llvm-toolchain-precise-3.8
- - llvm-toolchain-precise
-
-compiler: clang
-os: linux
-
-matrix:
- exclude:
- - env: TRAVIS_EMPTY_JOB_WORKAROUND=true
-
- include:
- # coverage
- - env: COMPILER=g++ COVERALLS_SERVICE_NAME=travis-ci
- compiler: gcc
- addons:
- apt:
- packages: ["lcov", "curl"]
-
- # GCC 4.4
- - env: COMPILER=g++-4.4
- compiler: gcc
- addons: &gcc44
- apt:
- packages: ["g++-4.4", "valgrind", "g++-4.4-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.5
- - env: COMPILER=g++-4.5
- compiler: gcc
- addons: &gcc45
- apt:
- packages: ["g++-4.5", "valgrind", "g++-4.5-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.6
- - env: COMPILER=g++-4.6
- compiler: gcc
- addons: &gcc46
- apt:
- packages: [ "valgrind", "g++-4.6-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.7
- - env: COMPILER=g++-4.7
- compiler: gcc
- addons: &gcc47
- apt:
- packages: ["g++-4.7", "valgrind", "g++-4.7-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.8
- - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
- compiler: gcc
- addons: &gcc48
- apt:
- packages: ["g++-4.8", "valgrind", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.9
- - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- addons: &gcc49
- apt:
- packages: ["g++-4.9", "valgrind", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 5
- - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- addons: &gcc5
- apt:
- packages: ["g++-5", "valgrind", "g++-5-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
-# # GCC 6
-# # released on 2016.04.27
-# # wait for it to enter the whitelist - https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
-# # also with homebrew under OSX!!!
-# - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#sudo: false
+#language: c++
+#
+#notifications:
+# email:
+# on_success: change
+# on_failure: always
+# # gitter
+# webhooks:
+# urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706
+# on_success: change
+# on_failure: always
+#git:
+# depth: 5
+#
+## both apt and ccache make the builds slower...
+##cache:
+## - apt
+## - ccache
+#
+#env:
+# global:
+## - USE_CCACHE=1
+## - CCACHE_SLOPPINESS=pch_defines,time_macros
+## - CCACHE_COMPRESS=1
+## - CCACHE_MAXSIZE=200M
+## - CCACHE_CPP2=1
+# - CMAKE_OPTIONS_GLOBAL="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
+# # Workaround for https://github.com/travis-ci/travis-ci/issues/4681
+# # "Defining the build matrix only with matrix.include leads to an additional, unwanted job"
+# matrix:
+# - TRAVIS_EMPTY_JOB_WORKAROUND=true
+#
+#addons:
+# coverity_scan:
+# # COVERITY_SCAN_TOKEN added as env var in travis project
+# project:
+# name: onqtam/doctest
+# notification_email: vik.kirilov@gmail.com
+# build_command_prepend: cd examples/hello_world && cmake .
+# build_command: make
+# branch_pattern: coverity_scan
+# # these apt sources will be referenced later (by using *name)
+# apt:
+# sources: &apt_sources
+# - ubuntu-toolchain-r-test
+# - llvm-toolchain-precise-3.5
+# - llvm-toolchain-precise-3.6
+# - llvm-toolchain-precise-3.7
+# - llvm-toolchain-precise-3.8
+# - llvm-toolchain-precise
+#
+#compiler: clang
+#os: linux
+#
+#matrix:
+# exclude:
+# - env: TRAVIS_EMPTY_JOB_WORKAROUND=true
+#
+# include:
+# # coverage
+# - env: COMPILER=g++ COVERALLS_SERVICE_NAME=travis-ci
# compiler: gcc
-# addons: &gcc6
+# addons:
# apt:
-# packages: ["g++-6", "valgrind", "g++-6-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# packages: ["lcov", "curl"]
+#
+# # GCC 4.4
+# - env: COMPILER=g++-4.4
+# compiler: gcc
+# addons: &gcc44
+# apt:
+# packages: ["g++-4.4", "valgrind", "g++-4.4-multilib", "libc6-dbg", "libc6-dbg:i386"]
# sources: *apt_sources
-
- # Clang 3.4
- - env: COMPILER=clang++ HAS_ASAN_64=true HAS_UBSAN_64=true
- addons: &clang
- apt:
- packages: [ "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.5
- - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true
- addons: &clang35
- apt:
- packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.6
- - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true
- addons: &clang36
- apt:
- packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.7
- - env: COMPILER=clang++-3.7 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
- addons: &clang37
- apt:
- packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.8
- - env: COMPILER=clang++-3.8 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
- addons: &clang38
- apt:
- packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Xcode 6.1 Clang
- - env: COMPILER=clang++
- os: osx
-
- # Xcode 6.2 Clang
- - env: COMPILER=clang++
- osx_image: beta-xcode6.2
- os: osx
-
- # Xcode 6.3 Clang
- - env: COMPILER=clang++
- osx_image: beta-xcode6.3
- os: osx
-
- # Xcode 6.4 Clang
- - env: COMPILER=clang++
- osx_image: xcode6.4
- os: osx
-
- # Xcode 7 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7
- os: osx
-
- # Xcode 7.1 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7.1
- os: osx
-
- # Xcode 7.2 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7.2
- os: osx
-
- # Xcode 7.3 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7.3
- os: osx
-
- # OSX GCC 4.4
- - env: COMPILER=g++-4.4
- compiler: gcc
- os: osx
-
- # OSX GCC 4.5
- - env: COMPILER=g++-4.5
- compiler: gcc
- os: osx
-
- # OSX GCC 4.6
- - env: COMPILER=g++-4.6
- compiler: gcc
- os: osx
-
- # OSX GCC 4.7
- - env: COMPILER=g++-4.7
- compiler: gcc
- os: osx
-
- # OSX GCC 4.8
- - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
- compiler: gcc
- os: osx
-
- # OSX GCC 4.9
- - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- os: osx
-
- # OSX GCC 5
- - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- os: osx
-
-# # OSX GCC 6
-# - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#
+# # GCC 4.5
+# - env: COMPILER=g++-4.5
+# compiler: gcc
+# addons: &gcc45
+# apt:
+# packages: ["g++-4.5", "valgrind", "g++-4.5-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.6
+# - env: COMPILER=g++-4.6
+# compiler: gcc
+# addons: &gcc46
+# apt:
+# packages: [ "valgrind", "g++-4.6-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.7
+# - env: COMPILER=g++-4.7
+# compiler: gcc
+# addons: &gcc47
+# apt:
+# packages: ["g++-4.7", "valgrind", "g++-4.7-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.8
+# - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
+# compiler: gcc
+# addons: &gcc48
+# apt:
+# packages: ["g++-4.8", "valgrind", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.9
+# - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# addons: &gcc49
+# apt:
+# packages: ["g++-4.9", "valgrind", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 5
+# - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# addons: &gcc5
+# apt:
+# packages: ["g++-5", "valgrind", "g++-5-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+## # GCC 6
+## # released on 2016.04.27
+## # wait for it to enter the whitelist - https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
+## # also with homebrew under OSX!!!
+## - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+## compiler: gcc
+## addons: &gcc6
+## apt:
+## packages: ["g++-6", "valgrind", "g++-6-multilib", "libc6-dbg", "libc6-dbg:i386"]
+## sources: *apt_sources
+#
+# # Clang 3.4
+# - env: COMPILER=clang++ HAS_ASAN_64=true HAS_UBSAN_64=true
+# addons: &clang
+# apt:
+# packages: [ "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.5
+# - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true
+# addons: &clang35
+# apt:
+# packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.6
+# - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true
+# addons: &clang36
+# apt:
+# packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.7
+# - env: COMPILER=clang++-3.7 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
+# addons: &clang37
+# apt:
+# packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.8
+# - env: COMPILER=clang++-3.8 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
+# addons: &clang38
+# apt:
+# packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Xcode 6.1 Clang
+# - env: COMPILER=clang++
+# os: osx
+#
+# # Xcode 6.2 Clang
+# - env: COMPILER=clang++
+# osx_image: beta-xcode6.2
+# os: osx
+#
+# # Xcode 6.3 Clang
+# - env: COMPILER=clang++
+# osx_image: beta-xcode6.3
+# os: osx
+#
+# # Xcode 6.4 Clang
+# - env: COMPILER=clang++
+# osx_image: xcode6.4
+# os: osx
+#
+# # Xcode 7 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7
+# os: osx
+#
+# # Xcode 7.1 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7.1
+# os: osx
+#
+# # Xcode 7.2 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7.2
+# os: osx
+#
+# # Xcode 7.3 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7.3
+# os: osx
+#
+# # OSX GCC 4.4
+# - env: COMPILER=g++-4.4
# compiler: gcc
# os: osx
-
- # OSX LLVM-GCC
- - env: COMPILER=g++
- compiler: gcc
- os: osx
-
-before_install:
- - |
- if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
- brew update
- # brew install ccache
- brew install valgrind
- # cmake
- if brew list -1 | grep -q "^cmake\$"; then
- brew outdated cmake || brew upgrade cmake
- else
- brew install cmake
- fi
- # gcc
- if [[ "${COMPILER}" = "g++-4.4" ]]; then
- brew install gcc44
- fi
- if [[ "${COMPILER}" = "g++-4.5" ]]; then
- brew install gcc45
- fi
- if [[ "${COMPILER}" = "g++-4.6" ]]; then
- brew install gcc46
- fi
- if [[ "${COMPILER}" = "g++-4.7" ]]; then
- brew install gcc47
- fi
- if [[ "${COMPILER}" = "g++-4.8" ]]; then
- brew outdated gcc48 || brew upgrade gcc48
- fi
- if [[ "${COMPILER}" = "g++-4.9" ]]; then
- brew install gcc49
- fi
- if [[ "${COMPILER}" = "g++-5" ]]; then
- brew install gcc5
- fi
- if [[ "${COMPILER}" = "g++-6" ]]; then
- brew install gcc6
- fi
- fi
- - git submodule update --init --recursive
-
-install:
- - ${CXX} --version
-# - export CXX="ccache ${COMPILER}"
- - export CXX="${COMPILER}"
- - ${CXX} --version
-# - ccache -s
-
-script:
- # coverage - do not continue with other build configurations after that
- - |
- if [[ "${COVERALLS_SERVICE_NAME}" = "travis-ci" ]]; then
- cmake ${CMAKE_OPTIONS_GLOBAL} -DCMAKE_BUILD_TYPE=Debug .
- make -j2 && make coveralls
- exit
- fi
-
- # initial run with options
- - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} .
-
- # debug x86
- - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .
- - make clean && make -j2
- # valgrind for 32bit under osx fails
- - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
- # debug x64
- - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" .
- - make clean && make -j2
- - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
- # release x86
- - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" .
- - make clean && make -j2
- # valgrind for 32bit under osx fails
- - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
- # release x64
- - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" .
- - make clean && make -j2
- - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
-
- # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers
- - cmake -DTEST_MODE=NORMAL .
-# - cmake -DTEST_MODE=COMPARE .
- # on separate commands because when something fails I want to see which one exactly
- - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
-
-# - ccache -s
-
-after_script:
- - cat compile_commands.json
+#
+# # OSX GCC 4.5
+# - env: COMPILER=g++-4.5
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.6
+# - env: COMPILER=g++-4.6
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.7
+# - env: COMPILER=g++-4.7
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.8
+# - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.9
+# - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 5
+# - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# os: osx
+#
+## # OSX GCC 6
+## - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+## compiler: gcc
+## os: osx
+#
+# # OSX LLVM-GCC
+# - env: COMPILER=g++
+# compiler: gcc
+# os: osx
+#
+#before_install:
+# - |
+# if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
+# brew update
+# # brew install ccache
+# brew install valgrind
+# # cmake
+# if brew list -1 | grep -q "^cmake\$"; then
+# brew outdated cmake || brew upgrade cmake
+# else
+# brew install cmake
+# fi
+# # gcc
+# if [[ "${COMPILER}" = "g++-4.4" ]]; then
+# brew install gcc44
+# fi
+# if [[ "${COMPILER}" = "g++-4.5" ]]; then
+# brew install gcc45
+# fi
+# if [[ "${COMPILER}" = "g++-4.6" ]]; then
+# brew install gcc46
+# fi
+# if [[ "${COMPILER}" = "g++-4.7" ]]; then
+# brew install gcc47
+# fi
+# if [[ "${COMPILER}" = "g++-4.8" ]]; then
+# brew outdated gcc48 || brew upgrade gcc48
+# fi
+# if [[ "${COMPILER}" = "g++-4.9" ]]; then
+# brew install gcc49
+# fi
+# if [[ "${COMPILER}" = "g++-5" ]]; then
+# brew install gcc5
+# fi
+# if [[ "${COMPILER}" = "g++-6" ]]; then
+# brew install gcc6
+# fi
+# fi
+# - git submodule update --init --recursive
+#
+#install:
+# - ${CXX} --version
+## - export CXX="ccache ${COMPILER}"
+# - export CXX="${COMPILER}"
+# - ${CXX} --version
+## - ccache -s
+#
+#script:
+# # coverage - do not continue with other build configurations after that
+# - |
+# if [[ "${COVERALLS_SERVICE_NAME}" = "travis-ci" ]]; then
+# cmake ${CMAKE_OPTIONS_GLOBAL} -DCMAKE_BUILD_TYPE=Debug .
+# make -j2 && make coveralls
+# exit
+# fi
+#
+# # initial run with options
+# - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} .
+#
+# # debug x86
+# - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .
+# - make clean && make -j2
+# # valgrind for 32bit under osx fails
+# - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+# # debug x64
+# - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" .
+# - make clean && make -j2
+# - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+# # release x86
+# - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" .
+# - make clean && make -j2
+# # valgrind for 32bit under osx fails
+# - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+# # release x64
+# - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" .
+# - make clean && make -j2
+# - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+#
+# # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers
+# - cmake -DTEST_MODE=NORMAL .
+## - cmake -DTEST_MODE=COMPARE .
+# # on separate commands because when something fails I want to see which one exactly
+# - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+#
+## - ccache -s
+#
+#after_script:
+# - cat compile_commands.json
+#
\ No newline at end of file