ci: add aarch64 clang cross-compilation Travis builds
[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, python3-pyelftools, ninja-build]
18       - [libbsd-dev, libpcap-dev, libibverbs-dev, libcrypto++-dev, libfdt-dev, libjansson-dev]
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 _aarch64_clang_packages: &aarch64_clang_packages
25   - *required_packages
26   - [libgcc-7-dev-arm64-cross, libatomic1-arm64-cross, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
27
28 _libabigail_build_packages: &libabigail_build_packages
29   - [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev]
30
31 _build_32b_packages: &build_32b_packages
32   - *required_packages
33   - [gcc-multilib]
34
35 _doc_packages: &doc_packages
36   - [doxygen, graphviz, python3-sphinx]
37
38 before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
39 script: ./.ci/${TRAVIS_OS_NAME}-build.sh
40
41 env:
42   global:
43     - LIBABIGAIL_VERSION=libabigail-1.8
44     - REF_GIT_TAG=v20.11
45
46 jobs:
47   include:
48   # x86_64 gcc jobs
49   - env: DEF_LIB="static"
50     arch: amd64
51     compiler: gcc
52   - env: DEF_LIB="shared" RUN_TESTS=true
53     arch: amd64
54     compiler: gcc
55   - env: DEF_LIB="shared" BUILD_DOCS=true
56     arch: amd64
57     compiler: gcc
58     addons:
59       apt:
60         packages:
61           - *required_packages
62           - *doc_packages
63   - env: DEF_LIB="shared" ABI_CHECKS=true
64     arch: amd64
65     compiler: gcc
66     addons:
67       apt:
68         packages:
69           - *required_packages
70           - *libabigail_build_packages
71   # x86_64 clang jobs
72   - env: DEF_LIB="static"
73     arch: amd64
74     compiler: clang
75   - env: DEF_LIB="shared" RUN_TESTS=true
76     arch: amd64
77     compiler: clang
78   - env: DEF_LIB="shared" BUILD_DOCS=true
79     arch: amd64
80     compiler: clang
81     addons:
82       apt:
83         packages:
84           - *required_packages
85           - *doc_packages
86   # x86_64 cross-compiling 32-bits jobs
87   - env: DEF_LIB="static" BUILD_32BIT=true
88     arch: amd64
89     compiler: gcc
90     addons:
91       apt:
92         packages:
93           - *build_32b_packages
94   # x86_64 cross-compiling aarch64 jobs
95   - env: DEF_LIB="static" AARCH64=true
96     arch: amd64
97     compiler: gcc
98     addons:
99       apt:
100         packages:
101           - *aarch64_packages
102   - env: DEF_LIB="shared" AARCH64=true
103     arch: amd64
104     compiler: gcc
105     addons:
106       apt:
107         packages:
108           - *aarch64_packages
109   - env: DEF_LIB="static" AARCH64=true
110     arch: amd64
111     compiler: clang
112     addons:
113       apt:
114         packages:
115           - *aarch64_clang_packages
116   - env: DEF_LIB="shared" AARCH64=true
117     arch: amd64
118     compiler: clang
119     addons:
120       apt:
121         packages:
122           - *aarch64_clang_packages
123   # aarch64 gcc jobs
124   - env: DEF_LIB="static"
125     arch: arm64
126     compiler: gcc
127   - env: DEF_LIB="shared" RUN_TESTS=true
128     arch: arm64
129     compiler: gcc
130   - env: DEF_LIB="shared" RUN_TESTS=true
131     dist: focal
132     arch: arm64-graviton2
133     virt: vm
134     group: edge
135     compiler: gcc
136   - env: DEF_LIB="shared" BUILD_DOCS=true
137     arch: arm64
138     compiler: gcc
139     addons:
140       apt:
141         packages:
142           - *required_packages
143           - *doc_packages
144   - env: DEF_LIB="shared" ABI_CHECKS=true
145     arch: arm64
146     compiler: gcc
147     addons:
148       apt:
149         packages:
150           - *required_packages
151           - *libabigail_build_packages
152   # aarch64 clang jobs
153   - env: DEF_LIB="static"
154     arch: arm64
155     compiler: clang
156   - env: DEF_LIB="shared" RUN_TESTS=true
157     arch: arm64
158     compiler: clang
159   - env: DEF_LIB="shared" RUN_TESTS=true
160     dist: focal
161     arch: arm64-graviton2
162     virt: vm
163     group: edge
164     compiler: clang