summaryrefslogtreecommitdiff
path: root/.github/workflows/configure.yml
blob: d85d966f2381fa481bb6f6cdd0cf34c2e2aaebdc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
name: CI Configure
on: [push, pull_request]
jobs:
  ci-configure:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: Ubuntu GCC
            os: ubuntu-latest
            compiler: gcc
            configure-args: --warn

          - name: Ubuntu 18.04 GCC
            os: ubuntu-18.04
            compiler: gcc
            configure-args: --warn

          - name: Ubuntu GCC OSB
            os: ubuntu-latest
            compiler: gcc
            configure-args: --warn
            build-dir: ../build
            build-src-dir: ../zlib-ng

          - name: Ubuntu GCC Compat No Opt
            os: ubuntu-latest
            compiler: gcc
            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies

          - name: Ubuntu GCC ARM SF
            os: ubuntu-latest
            compiler: arm-linux-gnueabi-gcc
            configure-args: --warn
            chost: arm-linux-gnueabi
            packages: qemu qemu-user gcc-arm-linux-gnueabi libc-dev-armel-cross
            qemu-run: qemu-arm

          - name: Ubuntu GCC ARM SF Compat No Opt
            os: ubuntu-latest
            compiler: arm-linux-gnueabi-gcc
            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies
            chost: arm-linux-gnueabi
            packages: qemu qemu-user gcc-arm-linux-gnueabi libc-dev-armel-cross
            qemu-run: qemu-arm

          - name: Ubuntu GCC ARM HF
            os: ubuntu-latest
            compiler: arm-linux-gnueabihf-gcc
            configure-args: --warn
            chost: arm-linux-gnueabihf
            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
            qemu-run: qemu-arm

          - name: Ubuntu GCC ARM HF No ACLE
            os: ubuntu-latest
            compiler: arm-linux-gnueabihf-gcc
            configure-args: --warn --without-acle
            chost: arm-linux-gnueabihf
            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
            qemu-run: qemu-arm

          - name: Ubuntu GCC ARM HF No NEON
            os: ubuntu-latest
            compiler: arm-linux-gnueabihf-gcc
            configure-args: --warn --without-neon
            chost: arm-linux-gnueabihf
            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
            qemu-run: qemu-arm

          - name: Ubuntu GCC ARM HF Compat No Opt
            os: ubuntu-latest
            compiler: arm-linux-gnueabihf-gcc
            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies
            chost: arm-linux-gnueabihf
            packages: qemu qemu-user gcc-arm-linux-gnueabihf libc-dev-armel-cross
            qemu-run: qemu-arm

          - name: Ubuntu GCC AARCH64
            os: ubuntu-latest
            compiler: aarch64-linux-gnu-gcc
            configure-args: --warn
            chost: aarch64-linux-gnu
            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
            qemu-run: qemu-aarch64

          - name: Ubuntu GCC AARCH64 No ACLE
            os: ubuntu-latest
            compiler: aarch64-linux-gnu-gcc
            configure-args: --warn --without-acle
            chost: aarch64-linux-gnu
            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
            qemu-run: qemu-aarch64

          - name: Ubuntu GCC AARCH64 No NEON
            os: ubuntu-latest
            compiler: aarch64-linux-gnu-gcc
            configure-args: --warn --without-neon
            chost: aarch64-linux-gnu
            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
            qemu-run: qemu-aarch64

          - name: Ubuntu GCC AARCH64 Compat No Opt
            os: ubuntu-latest
            compiler: aarch64-linux-gnu-gcc
            configure-args: --warn --zlib-compat --without-optimizations --without-new-strategies
            chost: aarch64-linux-gnu
            packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross
            qemu-run: qemu-aarch64

          - name: Ubuntu GCC PPC
            os: ubuntu-latest
            compiler: powerpc-linux-gnu-gcc
            configure-args: --warn --static
            chost: powerpc-linux-gnu
            packages: qemu qemu-user gcc-powerpc-linux-gnu libc-dev-powerpc-cross
            qemu-run: qemu-ppc
            cflags: -static
            ldflags: -static

          - name: Ubuntu GCC PPC64
            os: ubuntu-latest
            compiler: powerpc64-linux-gnu-gcc
            configure-args: --warn --static
            chost: powerpc-linux-gnu
            packages: qemu qemu-user gcc-powerpc64-linux-gnu libc-dev-ppc64-cross
            qemu-run: qemu-ppc64
            cflags: -static
            ldflags: -static

          - name: Ubuntu GCC PPC64LE
            os: ubuntu-latest
            compiler: powerpc64le-linux-gnu-gcc
            configure-args: --warn
            chost: powerpc64le-linux-gnu
            packages: qemu qemu-user gcc-powerpc64le-linux-gnu libc-dev-ppc64el-cross
            qemu-run: qemu-ppc64le

          - name: Ubuntu GCC S390X
            os: ubuntu-latest
            compiler: s390x-linux-gnu-gcc
            configure-args: --warn --static
            chost: s390x-linux-gnu
            packages: qemu qemu-user gcc-s390x-linux-gnu libc-dev-s390x-cross
            qemu-run: qemu-s390x
            cflags: -static
            ldflags: -static

          - name: Ubuntu GCC S390X DFLTCC
            os: z15
            compiler: gcc
            configure-args: --warn --static --with-dfltcc-deflate --with-dfltcc-inflate

          - name: Ubuntu GCC S390X DFLTCC Compat
            os: z15
            compiler: gcc
            configure-args: --warn --zlib-compat --static --with-dfltcc-deflate --with-dfltcc-inflate

          - name: macOS GCC
            os: macOS-latest
            compiler: gcc
            configure-args: --warn

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Install packages (Ubuntu)
      if: runner.os == 'Linux' && matrix.packages
      run: |
        sudo apt-get update
        sudo apt-get install -y ${{ matrix.packages }}

    - name: Generate project files
      run: |
        mkdir ${{ matrix.build-dir || '.not-used' }}
        cd ${{ matrix.build-dir || '.' }}
        ${{ matrix.build-src-dir || '.' }}/configure ${{ matrix.configure-args }}
      env:
        CC: ${{ matrix.compiler }}
        CFLAGS: ${{ matrix.cflags }}
        LDFLAGS: ${{ matrix.ldflags }}
        CHOST: ${{ matrix.chost }}
        CI: true

    - name: Compile source code
      run: |
        cd ${{ matrix.build-dir || '.' }}
        make -j2

    - name: Run test cases
      run: |
        cd ${{ matrix.build-dir || '.' }}
        make test
      env:
        QEMU_RUN: ${{ matrix.qemu-run }}

    - name: Upload build errors
      uses: actions/upload-artifact@v2
      if: failure()
      with:
        name: ${{ matrix.name }} (configure)
        path: |
          ${{ matrix.build-dir || '.' }}/configure.log
        retention-days: 30