| # NOTE(quickstep-team): In Travis-CI, jobs timeout if they take more than 120 |
| # mins or if there is no log output for more than 10 mins. Hence, we use -O0 to |
| # speed up compilation in release build. Also, jobs can only use upto 20GB of |
| # disk space. Hence, we minimize the amount of debug symbol using -g0 (DEBUG |
| # builds were taking > 20GB of space with clang). |
| |
| language: cpp |
| |
| compiler: |
| - clang |
| - gcc |
| |
| env: |
| - BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=none |
| - BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=none |
| - BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions |
| - BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions |
| |
| install: |
| - if [ "$VECTOR_COPY_ELISION_LEVEL" = "joinwithbinaryexpressions" ] && [ "$CC" = "gcc" ]; then |
| export MAKE_JOBS=1; |
| else |
| export MAKE_JOBS=2; |
| fi |
| - export TEST_JOBS=2; |
| - if [ "$CC" = "gcc" ]; then |
| export CC="gcc-4.9"; |
| export CXX="g++-4.9"; |
| elif [ "$CC" = "clang" ]; then |
| export CC="clang-3.7"; |
| export CXX="clang++-3.7"; |
| fi |
| - export DEBUG_FLAGS="-g0"; |
| - export RELEASE_FLAGS="-O0 -DNDEBUG"; |
| - export LINKER_FLAGS="-s" |
| |
| before_script: |
| - $CC --version |
| - $CXX --version |
| - (cd build && |
| cmake -D CMAKE_BUILD_TYPE=$BUILD_TYPE |
| -D CMAKE_C_FLAGS_DEBUG="$DEBUG_FLAGS" |
| -D CMAKE_CXX_FLAGS_DEBUG="$DEBUG_FLAGS" |
| -D CMAKE_C_FLAGS_RELEASE="$RELEASE_FLAGS" |
| -D CMAKE_CXX_FLAGS_RELEASE="$RELEASE_FLAGS" |
| -D CMAKE_EXE_LINKER_FLAGS="$LINKER_FLAGS" |
| -D CMAKE_C_COMPILER=$CC |
| -D CMAKE_CXX_COMPILER=$CXX |
| -D USE_TCMALLOC=0 |
| -D VECTOR_COPY_ELISION_LEVEL=$VECTOR_COPY_ELISION_LEVEL ..) |
| |
| script: |
| - ./third_party/cpplint/lint_everything.py |
| - ./validate_cmakelists.py |
| - ./cyclic_dependency.py |
| - (cd build && make -j$MAKE_JOBS) |
| - (cd build && ctest --output-on-failure -j$TEST_JOBS) |
| |
| after_failure: |
| - df -h |
| - free -m |
| - dmesg |
| |
| # Besides pull requests, we want to continuously test pushes/merges to master. |
| branches: |
| only: |
| - master |
| |
| addons: |
| apt: |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-precise-3.7 |
| packages: |
| - gcc-4.9 |
| - g++-4.9 |
| - clang-3.7 |
| - libprotobuf-dev |
| - protobuf-compiler |
| - python-networkx |
| - libnuma-dev |
| |
| cache: |
| apt: true |