summaryrefslogtreecommitdiff
path: root/.github/workflows/configure.yml
blob: 712c7234442b75140ffa36500f3a2eed70c8a32f (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
name: 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

          # Test out of source builds
          - name: Ubuntu GCC OSB
            os: ubuntu-latest
            compiler: gcc
            configure-args: --warn
            build-dir: ../build
            src-dir: ../zlib

          - 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 -L /usr/arm-linux-gnueabi

          - 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-armhf-cross
            qemu-run: qemu-arm -L /usr/arm-linux-gnueabihf

          - 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 -L /usr/aarch64-linux-gnu

          - 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 -L /usr/powerpc-linux-gnu
            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 -L /usr/powerpc64-linux-gnu
            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 -L /usr/powerpc64le-linux-gnu

          - 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 -L /usr/s390x-linux-gnu
            cflags: -static
            ldflags: -static

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

          - name: macOS Clang
            os: macos-latest
            compiler: clang
            configure-args: --warn

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

    - 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: |
        [ -d ${{ matrix.build-dir || '.' }} ] || mkdir ${{ matrix.build-dir || '.' }}
        cd ${{ matrix.build-dir || '.' }}
        ${{ matrix.src-dir || '.' }}/configure ${{ matrix.configure-args }}
      env:
        CC: ${{ matrix.compiler }}
        CFLAGS: ${{ matrix.cflags }}
        LDFLAGS: ${{ matrix.ldflags }}
        CHOST: ${{ matrix.chost }}

    - name: Compile source code
      run: make -j2
      working-directory: ${{ matrix.build-dir }}

    - name: Run test cases
      run: |
        make test
        make cover
      working-directory: ${{ matrix.build-dir }}
      env:
        QEMU_RUN: ${{ matrix.qemu-run }}

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