summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 69621cb9cd5c5e1a8f33096429aa3be90450b82c (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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
language: cpp
matrix:
  include:
    - compiler: clang
      env: SWIGLANG=
    - compiler: gcc
      env: SWIGLANG=
    - compiler: gcc
      env: SWIGLANG= GCC5=1 CPP11=1
    - compiler: gcc
      env: SWIGLANG= GCC5=1 CPP14=1
    - compiler: gcc
      env: SWIGLANG=csharp
    - compiler: gcc
      env: SWIGLANG=d
    - compiler: gcc
      env: SWIGLANG=go
    - compiler: gcc
      env: SWIGLANG=guile
    - compiler: gcc
      env: SWIGLANG=java
    - compiler: gcc
      env: SWIGLANG=javascript ENGINE=node
    - compiler: gcc
      env: SWIGLANG=javascript ENGINE=jsc
    - compiler: gcc
      env: SWIGLANG=javascript ENGINE=v8
    - compiler: gcc
      env: SWIGLANG=lua
    - compiler: gcc
      env: SWIGLANG=octave SWIGJOBS=-j3 # 3.2
    - compiler: gcc
      env: SWIGLANG=octave SWIGJOBS=-j3 VER=3.8
    - compiler: gcc
      env: SWIGLANG=octave SWIGJOBS=-j3 VER=4.0
    - compiler: gcc
      env: SWIGLANG=perl5
    - compiler: gcc
      env: SWIGLANG=php
    - compiler: gcc
      env: SWIGLANG=python VER=2.4
    - compiler: gcc
      env: SWIGLANG=python VER=2.5
    - compiler: gcc
      env: SWIGLANG=python VER=2.6
    - compiler: gcc
      env: SWIGLANG=python # 2.7
    - compiler: gcc
      env: SWIGLANG=python PY3=3 # 3.2
    - compiler: gcc
      env: SWIGLANG=python PY3=3 VER=3.3
    - compiler: gcc
      env: SWIGLANG=python PY3=3 VER=3.4
    - compiler: gcc
      env: SWIGLANG=python SWIG_FEATURES=-builtin
    - compiler: gcc
      env: SWIGLANG=python SWIG_FEATURES=-builtin PY3=3
    - compiler: gcc
      env: SWIGLANG=python SWIG_FEATURES=-O
    - compiler: gcc
      env: SWIGLANG=python SWIG_FEATURES=-classic
    - compiler: gcc
      env: SWIGLANG=r
    - compiler: gcc
      env: SWIGLANG=ruby
    - compiler: gcc
      env: SWIGLANG=scilab
    - compiler: gcc
      env: SWIGLANG=tcl
    - compiler: gcc
      env: SWIGLANG=csharp GCC5=1 CPP11=1
    - compiler: gcc
      env: SWIGLANG=java GCC5=1 CPP11=1
    - compiler: gcc
      env: SWIGLANG=python GCC5=1 CPP11=1
  allow_failures:
    # Lots of failing tests currently
    - compiler: gcc
      env: SWIGLANG=ocaml
    # Occasional gcc internal compiler error
    - compiler: gcc
      env: SWIGLANG=octave SWIGJOBS=-j3 VER=3.8
    # Occasional gcc internal compiler error
    - compiler: gcc
      env: SWIGLANG=octave SWIGJOBS=-j3 VER=4.0
    # Not quite working yet
    - compiler: gcc
      env: SWIGLANG=python SWIG_FEATURES=-classic
    # Not quite working yet
    - compiler: gcc
      env: SWIGLANG=python SWIG_FEATURES=-O
    # Runtime errors in Travis environment
    - compiler: gcc
      env: SWIGLANG=r
before_install:
  - date -u
  - uname -a
  - lsb_release -a
  - sudo apt-get -qq update
  - if test -n "$GCC5"; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt-get -qq update && sudo apt-get install -qq g++-5 && export CC=gcc-5 && export CXX=g++-5; fi
  - if test -z "$GCC5"; then sudo apt-get -qq install libboost-dev; fi
  - if test -n "$GCC5"; then sudo add-apt-repository -y ppa:boost-latest/ppa && sudo apt-get -qq update && sudo apt-get install -qq libboost1.55-dev; fi
  - if test -z "$SWIGLANG"; then sudo apt-get -qq install yodl; fi
  - if test "$SWIGLANG" = "csharp"; then sudo apt-get -qq install mono-devel; fi
  - if test "$SWIGLANG" = "d"; then wget http://downloads.dlang.org/releases/2014/dmd_2.066.0-0_amd64.deb; sudo dpkg -i dmd_2.066.0-0_amd64.deb; fi
  - if test "$SWIGLANG" = "go"; then go env | sed -e 's/^/export /' > goenvsetup && source goenvsetup && rm -f goenvsetup; fi # Until configure.ac is fixed
  - if test "$SWIGLANG" = "javascript" -a "$ENGINE" = "node"; then sudo apt-get install -qq rlwrap python-software-properties && echo 'yes' | sudo add-apt-repository ppa:chris-lea/node.js && sudo apt-get -qq update && sudo apt-get install -qq nodejs && sudo npm install -g node-gyp; fi
  - if test "$SWIGLANG" = "javascript" -a "$ENGINE" = "jsc"; then sudo apt-get install -qq libwebkitgtk-dev; fi
  - if test "$SWIGLANG" = "javascript" -a "$ENGINE" = "v8"; then sudo apt-get install -qq libv8-dev; fi
  - if test "$SWIGLANG" = "guile"; then sudo apt-get -qq install guile-2.0-dev; fi
  - if test "$SWIGLANG" = "lua"; then sudo apt-get -qq install lua5.1 liblua5.1-dev; fi
  # configure also looks for ocamldlgen, but this isn't packaged.  But it isn't used by default so this doesn't matter.
  - if test "$SWIGLANG" = "ocaml"; then sudo apt-get -qq install ocaml ocaml-findlib; fi
  - if test "$SWIGLANG" = "octave" -a -z "$VER"; then sudo apt-get -qq install octave3.2 octave3.2-headers; fi
  - if test "$SWIGLANG" = "octave" -a "$VER"; then sudo add-apt-repository -y ppa:kwwette/octaves && sudo apt-get -qq update && sudo apt-get -qq install liboctave${VER}-dev; fi
  - if test "$SWIGLANG" = "php"; then sudo apt-get install php5-cli php5-dev; fi
  - if test "$SWIGLANG" = "python"; then git clone https://github.com/jcrocholl/pep8.git && pushd pep8 && git checkout tags/1.5.7 && python ./setup.py build && sudo python ./setup.py install && popd; fi
  - if test "$SWIGLANG" = "python" -a "$PY3" -a -z "$VER"; then sudo apt-get install -qq python3-dev; fi
  - if test "$SWIGLANG" = "python" -a "$VER"; then sudo add-apt-repository -y ppa:fkrull/deadsnakes && sudo apt-get -qq update && sudo apt-get -qq install python${VER}-dev && CONFIGOPTS+=("--with-python${PY3}=python${VER}"); fi
  - if test "$SWIGLANG" = "r"; then sudo apt-get -qq install r-base; fi
  - if test "$SWIGLANG" = "scilab"; then sudo apt-get -qq install scilab; fi
  - if test "$SWIGLANG" = "tcl"; then sudo apt-get -qq install tcl8.4-dev; fi
  - if test -n "$CPP11"; then CONFIGOPTS+=(--enable-cpp11-testing --without-maximum-compile-warnings "CXXFLAGS=-std=c++11 -Wall -Wextra" "CFLAGS=-std=c11 -Wall -Wextra") && export CSTD=c11 && export CPPSTD=c++11; fi
  - if test -n "$CPP14"; then CONFIGOPTS+=(--enable-cpp11-testing --without-maximum-compile-warnings "CXXFLAGS=-std=c++14 -Wall -Wextra" "CFLAGS=-std=c11 -Wall -Wextra") && export CSTD=c11 && export CPPSTD=c++14; fi
  - $CC --version
  - $CXX --version
  # Stricter compile flags for examples. Various headers and SWIG generated code prevents full use of -pedantic.
  - if test -n "$SWIGLANG"; then export cflags=$(Tools/testflags.py --language $SWIGLANG --cflags --std=$CSTD) && echo $cflags; fi
  - if test -n "$SWIGLANG"; then export cxxflags=$(Tools/testflags.py --language $SWIGLANG --cxxflags --std=$CPPSTD) && echo $cxxflags; fi
script:
  - echo 'Configuring...' && echo -en 'travis_fold:start:script.1\\r'
  - if test -n "$SWIGLANG"; then CONFIGOPTS+=(--without-alllang --with-$SWIGLANG$PY3); fi
  - echo "${CONFIGOPTS[@]}"
  - ./autogen.sh && mkdir -p build/build && cd build/build && ../../configure "${CONFIGOPTS[@]}"
  - echo -en 'travis_fold:end:script.1\\r'
  - make -s $SWIGJOBS
  - ./swig -version && ./swig -pcreversion
  - if test -z "$SWIGLANG"; then make -s $SWIGJOBS check-ccache; fi
  - if test -z "$SWIGLANG"; then make -s $SWIGJOBS check-errors-test-suite; fi
  - echo 'Installing...' && echo -en 'travis_fold:start:script.2\\r'
  - if test -z "$SWIGLANG"; then sudo make -s install && swig -version && ccache-swig -V; fi
  - echo -en 'travis_fold:end:script.2\\r'
  - if test -n "$SWIGLANG"; then make -s check-$SWIGLANG-version; fi
  - if test -n "$SWIGLANG"; then make $SWIGJOBS check-$SWIGLANG-examples CFLAGS="$cflags" CXXFLAGS="$cxxflags"; fi
  - if test -n "$SWIGLANG"; then make $SWIGJOBS check-$SWIGLANG-test-suite CFLAGS="$cflags" CXXFLAGS="$cxxflags"; fi
  - echo 'Cleaning...' && echo -en 'travis_fold:start:script.3\\r'
  - make check-maintainer-clean && ../../configure $CONFIGOPTS
  - echo -en 'travis_fold:end:script.3\\r'
branches:
  only:
    - master