• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: CI Configure
2on: [push, pull_request]
3jobs:
4  ci-configure:
5    name: ${{ matrix.name }}
6    runs-on: ${{ matrix.os }}
7    strategy:
8      fail-fast: false
9      matrix:
10        include:
11          - name: Ubuntu GCC
12            os: ubuntu-latest
13            compiler: gcc
14            configure-args: --warn
15
16          - name: Ubuntu 18.04 GCC
17            os: ubuntu-18.04
18            compiler: gcc
19            configure-args: --warn
20
21          - name: Ubuntu GCC OSB
22            os: ubuntu-latest
23            compiler: gcc
24            configure-args: --warn
25            build-dir: ../build
26            build-src-dir: ../zlib-ng
27
28          - name: Ubuntu GCC Compat No Opt
29            os: ubuntu-latest
30            compiler: gcc
31            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies
32
33          - name: Ubuntu GCC ARM SF
34            os: ubuntu-latest
35            compiler: arm-linux-gnueabi-gcc
36            configure-args: --warn
37            chost: arm-linux-gnueabi
38            packages: qemu qemu-user gcc-arm-linux-gnueabi libc-dev-armel-cross
39            qemu-run: qemu-arm
40
41          - name: Ubuntu GCC ARM SF Compat No Opt
42            os: ubuntu-latest
43            compiler: arm-linux-gnueabi-gcc
44            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies
45            chost: arm-linux-gnueabi
46            packages: qemu qemu-user gcc-arm-linux-gnueabi libc-dev-armel-cross
47            qemu-run: qemu-arm
48
49          - name: Ubuntu GCC ARM HF
50            os: ubuntu-latest
51            compiler: arm-linux-gnueabihf-gcc
52            configure-args: --warn
53            chost: arm-linux-gnueabihf
54            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
55            qemu-run: qemu-arm
56
57          - name: Ubuntu GCC ARM HF No ACLE
58            os: ubuntu-latest
59            compiler: arm-linux-gnueabihf-gcc
60            configure-args: --warn --without-acle
61            chost: arm-linux-gnueabihf
62            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
63            qemu-run: qemu-arm
64
65          - name: Ubuntu GCC ARM HF No NEON
66            os: ubuntu-latest
67            compiler: arm-linux-gnueabihf-gcc
68            configure-args: --warn --without-neon
69            chost: arm-linux-gnueabihf
70            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
71            qemu-run: qemu-arm
72
73          - name: Ubuntu GCC ARM HF Compat No Opt
74            os: ubuntu-latest
75            compiler: arm-linux-gnueabihf-gcc
76            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies
77            chost: arm-linux-gnueabihf
78            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
79            qemu-run: qemu-arm
80
81          - name: Ubuntu GCC AARCH64
82            os: ubuntu-latest
83            compiler: aarch64-linux-gnu-gcc
84            configure-args: --warn
85            chost: aarch64-linux-gnu
86            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
87            qemu-run: qemu-aarch64
88
89          - name: Ubuntu GCC AARCH64 No ACLE
90            os: ubuntu-latest
91            compiler: aarch64-linux-gnu-gcc
92            configure-args: --warn --without-acle
93            chost: aarch64-linux-gnu
94            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
95            qemu-run: qemu-aarch64
96
97          - name: Ubuntu GCC AARCH64 No NEON
98            os: ubuntu-latest
99            compiler: aarch64-linux-gnu-gcc
100            configure-args: --warn --without-neon
101            chost: aarch64-linux-gnu
102            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
103            qemu-run: qemu-aarch64
104
105          - name: Ubuntu GCC AARCH64 Compat No Opt
106            os: ubuntu-latest
107            compiler: aarch64-linux-gnu-gcc
108            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies
109            chost: aarch64-linux-gnu
110            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
111            qemu-run: qemu-aarch64
112
113          - name: Ubuntu GCC PPC
114            os: ubuntu-latest
115            compiler: powerpc-linux-gnu-gcc
116            configure-args: --warn --static
117            chost: powerpc-linux-gnu
118            packages: qemu qemu-user gcc-powerpc-linux-gnu libc-dev-powerpc-cross
119            qemu-run: qemu-ppc
120            cflags: -static
121            ldflags: -static
122
123          - name: Ubuntu GCC PPC No Power8
124            os: ubuntu-latest
125            compiler: powerpc-linux-gnu-gcc
126            configure-args: --warn --without-power8
127            chost: powerpc-linux-gnu
128            packages: qemu qemu-user gcc-powerpc-linux-gnu libc-dev-powerpc-cross
129            qemu-run: qemu-ppc
130
131          - name: Ubuntu GCC PPC64
132            os: ubuntu-latest
133            compiler: powerpc64-linux-gnu-gcc
134            configure-args: --warn --static
135            chost: powerpc-linux-gnu
136            packages: qemu qemu-user gcc-powerpc64-linux-gnu libc-dev-ppc64-cross
137            qemu-run: qemu-ppc64
138            cflags: -static
139            ldflags: -static
140
141          - name: Ubuntu GCC PPC64LE
142            os: ubuntu-latest
143            compiler: powerpc64le-linux-gnu-gcc
144            configure-args: --warn
145            chost: powerpc64le-linux-gnu
146            packages: qemu qemu-user gcc-powerpc64le-linux-gnu libc-dev-ppc64el-cross
147            qemu-run: qemu-ppc64le
148
149          - name: Ubuntu GCC S390X
150            os: ubuntu-latest
151            compiler: s390x-linux-gnu-gcc
152            configure-args: --warn --static
153            chost: s390x-linux-gnu
154            packages: qemu qemu-user gcc-s390x-linux-gnu libc-dev-s390x-cross
155            qemu-run: qemu-s390x
156            cflags: -static
157            ldflags: -static
158
159          - name: Ubuntu GCC S390X No vectorized CRC32
160            os: ubuntu-latest
161            compiler: s390x-linux-gnu-gcc
162            configure-args: --warn --static --without-crc32-vx
163            chost: s390x-linux-gnu
164            packages: qemu qemu-user gcc-s390x-linux-gnu libc-dev-s390x-cross
165            qemu-run: qemu-s390x
166            cflags: -static
167            ldflags: -static
168
169          - name: Ubuntu GCC S390X DFLTCC
170            os: z15
171            compiler: gcc
172            configure-args: --warn --static --with-dfltcc-deflate --with-dfltcc-inflate
173
174          - name: Ubuntu GCC S390X DFLTCC Compat
175            os: z15
176            compiler: gcc
177            configure-args: --warn --zlib-compat --static --with-dfltcc-deflate --with-dfltcc-inflate
178
179          - name: macOS GCC Symbol Prefix
180            os: macOS-latest
181            compiler: gcc
182            configure-args: --sprefix=zTest_
183
184          - name: macOS GCC Symbol Prefix & Compat
185            os: macOS-latest
186            compiler: gcc
187            configure-args: --zlib-compat --sprefix=zTest_
188
189          - name: macOS GCC
190            os: macOS-latest
191            compiler: gcc
192            configure-args: --warn
193
194    steps:
195    - name: Checkout repository
196      uses: actions/checkout@v2
197
198    - name: Install packages (Ubuntu)
199      if: runner.os == 'Linux' && matrix.packages
200      run: |
201        sudo apt-get update
202        sudo apt-get install -y ${{ matrix.packages }}
203
204    - name: Generate project files
205      run: |
206        mkdir ${{ matrix.build-dir || '.not-used' }}
207        cd ${{ matrix.build-dir || '.' }}
208        ${{ matrix.build-src-dir || '.' }}/configure ${{ matrix.configure-args }}
209      env:
210        CC: ${{ matrix.compiler }}
211        CFLAGS: ${{ matrix.cflags }}
212        LDFLAGS: ${{ matrix.ldflags }}
213        CHOST: ${{ matrix.chost }}
214        CI: true
215
216    - name: Compile source code
217      run: |
218        cd ${{ matrix.build-dir || '.' }}
219        make -j2
220
221    - name: Run test cases
222      run: |
223        cd ${{ matrix.build-dir || '.' }}
224        make test
225      env:
226        QEMU_RUN: ${{ matrix.qemu-run }}
227        ASAN_OPTIONS: abort_on_error=1:halt_on_error=1
228        MSAN_OPTIONS: abort_on_error=1:halt_on_error=1
229        UBSAN_OPTIONS: print_stacktrace=1:abort_on_error=1:halt_on_error=1
230
231    - name: Upload build errors
232      uses: actions/upload-artifact@v2
233      if: failure()
234      with:
235        name: ${{ matrix.name }} (configure)
236        path: |
237          ${{ matrix.build-dir || '.' }}/configure.log
238        retention-days: 30
239