• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: Build test
2
3on:
4  # Trigger the workflow on push or pull requests.
5  push:
6  pull_request:
7
8jobs:
9  build:
10    runs-on: ubuntu-latest
11
12    strategy:
13      fail-fast: false
14      matrix:
15        include:
16          # x86-64 gcc
17          - arch: x86_64
18            cc_pkg: gcc-x86-64-linux-gnu
19            cxx_pkg: g++-x86-64-linux-gnu
20            cc: x86_64-linux-gnu-gcc
21            cxx: x86_64-linux-gnu-g++
22
23          # x86-64 clang
24          - arch: x86_64
25            cc_pkg: clang
26            cxx_pkg: clang
27            cc: clang
28            cxx: clang++
29
30          # x86 (32-bit) gcc
31          - arch: i686
32            cc_pkg: gcc-i686-linux-gnu
33            cxx_pkg: g++-i686-linux-gnu
34            cc: i686-linux-gnu-gcc
35            cxx: i686-linux-gnu-g++
36
37          # aarch64 gcc
38          - arch: aarch64
39            cc_pkg: gcc-aarch64-linux-gnu
40            cxx_pkg: g++-aarch64-linux-gnu
41            cc: aarch64-linux-gnu-gcc
42            cxx: aarch64-linux-gnu-g++
43
44          # arm (32-bit) gcc
45          - arch: arm
46            cc_pkg: gcc-arm-linux-gnueabi
47            cxx_pkg: g++-arm-linux-gnueabi
48            cc: arm-linux-gnueabi-gcc
49            cxx: arm-linux-gnueabi-g++
50
51          # powerpc64
52          - arch: powerpc64
53            cc_pkg: gcc-powerpc64-linux-gnu
54            cxx_pkg: g++-powerpc64-linux-gnu
55            cc: powerpc64-linux-gnu-gcc
56            cxx: powerpc64-linux-gnu-g++
57
58          # powerpc
59          - arch: powerpc
60            cc_pkg: gcc-powerpc-linux-gnu
61            cxx_pkg: g++-powerpc-linux-gnu
62            cc: powerpc-linux-gnu-gcc
63            cxx: powerpc-linux-gnu-g++
64
65          # alpha
66          - arch: alpha
67            cc_pkg: gcc-alpha-linux-gnu
68            cxx_pkg: g++-alpha-linux-gnu
69            cc: alpha-linux-gnu-gcc
70            cxx: alpha-linux-gnu-g++
71
72          # mips64
73          - arch: mips64
74            cc_pkg: gcc-mips64-linux-gnuabi64
75            cxx_pkg: g++-mips64-linux-gnuabi64
76            cc: mips64-linux-gnuabi64-gcc
77            cxx: mips64-linux-gnuabi64-g++
78
79          # mips
80          - arch: mips
81            cc_pkg: gcc-mips-linux-gnu
82            cxx_pkg: g++-mips-linux-gnu
83            cc: mips-linux-gnu-gcc
84            cxx: mips-linux-gnu-g++
85
86    env:
87      FLAGS: -g -O2 -Wall -Wextra -Werror
88
89    steps:
90    - name: Checkout source
91      uses: actions/checkout@v2
92
93    - name: Install Compilers
94      run: |
95        if [[ "${{matrix.cc_pkg}}" == "clang" ]]; then \
96            wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh; \
97            sudo bash /tmp/llvm.sh 15; \
98            sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-15 400; \
99            sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 400; \
100        else \
101            sudo apt-get update -y; \
102            sudo apt-get install -y ${{matrix.cc_pkg}} ${{matrix.cxx_pkg}}; \
103        fi;
104
105    - name: Display compiler versions
106      run: |
107        ${{matrix.cc}} --version;
108        ${{matrix.cxx}} --version;
109
110    - name: Build
111      run: |
112        ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}};
113        make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS";
114
115    - name: Build nolibc
116      run: |
117        if [[ "${{matrix.arch}}" == "x86_64" || "${{matrix.arch}}" == "i686" ]]; then \
118            make clean; \
119            ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}} --nolibc; \
120            make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS"; \
121        else \
122            echo "Skipping nolibc build, this arch doesn't support building liburing without libc"; \
123        fi;
124
125    - name: Test install command
126      run: |
127        sudo make install;
128