summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: f9a9460ffb3ab7e1780a3a782770db8febd6d26e (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
language: c
compiler:
  - gcc
  - clang

os:
  - linux
  - osx

dist: bionic

branches:
  only:
    - staging
    - trying
    - master
    - /^release\/.*$/

install:
    - if [ "$BITS" == "64" ]; then
        wget https://github.com/redis/redis/archive/6.0.6.tar.gz;
        tar -xzvf 6.0.6.tar.gz;
        pushd redis-6.0.6 && BUILD_TLS=yes make && export PATH=$PWD/src:$PATH && popd;
      fi

before_script:
    - if [ "$TRAVIS_OS_NAME" == "osx" ]; then
        curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.6.2-10.13-HighSierra.pkg;
        sudo installer -pkg MacPorts-2.6.2-10.13-HighSierra.pkg -target /;
        export PATH=$PATH:/opt/local/bin && sudo port -v selfupdate;
        sudo port -N install openssl redis;
      fi;

addons:
  apt:
    sources:
    - sourceline: 'ppa:chris-lea/redis-server'
    packages:
    - libc6-dbg
    - libc6-dev
    - libc6:i386
    - libc6-dev-i386
    - libc6-dbg:i386
    - gcc-multilib
    - g++-multilib
    - libssl-dev
    - libssl-dev:i386
    - valgrind
    - redis

env:
  - BITS="32"
  - BITS="64"

script:
  - EXTRA_CMAKE_OPTS="-DENABLE_EXAMPLES:BOOL=ON -DENABLE_SSL:BOOL=ON";
    if [ "$BITS" == "64" ]; then
      EXTRA_CMAKE_OPTS="$EXTRA_CMAKE_OPTS -DENABLE_SSL_TESTS:BOOL=ON";
    fi;
    if [ "$TRAVIS_OS_NAME" == "osx" ]; then
      if [ "$BITS" == "32" ]; then
        CFLAGS="-m32 -Werror";
        CXXFLAGS="-m32 -Werror";
        LDFLAGS="-m32";
        EXTRA_CMAKE_OPTS=;
      else
        CFLAGS="-Werror";
        CXXFLAGS="-Werror";
      fi;
    else
      TEST_PREFIX="valgrind --track-origins=yes --leak-check=full";
      if [ "$BITS" == "32" ]; then
        CFLAGS="-m32 -Werror";
        CXXFLAGS="-m32 -Werror";
        LDFLAGS="-m32";
        EXTRA_CMAKE_OPTS=;
      else
        CFLAGS="-Werror";
        CXXFLAGS="-Werror";
      fi;
    fi;
    export CFLAGS CXXFLAGS LDFLAGS TEST_PREFIX EXTRA_CMAKE_OPTS
  - make && make clean;
    if [ "$TRAVIS_OS_NAME" == "osx" ]; then
      if [ "$BITS" == "64" ]; then
        OPENSSL_PREFIX="$(ls -d /usr/local/Cellar/openssl@1.1/*)" USE_SSL=1 make;
      fi;
    else
      USE_SSL=1 make;
    fi;
  - mkdir build/ && cd build/
  - cmake .. ${EXTRA_CMAKE_OPTS}
  - make VERBOSE=1
  - if [ "$BITS" == "64" ]; then
      TEST_SSL=1 SKIPS_AS_FAILS=1 ctest -V;
    else
      SKIPS_AS_FAILS=1 ctest -V;
    fi;

jobs:
  include:
    # Windows MinGW cross compile on Linux
    - os: linux
      dist: xenial
      compiler: mingw
      addons:
        apt:
          packages:
            - ninja-build
            - gcc-mingw-w64-x86-64
            - g++-mingw-w64-x86-64
      script:
        - mkdir build && cd build
        - CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_WITH_INSTALL_RPATH=on
        - ninja -v

    # Windows MSVC 2017
    - os: windows
      compiler: msvc
      env:
        - MATRIX_EVAL="CC=cl.exe && CXX=cl.exe"
      before_install:
        - eval "${MATRIX_EVAL}"
      install:
        - choco install ninja
        - choco install -y memurai-developer
      script:
        - mkdir build && cd build
        - cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' amd64 '&&'
          cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DENABLE_EXAMPLES=ON '&&' ninja -v
        - ./hiredis-test.exe