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