1language: c
2
3matrix:
4  include:
5    - compiler: gcc-4.4
6      dist: trusty
7      env: PLATFORM=x86
8      addons:
9        apt:
10          packages:
11            - libc6-dev:i386
12            - gcc-4.4-multilib
13    - compiler: gcc-4.4
14      dist: trusty
15      env: PLATFORM=x86_64
16      addons:
17        apt:
18          packages:
19            - gcc-4.4
20    - compiler: gcc-4.6
21      dist: trusty
22      env: PLATFORM=x86
23      addons:
24        apt:
25          packages:
26            - libc6-dev:i386
27            - gcc-4.6-multilib
28    - compiler: gcc-4.6
29      dist: trusty
30      env: PLATFORM=x86_64
31      addons:
32        apt:
33          packages:
34            - gcc-4.6
35    - compiler: gcc-4.7
36      env: PLATFORM=x86
37      addons:
38        apt:
39          packages:
40            - libc6-dev:i386
41            - gcc-4.7-multilib
42    - compiler: gcc-4.7
43      env: PLATFORM=x86_64
44      addons:
45        apt:
46          packages:
47            - gcc-4.7
48    - compiler: gcc-4.8
49      env: PLATFORM=x86
50      addons:
51        apt:
52          packages:
53            - libc6-dev:i386
54            - gcc-4.8-multilib
55    - compiler: gcc-4.8
56      env: PLATFORM=x86_64
57      addons:
58        apt:
59          packages:
60            - gcc-4.8
61    - compiler: gcc-4.9
62      env: PLATFORM=x86
63      addons:
64        apt:
65          packages:
66            - libc6-dev:i386
67            - gcc-4.9-multilib
68    - compiler: gcc-4.9
69      env: PLATFORM=x86_64
70      addons:
71        apt:
72          packages:
73            - gcc-4.9
74    - compiler: gcc-5
75      env: PLATFORM=x86
76      addons:
77        apt:
78          packages:
79            - libc6-dev:i386
80            - gcc-5-multilib
81    - compiler: gcc-5
82      env: PLATFORM=x86_64
83      addons:
84        apt:
85          packages:
86            - gcc-5
87    - compiler: gcc-6
88      env: PLATFORM=x86
89      addons:
90        apt:
91          sources:
92            - ubuntu-toolchain-r-test
93          packages:
94            - libc6-dev:i386
95            - gcc-6-multilib
96    - compiler: gcc-6
97      env: PLATFORM=x86_64
98      addons:
99        apt:
100          sources:
101            - ubuntu-toolchain-r-test
102          packages:
103            - gcc-6
104    - compiler: gcc-7
105      dist: trusty
106      env: PLATFORM=x86
107      addons:
108        apt:
109          sources:
110            - ubuntu-toolchain-r-test
111          packages:
112            - libc6-dev:i386
113            - gcc-7-multilib
114    - compiler: gcc-7
115      dist: trusty
116      env: PLATFORM=x86_64
117      addons:
118        apt:
119          sources:
120            - ubuntu-toolchain-r-test
121          packages:
122            - gcc-7
123    - compiler: gcc-8
124      dist: trusty
125      env: PLATFORM=x86
126      addons:
127        apt:
128          sources:
129            - ubuntu-toolchain-r-test
130          packages:
131            - libc6-dev:i386
132            - gcc-8-multilib
133    - compiler: gcc-8
134      dist: trusty
135      env: PLATFORM=x86_64
136      addons:
137        apt:
138          sources:
139            - ubuntu-toolchain-r-test
140          packages:
141            - gcc-8
142    - compiler: gcc-9
143      dist: trusty
144      env: PLATFORM=x86
145      addons:
146        apt:
147          sources:
148            - ubuntu-toolchain-r-test
149          packages:
150            - libc6-dev:i386
151            - gcc-9-multilib
152    - compiler: gcc-9
153      dist: trusty
154      env: PLATFORM=x86_64
155      addons:
156        apt:
157          sources:
158            - ubuntu-toolchain-r-test
159          packages:
160            - gcc-9
161    - compiler: clang-3.3
162      dist: trusty
163      env: PLATFORM=x86
164      addons:
165        apt:
166          packages:
167            - libc6-dev:i386
168            - clang-3.3
169            - gcc-multilib
170    - compiler: clang-3.3
171      dist: trusty
172      env: PLATFORM=x86_64
173      addons:
174        apt:
175          packages:
176            - clang-3.3
177    - compiler: clang-3.4
178      dist: trusty
179      env: PLATFORM=x86
180      addons:
181        apt:
182          packages:
183            - libc6-dev:i386
184            - clang-3.4
185            - gcc-multilib
186    - compiler: clang-3.4
187      dist: trusty
188      env: PLATFORM=x86_64
189      addons:
190        apt:
191          packages:
192            - clang-3.4
193    - compiler: clang-3.5
194      env: PLATFORM=x86
195      addons:
196        apt:
197          packages:
198            - libc6-dev:i386
199            - clang-3.5
200            - gcc-multilib
201    - compiler: clang-3.5
202      env: PLATFORM=x86_64
203      addons:
204        apt:
205          packages:
206            - clang-3.5
207    - compiler: clang-3.6
208      env: PLATFORM=x86
209      addons:
210        apt:
211          packages:
212            - libc6-dev:i386
213            - clang-3.6
214            - gcc-multilib
215    - compiler: clang-3.6
216      env: PLATFORM=x86_64
217      addons:
218        apt:
219          packages:
220            - clang-3.6
221    - compiler: clang-3.7
222      env: PLATFORM=x86
223      addons:
224        apt:
225          packages:
226            - libc6-dev:i386
227            - clang-3.7
228            - gcc-multilib
229    - compiler: clang-3.7
230      env: PLATFORM=x86_64
231      addons:
232        apt:
233          packages:
234            - clang-3.7
235    - compiler: clang-3.8
236      env: PLATFORM=x86
237      addons:
238        apt:
239          packages:
240            - libc6-dev:i386
241            - clang-3.8
242            - gcc-multilib
243    - compiler: clang-3.8
244      env: PLATFORM=x86_64
245      addons:
246        apt:
247          packages:
248            - clang-3.8
249    - compiler: clang-3.9
250      env: PLATFORM=x86
251      addons:
252        apt:
253          packages:
254            - libc6-dev:i386
255            - clang-3.9
256            - gcc-multilib
257    - compiler: clang-3.9
258      env: PLATFORM=x86_64
259      addons:
260        apt:
261          packages:
262            - clang-3.9
263    - compiler: clang-4.0
264      env: PLATFORM=x86
265      addons:
266        apt:
267          packages:
268            - libc6-dev:i386
269            - clang-4.0
270            - gcc-multilib
271    - compiler: clang-4.0
272      env: PLATFORM=x86_64
273      addons:
274        apt:
275          packages:
276            - clang-4.0
277    - compiler: clang-5.0
278      env: PLATFORM=x86
279      addons:
280        apt:
281          packages:
282            - libc6-dev:i386
283            - clang-5.0
284            - gcc-multilib
285    - compiler: clang-5.0
286      env: PLATFORM=x86_64
287      addons:
288        apt:
289          packages:
290            - clang-5.0
291    - compiler: clang-6.0
292      env: PLATFORM=x86
293      addons:
294        apt:
295          packages:
296            - libc6-dev:i386
297            - clang-6.0
298            - gcc-multilib
299    - compiler: clang-6.0
300      env: PLATFORM=x86_64
301      addons:
302        apt:
303          packages:
304            - clang-6.0
305    - compiler: clang-7
306      dist: xenial
307      env: PLATFORM=x86
308      addons:
309        apt:
310          sources:
311            - llvm-toolchain-xenial-7
312          packages:
313            - libc6-dev:i386
314            - clang-7
315            - gcc-multilib
316    - compiler: clang-7
317      dist: xenial
318      env: PLATFORM=x86_64
319      addons:
320        apt:
321          sources:
322            - llvm-toolchain-xenial-7
323          packages:
324            - clang-7
325    - compiler: clang-8
326      dist: xenial
327      env: PLATFORM=x86
328      addons:
329        apt:
330          sources:
331            - llvm-toolchain-xenial-8
332          packages:
333            - libc6-dev:i386
334            - clang-8
335            - gcc-multilib
336    - compiler: clang-8
337      dist: xenial
338      env: PLATFORM=x86_64
339      addons:
340        apt:
341          sources:
342            - llvm-toolchain-xenial-8
343          packages:
344            - clang-8
345    - compiler: clang-9
346      dist: xenial
347      env: PLATFORM=x86
348      addons:
349        apt:
350          sources:
351            - sourceline: 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
352              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
353          packages:
354            - libc6-dev:i386
355            - clang-9
356            - gcc-multilib
357    - compiler: clang-9
358      dist: xenial
359      env: PLATFORM=x86_64
360      addons:
361        apt:
362          sources:
363            - sourceline: 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
364              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
365          packages:
366            - clang-9
367    - compiler: gcc
368      dist: precise
369      env: PLATFORM=x86
370           DIST=precise
371      addons:
372        apt:
373          packages:
374            - libc6-dev:i386
375            - gcc-multilib
376    - compiler: gcc
377      dist: precise
378      env: PLATFORM=x86_64
379           DIST=precise
380    - compiler: gcc
381      dist: trusty
382      env: PLATFORM=x86
383           DIST=trusty
384      addons:
385        apt:
386          packages:
387            - libc6-dev:i386
388            - gcc-multilib
389    - compiler: gcc
390      dist: trusty
391      env: PLATFORM=x86_64
392           DIST=trusty
393    - compiler: gcc
394      dist: xenial
395      env: PLATFORM=x86
396           DIST=xenial
397      addons:
398        apt:
399          packages:
400            - libc6-dev:i386
401            - gcc-multilib
402    - compiler: gcc
403      dist: xenial
404      env: PLATFORM=x86_64
405           DIST=xenial
406    - compiler: gcc
407      dist: bionic
408      env: PLATFORM=x86
409           DIST=bionic
410      addons:
411        apt:
412          packages:
413            - libc6-dev:i386
414            - gcc-multilib
415    - compiler: gcc
416      dist: bionic
417      env: PLATFORM=x86_64
418           DIST=bionic
419    - compiler: gcc
420      dist: precise
421      env: PLATFORM=x86
422           DIST=precise
423           NOOPT=1
424      addons:
425        apt:
426          packages:
427            - libc6-dev:i386
428            - gcc-multilib
429    - compiler: gcc
430      dist: precise
431      env: PLATFORM=x86_64
432           DIST=precise
433           NOOPT=1
434    - compiler: gcc
435      dist: trusty
436      env: PLATFORM=x86
437           DIST=trusty
438           NOOPT=1
439      addons:
440        apt:
441          packages:
442            - libc6-dev:i386
443            - gcc-multilib
444    - compiler: gcc
445      dist: trusty
446      env: PLATFORM=x86_64
447           DIST=trusty
448           NOOPT=1
449    - compiler: gcc
450      dist: xenial
451      env: PLATFORM=x86
452           DIST=xenial
453           NOOPT=1
454      addons:
455        apt:
456          packages:
457            - libc6-dev:i386
458            - gcc-multilib
459    - compiler: gcc
460      dist: xenial
461      env: PLATFORM=x86_64
462           DIST=xenial
463           NOOPT=1
464    - compiler: gcc
465      dist: bionic
466      env: PLATFORM=x86
467           DIST=bionic
468           NOOPT=1
469      addons:
470        apt:
471          packages:
472            - libc6-dev:i386
473            - gcc-multilib
474    - compiler: gcc
475      dist: bionic
476      env: PLATFORM=x86_64
477           DIST=bionic
478           NOOPT=1
479    - compiler: clang
480      dist: precise
481      env: PLATFORM=x86
482           DIST=precise
483      addons:
484        apt:
485          packages:
486            - libc6-dev:i386
487            - gcc-multilib
488    - compiler: clang
489      dist: precise
490      env: PLATFORM=x86_64
491           DIST=precise
492    - compiler: clang
493      dist: trusty
494      env: PLATFORM=x86
495           DIST=trusty
496      addons:
497        apt:
498          packages:
499            - libc6-dev:i386
500            - gcc-multilib
501    - compiler: clang
502      dist: trusty
503      env: PLATFORM=x86_64
504           DIST=trusty
505    - compiler: clang
506      dist: xenial
507      env: PLATFORM=x86
508           DIST=xenial
509      addons:
510        apt:
511          packages:
512            - libc6-dev:i386
513            - gcc-multilib
514    - compiler: clang
515      dist: xenial
516      env: PLATFORM=x86_64
517           DIST=xenial
518    - compiler: clang
519      dist: bionic
520      env: PLATFORM=x86
521           DIST=bionic
522      addons:
523        apt:
524          packages:
525            - libc6-dev:i386
526            - gcc-multilib
527    - compiler: clang
528      dist: bionic
529      env: PLATFORM=x86_64
530           DIST=bionic
531    - compiler: clang
532      dist: precise
533      env: PLATFORM=x86
534           DIST=precise
535           NOOPT=1
536      addons:
537        apt:
538          packages:
539            - libc6-dev:i386
540            - gcc-multilib
541    - compiler: clang
542      dist: precise
543      env: PLATFORM=x86_64
544           DIST=precise
545           NOOPT=1
546    - compiler: clang
547      dist: trusty
548      env: PLATFORM=x86
549           DIST=trusty
550           NOOPT=1
551      addons:
552        apt:
553          packages:
554            - libc6-dev:i386
555            - gcc-multilib
556    - compiler: clang
557      dist: trusty
558      env: PLATFORM=x86_64
559           DIST=trusty
560           NOOPT=1
561    - compiler: clang
562      dist: xenial
563      env: PLATFORM=x86
564           DIST=xenial
565           NOOPT=1
566      addons:
567        apt:
568          packages:
569            - libc6-dev:i386
570            - gcc-multilib
571    - compiler: clang
572      dist: xenial
573      env: PLATFORM=x86_64
574           DIST=xenial
575           NOOPT=1
576    - compiler: clang
577      dist: bionic
578      env: PLATFORM=x86
579           DIST=bionic
580           NOOPT=1
581      addons:
582        apt:
583          packages:
584            - libc6-dev:i386
585            - gcc-multilib
586    - compiler: clang
587      dist: bionic
588      env: PLATFORM=x86_64
589           DIST=bionic
590           NOOPT=1
591    - compiler: tcc
592      dist: precise
593      env: PLATFORM=x86_64
594           DIST=precise
595      addons:
596        apt:
597          packages:
598            - tcc
599    - compiler: tcc
600      dist: trusty
601      env: PLATFORM=x86_64
602           DIST=trusty
603      addons:
604        apt:
605          packages:
606            - tcc
607    - compiler: tcc
608      dist: xenial
609      env: PLATFORM=x86_64
610           DIST=xenial
611      addons:
612        apt:
613          packages:
614            - tcc
615    - compiler: tcc
616      dist: bionic
617      env: PLATFORM=x86_64
618           DIST=bionic
619      addons:
620        apt:
621          packages:
622            - tcc
623    - compiler: gcc
624      dist: trusty
625      env: PLATFORM=x32
626      addons:
627        apt:
628          packages:
629            - libc6-dev-x32
630            - gcc-multilib
631    - compiler: powerpc-linux-gnu-gcc
632      dist: trusty
633      env: PLATFORM=powerpc
634      addons:
635        apt:
636          packages:
637            - gcc-powerpc-linux-gnu
638            - libc6-dev-powerpc-cross
639            - qemu-user
640    - compiler: arm-linux-gnueabi-gcc
641      dist: trusty
642      env: PLATFORM=arm
643      addons:
644        apt:
645          packages:
646            - gcc-arm-linux-gnueabi
647            - libc6-dev-armel-cross
648            - qemu-user
649
650before_script:
651  - if ! which "$CC" &>/dev/null; then export CC=${CC%%-*}; fi
652  - export CFLAGS="-W -Wall -Werror -g"
653  - if [ -z "$NOOPT" ]; then export CFLAGS="$CFLAGS -O2"; fi
654  - if [[ "$CC" =~ "gcc" && "$CC" != "gcc-4.4" ]]; then export CFLAGS="$CFLAGS -Wno-error=unused-but-set-variable"; fi # needed for AC_PROG_CC_C99
655  - case "$PLATFORM" in
656      "x86")       export CFLAGS="-m32 $CFLAGS" ;;
657      "x86_64"|"") ;;
658      "x32")       export CFLAGS="-mx32 $CFLAGS"; export LDFLAGS="--static" ;;
659      "powerpc")   export CONFIGURE_FLAGS="--host=powerpc-linux-gnu"; export LDFLAGS="--static" ;;
660      "arm")       export CONFIGURE_FLAGS="--host=arm-linux-gnueabi"; export LDFLAGS="--static" ;;
661      *)           echo "Unsupported platform '$PLATFORM'"; exit 1 ;;
662    esac
663
664script:
665  - ./autogen.sh
666  - ./configure $CONFIGURE_FLAGS
667  - make
668