summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: a92ac8bf9f73def39b29ffcf191e1a059f24725a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Copyright (C) 2018 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the MIT license

language: cpp
dist: xenial

addons:
  apt:
    sources:
    # Clang 7:
      - llvm-toolchain-trusty-7
      - ubuntu-toolchain-r-test
    packages:
      - clang-7
      - cmake
      - lzip
    # Documentation:
      - doxygen
      - graphviz
      - qt4-dev-tools
      - qtchooser

script:
  - set -e
  - GTEST_VERSION=1.8.1
    ; GTEST_PREFIX=~/.local/
    ; wget https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz
    && tar xf release-${GTEST_VERSION}.tar.gz
    && ( cd googletest-release-${GTEST_VERSION}/
      && cmake
          -DBUILD_SHARED_LIBS=ON
          -DCVF_VERSION=${GTEST_VERSION}
          -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX}
          .
      && make
      && make install )
  - mkdir build
  - pushd build
  - compile_flags=(
        -pipe

        -O1
        -g
        -fsanitize=address
        -fno-omit-frame-pointer

        -Wall
        -Wextra
        -pedantic
    )
    && CFLAGS="${compile_flags[*]} -std=c89"
    && CXXFLAGS="${compile_flags[*]} -std=c++98"
    && LDFLAGS='-g -fsanitize=address'
    && cmake_args=(
        -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX}

        -Wdev
        -Werror=dev
        -Wdeprecated
        -Werror=deprecated

        -DCMAKE_C_COMPILER=clang-7
        -DCMAKE_CXX_COMPILER=clang++-7
        -DCMAKE_C_FLAGS="${CFLAGS}"
        -DCMAKE_CXX_FLAGS="${CXXFLAGS}"
        -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}"
        -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}"
        -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}"
    )
    && cmake "${cmake_args[@]}" -DCMAKE_INSTALL_INCLUDEDIR=include123 ..  # -Werror would fail checks!
  - make VERBOSE=1 C_FLAGS="${CFLAGS} -fPIC -Werror" CXX_FLAGS="${CXXFLAGS} -Werror" all
  - make VERBOSE=1 C_FLAGS="${CFLAGS} -fPIC -Werror" CXX_FLAGS="${CXXFLAGS} -Werror" test ARGS=--verbose
  - cat Testing/Temporary/LastTest.log
  - make install
  - ./doc/release.sh
  - make DESTDIR="${PWD}"/ROOT/ install
  - find ROOT | sort
  - popd
  - pushd cmake/test_find_package
  - cmake "${cmake_args[@]}" .
  - make VERBOSE=1
  - ./hello
  - popd
  - git fetch --tags --unshallow origin  # for "git describe" in make-distcheck.sh
  - ./make-distcheck.sh -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX}  # without AddressSanitizer
  - "! git status | fgrep -A100 'Untracked files:'  # works best at the very end"