ci: reorganise 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       - [libbsd-dev, libpcap-dev, libibverbs-dev, libcrypto++-dev, libfdt-dev, libjansson4]
19
20 _aarch64_packages: &aarch64_packages
21   - *required_packages
22   - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
23
24 _libabigail_build_packages: &libabigail_build_packages
25   - [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev]
26
27 _build_32b_packages: &build_32b_packages
28   - *required_packages
29   - [gcc-multilib]
30
31 _doc_packages: &doc_packages
32   - [doxygen, graphviz, python3-sphinx]
33
34 before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
35 script: ./.ci/${TRAVIS_OS_NAME}-build.sh
36
37 jobs:
38   include:
39   # x86_64 gcc jobs
40   - env: DEF_LIB="static"
41     arch: amd64
42     compiler: gcc
43   - env: DEF_LIB="shared" RUN_TESTS=1
44     arch: amd64
45     compiler: gcc
46   - env: DEF_LIB="shared" BUILD_DOCS=1
47     arch: amd64
48     compiler: gcc
49     addons:
50       apt:
51         packages:
52           - *required_packages
53           - *doc_packages
54   - env: DEF_LIB="shared" ABI_CHECKS=1
55     arch: amd64
56     compiler: gcc
57     addons:
58       apt:
59         packages:
60           - *required_packages
61           - *libabigail_build_packages
62   # x86_64 clang jobs
63   - env: DEF_LIB="static"
64     arch: amd64
65     compiler: clang
66   - env: DEF_LIB="shared" RUN_TESTS=1
67     arch: amd64
68     compiler: clang
69   - env: DEF_LIB="shared" BUILD_DOCS=1
70     arch: amd64
71     compiler: clang
72     addons:
73       apt:
74         packages:
75           - *required_packages
76           - *doc_packages
77   # x86_64 cross-compiling 32-bits jobs
78   - env: DEF_LIB="static" BUILD_32BIT=1
79     arch: amd64
80     compiler: gcc
81     addons:
82       apt:
83         packages:
84           - *build_32b_packages
85   # x86_64 cross-compiling aarch64 jobs
86   - env: DEF_LIB="static" AARCH64=1
87     arch: amd64
88     compiler: gcc
89     addons:
90       apt:
91         packages:
92           - *aarch64_packages
93   - env: DEF_LIB="shared" AARCH64=1
94     arch: amd64
95     compiler: gcc
96     addons:
97       apt:
98         packages:
99           - *aarch64_packages
100   # aarch64 gcc jobs
101   - env: DEF_LIB="static"
102     arch: arm64
103     compiler: gcc
104   - env: DEF_LIB="shared" BUILD_DOCS=1
105     arch: arm64
106     compiler: gcc
107     addons:
108       apt:
109         packages:
110           - *required_packages
111           - *doc_packages
112   - env: DEF_LIB="shared" ABI_CHECKS=1
113     arch: arm64
114     compiler: gcc
115     addons:
116       apt:
117         packages:
118           - *required_packages
119           - *libabigail_build_packages
120   # aarch64 clang jobs
121   - env: DEF_LIB="static"
122     arch: arm64
123     compiler: clang
124   - env: DEF_LIB="shared"
125     arch: arm64
126     compiler: clang