ci: use an explicit list of Travis jobs
[dpdk.git] / .travis.yml
1 # default values for all jobs
2 language: c
3 cache:
4   ccache: true
5   directories:
6     - libabigail
7     - reference
8
9 dist: bionic
10
11 os: linux
12
13 addons:
14   apt:
15     update: true
16     packages: &required_packages
17       - [libnuma-dev, python3-setuptools, python3-wheel, python3-pip, ninja-build]
18
19 _aarch64_packages: &aarch64_packages
20   - *required_packages
21   - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
22
23 _extra_packages: &extra_packages
24   - *required_packages
25   - [libbsd-dev, libpcap-dev, libibverbs-dev, libcrypto++-dev, libfdt-dev, libjansson4]
26
27 _libabigail_build_packages: &libabigail_build_packages
28   - [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev]
29
30 _build_32b_packages: &build_32b_packages
31   - *required_packages
32   - [gcc-multilib]
33
34 _doc_packages: &doc_packages
35   - [doxygen, graphviz, python3-sphinx]
36
37 before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
38 script: ./.ci/${TRAVIS_OS_NAME}-build.sh
39
40 jobs:
41   include:
42   # x86_64 gcc jobs
43   - env: DEF_LIB="static"
44     arch: amd64
45     compiler: gcc
46   - env: DEF_LIB="shared"
47     arch: amd64
48     compiler: gcc
49   - env: DEF_LIB="shared" RUN_TESTS=1
50     arch: amd64
51     compiler: gcc
52   - env: DEF_LIB="static" EXTRA_PACKAGES=1
53     arch: amd64
54     compiler: gcc
55     addons:
56       apt:
57         packages:
58           - *extra_packages
59   - env: DEF_LIB="shared" EXTRA_PACKAGES=1 RUN_TESTS=1 BUILD_DOCS=1
60     arch: amd64
61     compiler: gcc
62     addons:
63       apt:
64         packages:
65           - *extra_packages
66           - *doc_packages
67   - env: DEF_LIB="shared" EXTRA_PACKAGES=1 ABI_CHECKS=1
68     arch: amd64
69     compiler: gcc
70     addons:
71       apt:
72         packages:
73           - *extra_packages
74           - *libabigail_build_packages
75   # x86_64 clang jobs
76   - env: DEF_LIB="static"
77     arch: amd64
78     compiler: clang
79   - env: DEF_LIB="shared"
80     arch: amd64
81     compiler: clang
82   - env: DEF_LIB="shared" RUN_TESTS=1
83     arch: amd64
84     compiler: clang
85   - env: DEF_LIB="static" EXTRA_PACKAGES=1
86     arch: amd64
87     compiler: clang
88     addons:
89       apt:
90         packages:
91           - *extra_packages
92   - env: DEF_LIB="shared" EXTRA_PACKAGES=1
93     arch: amd64
94     compiler: clang
95     addons:
96       apt:
97         packages:
98           - *extra_packages
99   - env: DEF_LIB="shared" EXTRA_PACKAGES=1 RUN_TESTS=1 BUILD_DOCS=1
100     arch: amd64
101     compiler: clang
102     addons:
103       apt:
104         packages:
105           - *extra_packages
106           - *doc_packages
107   # x86_64 cross-compiling 32-bits jobs
108   - env: DEF_LIB="static" BUILD_32BIT=1
109     arch: amd64
110     compiler: gcc
111     addons:
112       apt:
113         packages:
114           - *build_32b_packages
115   # x86_64 cross-compiling aarch64 jobs
116   - env: DEF_LIB="static" AARCH64=1
117     arch: amd64
118     compiler: gcc
119     addons:
120       apt:
121         packages:
122           - *aarch64_packages
123   - env: DEF_LIB="shared" AARCH64=1
124     arch: amd64
125     compiler: gcc
126     addons:
127       apt:
128         packages:
129           - *aarch64_packages
130   # aarch64 gcc jobs
131   - env: DEF_LIB="static"
132     arch: arm64
133     compiler: gcc
134   - env: DEF_LIB="shared"
135     arch: arm64
136     compiler: gcc
137   - env: DEF_LIB="shared" BUILD_DOCS=1
138     arch: arm64
139     compiler: gcc
140     addons:
141       apt:
142         packages:
143           - *required_packages
144           - *doc_packages
145   - env: DEF_LIB="shared" EXTRA_PACKAGES=1 ABI_CHECKS=1
146     arch: arm64
147     compiler: gcc
148     addons:
149       apt:
150         packages:
151           - *extra_packages
152           - *libabigail_build_packages
153   # aarch64 clang jobs
154   - env: DEF_LIB="static"
155     arch: arm64
156     compiler: clang
157   - env: DEF_LIB="shared"
158     arch: arm64
159     compiler: clang