xref: /netbsd-src/external/mit/libuv/dist/.github/workflows/CI-unix.yml (revision d16b7486a53dcb8072b60ec6fcb4373a2d0c27b7)
1name: CI-unix
2
3on:
4  pull_request:
5    paths:
6      - '**'
7      - '!docs/**'
8      - '!src/win/**'
9      - '!.**'
10      - '.github/workflows/CI-unix.yml'
11  push:
12    branches:
13      - v[0-9].*
14      - master
15
16jobs:
17  build-android:
18    runs-on: ubuntu-latest
19    container: reactnativecommunity/react-native-android:2020-5-20
20    steps:
21      - uses: actions/checkout@v2
22      - name: Envinfo
23        run: npx envinfo
24      - name: Configure android arm64
25        # see build options you can use in https://developer.android.com/ndk/guides/cmake
26        run: |
27          mkdir build
28          cd build
29          $ANDROID_HOME/cmake/3.10.2.4988404/bin/cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_HOME/ndk/20.0.5594570/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 ..
30      - name: Build android arm64
31        run: |
32          $ANDROID_HOME/cmake/3.10.2.4988404/bin/cmake --build build
33          ls -lh build
34
35  build-macos:
36    runs-on: macos-10.15
37    steps:
38      - uses: actions/checkout@v2
39      - name: Envinfo
40        run: npx envinfo
41      - name: Setup
42        run: |
43          brew install ninja
44      - name: Configure
45        run: |
46          mkdir build
47          cd build
48          cmake .. -DBUILD_TESTING=ON -G Ninja
49      - name: Build
50        run: |
51          cmake --build build
52          ls -lh
53      - name: platform_output
54        run: |
55          ./build/uv_run_tests platform_output
56      - name: platform_output_a
57        run: |
58          ./build/uv_run_tests_a platform_output
59      - name: Test
60        run: |
61          cd build && ctest -V
62
63  build-ios:
64    runs-on: macos-10.15
65    steps:
66      - uses: actions/checkout@v2
67      - name: Configure
68        run: |
69          mkdir build-ios
70          cd build-ios
71          cmake .. -GXcode -DCMAKE_SYSTEM_NAME:STRING=iOS -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED:BOOL=NO -DCMAKE_CONFIGURATION_TYPES:STRING=Release
72      - name: Build
73        run: |
74          cmake --build build-ios
75          ls -lh build-ios
76
77  build-cross-qemu:
78    runs-on: ubuntu-latest
79    name: build-cross-qemu-${{ matrix.config.target }}
80
81    strategy:
82      fail-fast: false
83      matrix:
84        config:
85          - {target: arm,     toolchain: gcc-arm-linux-gnueabi,     cc: arm-linux-gnueabi-gcc,      qemu: qemu-arm-static     }
86          - {target: armhf,   toolchain: gcc-arm-linux-gnueabihf,   cc: arm-linux-gnueabihf-gcc,    qemu: qemu-arm-static     }
87          - {target: aarch64, toolchain: gcc-aarch64-linux-gnu,     cc: aarch64-linux-gnu-gcc,      qemu: qemu-aarch64-static }
88          - {target: riscv64, toolchain: gcc-riscv64-linux-gnu,     cc: riscv64-linux-gnu-gcc,      qemu: qemu-riscv64-static }
89          - {target: ppc,     toolchain: gcc-powerpc-linux-gnu,     cc: powerpc-linux-gnu-gcc,      qemu: qemu-ppc-static     }
90          - {target: ppc64,   toolchain: gcc-powerpc64-linux-gnu,   cc: powerpc64-linux-gnu-gcc,    qemu: qemu-ppc64-static   }
91          - {target: ppc64le, toolchain: gcc-powerpc64le-linux-gnu, cc: powerpc64le-linux-gnu-gcc,  qemu: qemu-ppc64le-static }
92          - {target: s390x,   toolchain: gcc-s390x-linux-gnu,       cc: s390x-linux-gnu-gcc,        qemu: qemu-s390x-static   }
93          - {target: mips,    toolchain: gcc-mips-linux-gnu,          cc: mips-linux-gnu-gcc,         qemu: qemu-mips-static     }
94          - {target: mips64,  toolchain: gcc-mips64-linux-gnuabi64,   cc: mips64-linux-gnuabi64-gcc,  qemu: qemu-mips64-static   }
95          - {target: mipsel,  toolchain: gcc-mipsel-linux-gnu,        cc: mipsel-linux-gnu-gcc,       qemu: qemu-mipsel-static   }
96          - {target: mips64el,toolchain: gcc-mips64el-linux-gnuabi64, cc: mips64el-linux-gnuabi64-gcc,qemu: qemu-mips64el-static }
97          - {target: alpha,   toolchain: gcc-alpha-linux-gnu,       cc: alpha-linux-gnu-gcc,        qemu: qemu-alpha-static   }
98          - {target: arm (u64 slots),     toolchain: gcc-arm-linux-gnueabi,     cc: arm-linux-gnueabi-gcc,      qemu: qemu-arm-static}
99          - {target: aarch64 (u64 slots), toolchain: gcc-aarch64-linux-gnu,     cc: aarch64-linux-gnu-gcc,      qemu: qemu-aarch64-static}
100          - {target: ppc (u64 slots),     toolchain: gcc-powerpc-linux-gnu,     cc: powerpc-linux-gnu-gcc,      qemu: qemu-ppc-static}
101          - {target: ppc64 (u64 slots),   toolchain: gcc-powerpc64-linux-gnu,   cc: powerpc64-linux-gnu-gcc,    qemu: qemu-ppc64-static}
102
103    steps:
104      - uses: actions/checkout@v2
105      - name: Install QEMU
106        # this ensure install latest qemu on ubuntu, apt get version is old
107        env:
108          QEMU_SRC: "http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu"
109          QEMU_VER: "qemu-user-static_4\\.2-.*_amd64.deb$"
110        run: |
111          DEB=`curl -s $QEMU_SRC/ | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | grep $QEMU_VER | tail -1`
112          wget $QEMU_SRC/$DEB
113          sudo dpkg -i $DEB
114      - name: Install ${{ matrix.config.toolchain }}
115        run: |
116          sudo apt update
117          sudo apt install ${{ matrix.config.toolchain }} -y
118      - name: Configure with ${{ matrix.config.cc }}
119        run: |
120          mkdir build
121          cd build
122          cmake .. -DBUILD_TESTING=ON -DQEMU=ON -DCMAKE_C_COMPILER=${{ matrix.config.cc }}
123      - name: Build
124        run: |
125          cmake --build build
126          ls -lh build
127      - name: Test
128        run: |
129          ${{ matrix.config.qemu }} build/uv_run_tests_a
130