name: CI on: [push, pull_request] jobs: build-windows: runs-on: windows-${{ matrix.config.server }} name: build-${{ matrix.config.toolchain}}-${{ matrix.config.arch}} strategy: fail-fast: false matrix: config: - {toolchain: Visual Studio 15 2017, arch: Win32, server: 2016} - {toolchain: Visual Studio 15 2017, arch: x64, server: 2016} - {toolchain: Visual Studio 16 2019, arch: Win32, server: 2019} - {toolchain: Visual Studio 16 2019, arch: x64, server: 2019} - {toolchain: Visual Studio 17 2022, arch: Win32, server: 2022} - {toolchain: Visual Studio 17 2022, arch: x64, server: 2022} steps: - uses: actions/checkout@v2 - name: Envinfo run: npx envinfo - name: Build shell: cmd run: | mkdir -p build cd build cmake .. -DBUILD_TESTING=ON -G "${{ matrix.config.toolchain }}" -A ${{ matrix.config.arch }} cmake --build . - name: Test shell: cmd run: | cd build ctest -C Debug --output-on-failure build-android: runs-on: ubuntu-latest container: reactnativecommunity/react-native-android:2020-5-20 steps: - uses: actions/checkout@v2 - name: Envinfo run: npx envinfo - name: Build android arm64 # see build options you can use in https://developer.android.com/ndk/guides/cmake run: | mkdir build && cd build $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-21 .. $ANDROID_HOME/cmake/3.10.2.4988404/bin/cmake --build . build-macos: runs-on: macos-10.15 steps: - uses: actions/checkout@v2 - name: Envinfo run: npx envinfo - name: Setup run: | brew install ninja - name: Build run: | mkdir build cd build && cmake .. -DBUILD_TESTING=ON -G Ninja cmake --build . ls -lh - name: Test run: | cd build && ctest -V build-cross-qemu: runs-on: ubuntu-latest name: build-cross-qemu-${{ matrix.config.target }} strategy: fail-fast: false matrix: config: - {target: arm, toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static } - {target: armhf, toolchain: gcc-arm-linux-gnueabihf, cc: arm-linux-gnueabihf-gcc, qemu: qemu-arm-static } - {target: aarch64, toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static } - {target: riscv64, toolchain: gcc-riscv64-linux-gnu, cc: riscv64-linux-gnu-gcc, qemu: qemu-riscv64-static } - {target: ppc, toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static } - {target: ppc64, toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static } - {target: ppc64le, toolchain: gcc-powerpc64le-linux-gnu, cc: powerpc64le-linux-gnu-gcc, qemu: qemu-ppc64le-static } - {target: s390x, toolchain: gcc-s390x-linux-gnu, cc: s390x-linux-gnu-gcc, qemu: qemu-s390x-static } - {target: mips, toolchain: gcc-mips-linux-gnu, cc: mips-linux-gnu-gcc, qemu: qemu-mips-static } - {target: mips64, toolchain: gcc-mips64-linux-gnuabi64, cc: mips64-linux-gnuabi64-gcc, qemu: qemu-mips64-static } - {target: mipsel, toolchain: gcc-mipsel-linux-gnu, cc: mipsel-linux-gnu-gcc, qemu: qemu-mipsel-static } - {target: mips64el,toolchain: gcc-mips64el-linux-gnuabi64, cc: mips64el-linux-gnuabi64-gcc,qemu: qemu-mips64el-static } - {target: alpha, toolchain: gcc-alpha-linux-gnu, cc: alpha-linux-gnu-gcc, qemu: qemu-alpha-static } - {target: arm (u64 slots), toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static} - {target: aarch64 (u64 slots), toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static} - {target: ppc (u64 slots), toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static} - {target: ppc64 (u64 slots), toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static} steps: - uses: actions/checkout@v2 - name: Install QEMU # this ensure install latest qemu on ubuntu, apt get version is old env: QEMU_SRC: "http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu" QEMU_VER: "qemu-user-static_4\\.2-.*_amd64.deb$" run: | DEB=`curl -s $QEMU_SRC/ | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | grep $QEMU_VER | tail -1` wget $QEMU_SRC/$DEB sudo dpkg -i $DEB - name: Install ${{ matrix.config.toolchain }} run: | sudo apt update sudo apt install ${{ matrix.config.toolchain }} -y - name: Build run: | mkdir build cd build && cmake .. -DBUILD_TESTING=ON -DQEMU=ON -DCMAKE_C_COMPILER=${{ matrix.config.cc }} cmake --build . ls -lh - name: Test run: | ${{ matrix.config.qemu }} build/uv_run_tests_a