1349559Sdeslanguage: c
2366095Scy
3366095Scygit:
4366095Scy  depth: 5
5366095Scy
6349559Sdesaddons:
7349559Sdes  apt:
8349559Sdes    packages:
9349559Sdes    - libssl-dev
10349559Sdes    - libevent-dev
11349559Sdes    - libexpat-dev
12349559Sdes    - clang
13366095Scy  homebrew:
14366095Scy    packages:
15366095Scy      - openssl
16366095Scy      - libevent
17366095Scy      - expat
18366095Scy    update: true
19366095Scy
20366095Scyjobs:
21366095Scy  include:
22366095Scy    - os: linux
23366095Scy      name: GCC on Linux, Amd64
24366095Scy      compiler: gcc
25366095Scy      arch: amd64
26366095Scy      env:
27366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
28366095Scy    - os: linux
29366095Scy      name: Clang on Linux, Amd64
30366095Scy      compiler: clang
31366095Scy      arch: amd64
32366095Scy      env:
33366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
34366095Scy    - os: osx
35366095Scy      name: Clang on OS X, Amd64
36366095Scy      compiler: clang
37366095Scy      arch: amd64
38366095Scy      env:
39366095Scy        - TEST_OSX=yes
40366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl/"
41366095Scy    - os: linux
42366095Scy      name: Libevent, GCC on Linux, Amd64
43366095Scy      compiler: gcc
44366095Scy      arch: amd64
45366095Scy      env:
46366095Scy        - TEST_LIBEVENT=yes
47366095Scy        - CONFIG_OPTS="--with-libevent"
48366095Scy    - os: linux
49366095Scy      name: Libevent, Clang on Linux, Amd64
50366095Scy      compiler: clang
51366095Scy      arch: amd64
52366095Scy      env:
53366095Scy        - TEST_LIBEVENT=yes
54366095Scy        - CONFIG_OPTS="--with-libevent"
55366095Scy    - os: osx
56366095Scy      name: Libevent, Clang on OS X, Amd64
57366095Scy      compiler: clang
58366095Scy      arch: amd64
59366095Scy      env:
60366095Scy        - TEST_OSX=yes
61366095Scy        - TEST_LIBEVENT=yes
62366095Scy        - CONFIG_OPTS="--with-ssl=/usr/local/opt/openssl/ --with-libevent=/usr/local/opt/libevent/"
63366095Scy    - os: linux
64366095Scy      name: UBsan, GCC on Linux, Amd64
65366095Scy      compiler: gcc
66366095Scy      arch: amd64
67366095Scy      dist: bionic
68366095Scy      env:
69366095Scy        - TEST_UBSAN=yes
70366095Scy    - os: linux
71366095Scy      name: UBsan, Clang on Linux, Amd64
72366095Scy      compiler: clang
73366095Scy      arch: amd64
74366095Scy      dist: bionic
75366095Scy      env:
76366095Scy        - TEST_UBSAN=yes
77366095Scy    - os: linux
78366095Scy      name: Asan, GCC on Linux, Amd64
79366095Scy      compiler: gcc
80366095Scy      arch: amd64
81366095Scy      dist: bionic
82366095Scy      env:
83366095Scy        - TEST_ASAN=yes
84366095Scy    - os: linux
85366095Scy      name: Asan, Clang on Linux, Amd64
86366095Scy      compiler: clang
87366095Scy      arch: amd64
88366095Scy      dist: bionic
89366095Scy      env:
90366095Scy        - TEST_ASAN=yes
91366095Scy    - os: linux
92366095Scy      name: GCC on Linux, Aarch64
93366095Scy      compiler: gcc
94366095Scy      arch: arm64
95366095Scy      dist: bionic
96366095Scy      env:
97366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
98366095Scy    - os: linux
99366095Scy      name: Clang on Linux, Aarch64
100366095Scy      compiler: clang
101366095Scy      arch: arm64
102366095Scy      dist: bionic
103366095Scy      env:
104366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
105366095Scy    - os: linux
106366095Scy      name: GCC on Linux, PowerPC64
107366095Scy      compiler: gcc
108366095Scy      arch: ppc64le
109366095Scy      dist: bionic
110366095Scy      env:
111366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
112366095Scy    - os: linux
113366095Scy      name: Clang on Linux, PowerPC64
114366095Scy      compiler: clang
115366095Scy      arch: ppc64le
116366095Scy      dist: bionic
117366095Scy      env:
118366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
119366095Scy    - os: linux
120366095Scy      name: GCC on Linux, s390x
121366095Scy      compiler: gcc
122366095Scy      arch: s390x
123366095Scy      dist: bionic
124366095Scy      env:
125366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
126366095Scy    - os: linux
127366095Scy      name: Clang on Linux, s390x
128366095Scy      compiler: clang
129366095Scy      arch: s390x
130366095Scy      dist: bionic
131366095Scy      env:
132366095Scy        - CONFIG_OPTS="--enable-debug --disable-flto"
133366095Scy    - os: osx
134366095Scy      osx_image: xcode10
135366095Scy      name: Apple iPhone on iOS, armv7
136366095Scy      compiler: clang
137366095Scy      env:
138366095Scy        - TEST_IOS=yes
139366095Scy        - AUTOTOOLS_HOST=armv7-apple-ios
140366095Scy        - OPENSSL_HOST=ios-cross
141366095Scy        - IOS_SDK=iPhoneOS
142366095Scy        - IOS_CPU=armv7s
143366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
144366095Scy    - os: osx
145366095Scy      osx_image: xcode10
146366095Scy      name: Apple iPhone on iOS, arm64
147366095Scy      compiler: clang
148366095Scy      env:
149366095Scy        - TEST_IOS=yes
150366095Scy        - AUTOTOOLS_HOST=aarch64-apple-ios
151366095Scy        - OPENSSL_HOST=ios64-cross
152366095Scy        - IOS_SDK=iPhoneOS
153366095Scy        - IOS_CPU=arm64
154366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
155366095Scy    - os: osx
156366095Scy      osx_image: xcode10
157366095Scy      name: Apple TV on iOS, arm64
158366095Scy      compiler: clang
159366095Scy      env:
160366095Scy        - TEST_IOS=yes
161366095Scy        - AUTOTOOLS_HOST=aarch64-apple-ios
162366095Scy        - OPENSSL_HOST=ios64-cross
163366095Scy        - IOS_SDK=AppleTVOS
164366095Scy        - IOS_CPU=arm64
165366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
166366095Scy    - os: osx
167366095Scy      osx_image: xcode10
168366095Scy      name: Apple Watch on iOS, armv7
169366095Scy      compiler: clang
170366095Scy      env:
171366095Scy        - TEST_IOS=yes
172366095Scy        - AUTOTOOLS_HOST=armv7-apple-ios
173366095Scy        - OPENSSL_HOST=ios-cross
174366095Scy        - IOS_SDK=WatchOS
175366095Scy        - IOS_CPU=armv7k
176366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
177366095Scy    - os: osx
178366095Scy      osx_image: xcode10
179366095Scy      name: iPhoneSimulator on OS X, i386
180366095Scy      env:
181366095Scy        - TEST_IOS=yes
182366095Scy        - AUTOTOOLS_HOST=i386-apple-ios
183366095Scy        - OPENSSL_HOST=iphoneos-cross
184366095Scy        - IOS_CPU=i386
185366095Scy        - IOS_SDK=iPhoneSimulator
186366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
187366095Scy    - os: osx
188366095Scy      osx_image: xcode10
189366095Scy      name: iPhoneSimulator on OS X, x86_64
190366095Scy      env:
191366095Scy        - TEST_IOS=yes
192366095Scy        - AUTOTOOLS_HOST=x86_64-apple-ios
193366095Scy        - OPENSSL_HOST=iphoneos-cross
194366095Scy        - IOS_CPU=x86_64
195366095Scy        - IOS_SDK=iPhoneSimulator
196366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
197366095Scy    - os: osx
198366095Scy      osx_image: xcode10
199366095Scy      name: AppleTVSimulator on OS X, x86_64
200366095Scy      env:
201366095Scy        - TEST_IOS=yes
202366095Scy        - AUTOTOOLS_HOST=x86_64-apple-ios
203366095Scy        - OPENSSL_HOST=iphoneos-cross
204366095Scy        - IOS_CPU=x86_64
205366095Scy        - IOS_SDK=AppleTVSimulator
206366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
207366095Scy    - os: osx
208366095Scy      osx_image: xcode10
209366095Scy      name: WatchSimulator on OS X, i386
210366095Scy      env:
211366095Scy        - TEST_IOS=yes
212366095Scy        - AUTOTOOLS_HOST=i386-apple-ios
213366095Scy        - OPENSSL_HOST=iphoneos-cross
214366095Scy        - IOS_CPU=i386
215366095Scy        - IOS_SDK=WatchSimulator
216366095Scy        - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
217366095Scy    - os: linux
218366095Scy      name: Android armv7a, Linux, Amd64
219366095Scy      compiler: clang
220366095Scy      arch: amd64
221366095Scy      dist: bionic
222366095Scy      env:
223366095Scy        - TEST_ANDROID=yes
224366095Scy        - AUTOTOOLS_HOST=armv7a-linux-androideabi
225366095Scy        - OPENSSL_HOST=android-arm
226366095Scy        - ANDROID_CPU=armv7a
227366095Scy        - ANDROID_API=23
228366095Scy        - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
229366095Scy        - ANDROID_SDK_ROOT="$HOME/android-sdk"
230366095Scy        - ANDROID_NDK_ROOT="$HOME/android-ndk"
231366095Scy    - os: linux
232366095Scy      name: Android aarch64, Linux, Amd64
233366095Scy      compiler: clang
234366095Scy      arch: amd64
235366095Scy      dist: bionic
236366095Scy      env:
237366095Scy        - TEST_ANDROID=yes
238366095Scy        - AUTOTOOLS_HOST=aarch64-linux-android
239366095Scy        - OPENSSL_HOST=android-arm64
240366095Scy        - ANDROID_CPU=aarch64
241366095Scy        - ANDROID_API=23
242366095Scy        - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
243366095Scy        - ANDROID_SDK_ROOT="$HOME/android-sdk"
244366095Scy        - ANDROID_NDK_ROOT="$HOME/android-ndk"
245366095Scy    - os: linux
246366095Scy      name: Android x86, Linux, Amd64
247366095Scy      compiler: clang
248366095Scy      arch: amd64
249366095Scy      dist: bionic
250366095Scy      env:
251366095Scy        - TEST_ANDROID=yes
252366095Scy        - AUTOTOOLS_HOST=i686-linux-android
253366095Scy        - OPENSSL_HOST=android-x86
254366095Scy        - ANDROID_CPU=x86
255366095Scy        - ANDROID_API=23
256366095Scy        - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
257366095Scy        - ANDROID_SDK_ROOT="$HOME/android-sdk"
258366095Scy        - ANDROID_NDK_ROOT="$HOME/android-ndk"
259366095Scy    - os: linux
260366095Scy      name: Android x86_64, Linux, Amd64
261366095Scy      compiler: clang
262366095Scy      arch: amd64
263366095Scy      dist: bionic
264366095Scy      env:
265366095Scy        - TEST_ANDROID=yes
266366095Scy        - AUTOTOOLS_HOST=x86_64-linux-android
267366095Scy        - OPENSSL_HOST=android-x86_64
268366095Scy        - ANDROID_CPU=x86_64
269366095Scy        - ANDROID_API=23
270366095Scy        - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
271366095Scy        - ANDROID_SDK_ROOT="$HOME/android-sdk"
272366095Scy        - ANDROID_NDK_ROOT="$HOME/android-ndk"
273366095Scy
274366095Scy  allow_failures:
275366095Scy    - os: linux
276366095Scy      name: Android armv7a, Linux, Amd64
277366095Scy    - os: linux
278366095Scy      name: Android aarch64, Linux, Amd64
279366095Scy    - os: linux
280366095Scy      name: Android x86, Linux, Amd64
281366095Scy    - os: linux
282366095Scy      name: Android x86_64, Linux, Amd64
283366095Scy
284366095Scybefore_script:
285366095Scy  - |
286366095Scy    if [ "$TEST_ANDROID" = "yes" ]; then
287366095Scy      ./contrib/android/install_tools.sh
288366095Scy    elif [ "$TEST_IOS" = "yes" ]; then
289366095Scy      ./contrib/ios/install_tools.sh
290366095Scy    fi
291366095Scy
292366095Scy# The Travis docs say to avoid calling exit in the script. It leads to
293366095Scy# some code duplication to avoid failures in cross-compiles. Also see
294366095Scy# https://docs.travis-ci.com/user/job-lifecycle/ in the Travis docs.
295349559Sdesscript:
296366095Scy  - |
297366095Scy    if [ "$TEST_UBSAN" = "yes" ]; then
298366095Scy      export CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover"
299366095Scy      ./configure
300366095Scy      make -j 2
301366095Scy      make test
302366095Scy    elif [ "$TEST_ASAN" = "yes" ]; then
303366095Scy      export CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address"
304366095Scy      ./configure
305366095Scy      make -j 2
306366095Scy      make test
307366095Scy    elif [ "$TEST_IOS" = "yes" ]; then
308366095Scy      export AUTOTOOLS_BUILD="$(./config.guess)"
309366095Scy      export PKG_CONFIG_PATH="$IOS_PREFIX/lib/pkgconfig"
310366095Scy      source ./contrib/ios/setenv_ios.sh
311366095Scy      ./contrib/ios/install_openssl.sh
312366095Scy      ./contrib/ios/install_expat.sh
313366095Scy      ./configure \
314366095Scy        --build="$AUTOTOOLS_BUILD" --host="$AUTOTOOLS_HOST" \
315366095Scy        --prefix="$IOS_PREFIX" \
316366095Scy        --with-ssl="$IOS_PREFIX" --disable-gost \
317366095Scy        --with-libexpat="$IOS_PREFIX";
318366095Scy      make -j 2
319366095Scy      make install
320366095Scy    elif [ "$TEST_ANDROID" = "yes" ]; then
321366095Scy      export AUTOTOOLS_BUILD="$(./config.guess)"
322366095Scy      export PKG_CONFIG_PATH="$ANDROID_PREFIX/lib/pkgconfig"
323366095Scy      ./contrib/android/install_ndk.sh
324366095Scy      source ./contrib/android/setenv_android.sh
325366095Scy      ./contrib/android/install_openssl.sh
326366095Scy      ./contrib/android/install_expat.sh
327366095Scy      ./configure \
328366095Scy        --build="$AUTOTOOLS_BUILD" --host="$AUTOTOOLS_HOST" \
329366095Scy        --prefix="$ANDROID_PREFIX" \
330366095Scy        --with-ssl="$ANDROID_PREFIX" --disable-gost \
331366095Scy        --with-libexpat="$ANDROID_PREFIX";
332366095Scy      make -j 2
333366095Scy      make install
334366095Scy    elif [ "$TEST_OSX" = "yes" ]; then
335366095Scy      ./configure --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl/
336366095Scy      make -j 2
337366095Scy      make test
338366095Scy      (cd testdata/clang-analysis.tdir; bash clang-analysis.test)
339366095Scy    else
340366095Scy      ./configure ${CONFIG_OPTS}
341366095Scy      make -j 2
342366095Scy      make test
343366095Scy      (cd testdata/clang-analysis.tdir; bash clang-analysis.test)
344366095Scy    fi
345