1name: CI 2 3on: [push, pull_request] 4 5jobs: 6 build-windows: 7 runs-on: windows-${{ matrix.config.server }} 8 name: build-${{ matrix.config.toolchain}}-${{ matrix.config.arch}} 9 strategy: 10 fail-fast: false 11 matrix: 12 config: 13 - {toolchain: Visual Studio 15 2017, arch: Win32, server: 2016} 14 - {toolchain: Visual Studio 15 2017, arch: x64, server: 2016} 15 - {toolchain: Visual Studio 16 2019, arch: Win32, server: 2019} 16 - {toolchain: Visual Studio 16 2019, arch: x64, server: 2019} 17 - {toolchain: Visual Studio 17 2022, arch: Win32, server: 2022} 18 - {toolchain: Visual Studio 17 2022, arch: x64, server: 2022} 19 steps: 20 - uses: actions/checkout@v2 21 - name: Envinfo 22 run: npx envinfo 23 - name: Build 24 shell: cmd 25 run: | 26 mkdir -p build 27 cd build 28 cmake .. -DBUILD_TESTING=ON -G "${{ matrix.config.toolchain }}" -A ${{ matrix.config.arch }} 29 cmake --build . 30 - name: Test 31 shell: cmd 32 run: | 33 cd build 34 ctest -C Debug --output-on-failure 35 36 build-android: 37 runs-on: ubuntu-latest 38 container: reactnativecommunity/react-native-android:2020-5-20 39 steps: 40 - uses: actions/checkout@v2 41 - name: Envinfo 42 run: npx envinfo 43 - name: Build android arm64 44 # see build options you can use in https://developer.android.com/ndk/guides/cmake 45 run: | 46 mkdir build && cd build 47 $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 .. 48 $ANDROID_HOME/cmake/3.10.2.4988404/bin/cmake --build . 49 50 build-macos: 51 runs-on: macos-10.15 52 steps: 53 - uses: actions/checkout@v2 54 - name: Envinfo 55 run: npx envinfo 56 - name: Setup 57 run: | 58 brew install ninja 59 - name: Build 60 run: | 61 mkdir build 62 cd build && cmake .. -DBUILD_TESTING=ON -G Ninja 63 cmake --build . 64 ls -lh 65 - name: Test 66 run: | 67 cd build && ctest -V 68 69 build-cross-qemu: 70 runs-on: ubuntu-latest 71 name: build-cross-qemu-${{ matrix.config.target }} 72 73 strategy: 74 fail-fast: false 75 matrix: 76 config: 77 - {target: arm, toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static } 78 - {target: armhf, toolchain: gcc-arm-linux-gnueabihf, cc: arm-linux-gnueabihf-gcc, qemu: qemu-arm-static } 79 - {target: aarch64, toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static } 80 - {target: riscv64, toolchain: gcc-riscv64-linux-gnu, cc: riscv64-linux-gnu-gcc, qemu: qemu-riscv64-static } 81 - {target: ppc, toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static } 82 - {target: ppc64, toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static } 83 - {target: ppc64le, toolchain: gcc-powerpc64le-linux-gnu, cc: powerpc64le-linux-gnu-gcc, qemu: qemu-ppc64le-static } 84 - {target: s390x, toolchain: gcc-s390x-linux-gnu, cc: s390x-linux-gnu-gcc, qemu: qemu-s390x-static } 85 - {target: mips, toolchain: gcc-mips-linux-gnu, cc: mips-linux-gnu-gcc, qemu: qemu-mips-static } 86 - {target: mips64, toolchain: gcc-mips64-linux-gnuabi64, cc: mips64-linux-gnuabi64-gcc, qemu: qemu-mips64-static } 87 - {target: mipsel, toolchain: gcc-mipsel-linux-gnu, cc: mipsel-linux-gnu-gcc, qemu: qemu-mipsel-static } 88 - {target: mips64el,toolchain: gcc-mips64el-linux-gnuabi64, cc: mips64el-linux-gnuabi64-gcc,qemu: qemu-mips64el-static } 89 - {target: alpha, toolchain: gcc-alpha-linux-gnu, cc: alpha-linux-gnu-gcc, qemu: qemu-alpha-static } 90 - {target: arm (u64 slots), toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static} 91 - {target: aarch64 (u64 slots), toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static} 92 - {target: ppc (u64 slots), toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static} 93 - {target: ppc64 (u64 slots), toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static} 94 95 steps: 96 - uses: actions/checkout@v2 97 - name: Install QEMU 98 # this ensure install latest qemu on ubuntu, apt get version is old 99 env: 100 QEMU_SRC: "http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu" 101 QEMU_VER: "qemu-user-static_4\\.2-.*_amd64.deb$" 102 run: | 103 DEB=`curl -s $QEMU_SRC/ | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | grep $QEMU_VER | tail -1` 104 wget $QEMU_SRC/$DEB 105 sudo dpkg -i $DEB 106 - name: Install ${{ matrix.config.toolchain }} 107 run: | 108 sudo apt update 109 sudo apt install ${{ matrix.config.toolchain }} -y 110 - name: Build 111 run: | 112 mkdir build 113 cd build && cmake .. -DBUILD_TESTING=ON -DQEMU=ON -DCMAKE_C_COMPILER=${{ matrix.config.cc }} 114 cmake --build . 115 ls -lh 116 - name: Test 117 run: | 118 ${{ matrix.config.qemu }} build/uv_run_tests_a 119