name: test-coverage on: push: branches: [master] paths: - '.github/workflows/test-coverage.yml' - 'CMakeLists.txt' - 'cmake/**' - 'src/**' - 'tests/**' - 'toolchains/**' pull_request: branches: [master] paths: - '.github/workflows/test-coverage.yml' - 'CMakeLists.txt' - 'cmake/**' - 'src/**' - 'tests/**' - 'toolchains/**' jobs: linux-gcc-gpu: runs-on: ubuntu-latest steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 with: submodules: true - name: lcov run: sudo apt-get install lcov - name: cache-vulkansdk id: cache-vulkansdk uses: actions/cache@v2.1.6 with: path: "1.2.148.1" key: vulkansdk-linux-x86_64-1.2.148.1 - name: vulkansdk if: steps.cache-vulkansdk.outputs.cache-hit != 'true' run: | wget https://sdk.lunarg.com/sdk/download/1.2.148.1/linux/vulkansdk-linux-x86_64-1.2.148.1.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.2.148.1.tar.gz tar -xf vulkansdk-linux-x86_64-1.2.148.1.tar.gz rm -rf 1.2.148.1/source 1.2.148.1/samples find 1.2.148.1 -type f | grep -v -E 'vulkan|glslang' | xargs rm - name: cache-swiftshader id: cache-swiftshader uses: actions/cache@v2.1.6 with: path: swiftshader-install key: swiftshader-linux-install-20200508 - name: checkout-swiftshader if: steps.cache-swiftshader.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: google/swiftshader path: swiftshader ref: 2dd864470e310d173d35fa95ca3a14d216734aab - name: checkout-swiftshader-submodules if: steps.cache-swiftshader.outputs.cache-hit != 'true' run: | cd swiftshader git submodule update --init --recursive - name: swiftshader if: steps.cache-swiftshader.outputs.cache-hit != 'true' run: | cd swiftshader mkdir -p build; cd build cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. cmake --build . -j 2 mkdir $GITHUB_WORKSPACE/swiftshader-install cp Linux/* $GITHUB_WORKSPACE/swiftshader-install - name: configure run: export VULKAN_SDK=`pwd`/1.2.148.1/x86_64 && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_OPENMP=OFF -DNCNN_VULKAN=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json" cd build && ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-sse2: runs-on: ubuntu-latest steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: configure run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: cd build && ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-avx2-omp: runs-on: ubuntu-latest steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: configure run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=ON -DNCNN_AVX2=ON -DNCNN_OPENMP=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: cd build && ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-arm: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-arm-install-1 - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: qemu/qemu path: qemu ref: 8746309137ba470d1b2e8f5ce86ac228625db940 - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | cd qemu ./configure --prefix=install --target-list=arm-linux-user --disable-system make -j2 make install cp -r arm-linux-user/install $GITHUB_WORKSPACE/qemu-install - name: arm-gnu-toolchain run: | sudo apt-get update sudo apt-get install g++-arm-linux-gnueabi - name: configure run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabi.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabi" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-aarch64: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-aarch64-install-1 - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: qemu/qemu path: qemu ref: 8746309137ba470d1b2e8f5ce86ac228625db940 - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | cd qemu ./configure --prefix=install --target-list=aarch64-linux-user --disable-system make -j2 make install cp -r aarch64-linux-user/install $GITHUB_WORKSPACE/qemu-install - name: aarch64-gnu-toolchain run: | sudo apt-get update sudo apt-get install g++-aarch64-linux-gnu - name: configure run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-arm82: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-aarch64-install-1 - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: qemu/qemu path: qemu ref: 8746309137ba470d1b2e8f5ce86ac228625db940 - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | cd qemu ./configure --prefix=install --target-list=aarch64-linux-user --disable-system make -j2 make install cp -r aarch64-linux-user/install $GITHUB_WORKSPACE/qemu-install - name: aarch64-gnu-toolchain run: | sudo apt-get update sudo apt-get install g++-aarch64-linux-gnu - name: configure run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_ARM82=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-arm82-omp: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-aarch64-install-1 - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: qemu/qemu path: qemu ref: 8746309137ba470d1b2e8f5ce86ac228625db940 - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | cd qemu ./configure --prefix=install --target-list=aarch64-linux-user --disable-system make -j2 make install cp -r aarch64-linux-user/install $GITHUB_WORKSPACE/qemu-install - name: aarch64-gnu-toolchain run: | sudo apt-get update sudo apt-get install g++-aarch64-linux-gnu - name: configure run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_ARM82=ON -DNCNN_OPENMP=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-mipsisa32r6el: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-mipsel-install-1 - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: qemu/qemu path: qemu ref: 8746309137ba470d1b2e8f5ce86ac228625db940 - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | cd qemu ./configure --prefix=install --target-list=mipsel-linux-user --disable-system make -j2 make install cp -r mipsel-linux-user/install $GITHUB_WORKSPACE/qemu-install - name: mipsisa32r6el-gnu-toolchain run: | sudo apt-get update sudo apt-get install g++-mipsisa32r6el-linux-gnu - name: configure run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa32r6el-linux-gnu" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-mipsisa64r6el: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-mips64el-install-1 - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: qemu/qemu path: qemu ref: 8746309137ba470d1b2e8f5ce86ac228625db940 - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | cd qemu ./configure --prefix=install --target-list=mips64el-linux-user --disable-system make -j2 make install cp -r mips64el-linux-user/install $GITHUB_WORKSPACE/qemu-install - name: mipsisa64r6el-gnuabi64-toolchain run: | sudo apt-get update sudo apt-get install g++-mipsisa64r6el-linux-gnuabi64 - name: configure run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa64r6el-linux-gnuabi64" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-riscv64: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-riscv64-install-1 - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: qemu/qemu path: qemu ref: 8746309137ba470d1b2e8f5ce86ac228625db940 - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | cd qemu ./configure --prefix=install --target-list=riscv64-linux-user --disable-system make -j2 make install cp -r riscv64-linux-user/install $GITHUB_WORKSPACE/qemu-install - name: riscv64-gnu-toolchain run: | sudo apt-get update sudo apt-get install g++-riscv64-linux-gnu - name: configure run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/riscv64-linux-gnu" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info linux-gcc-riscv64-rvv: runs-on: ubuntu-20.04 steps: - name: cancel-previous-runs uses: styfle/cancel-workflow-action@0.9.0 with: access_token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - name: lcov run: sudo apt-get install lcov - name: cache-qemu id: cache-qemu uses: actions/cache@v2.1.6 with: path: qemu-install key: qemu-riscv64-rvv-install-20210610 - name: install-qemu-build-deps if: steps.cache-qemu.outputs.cache-hit != 'true' run: | sudo apt-get update sudo apt-get install autoconf automake autotools-dev ninja-build - name: checkout-qemu if: steps.cache-qemu.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: sifive/qemu path: qemu ref: 7a3e8e23b4cf1422ec48e9d4b4009337a05a635d - name: qemu if: steps.cache-qemu.outputs.cache-hit != 'true' run: | wget https://download.qemu.org/qemu-6.0.0.tar.xz tar -xf qemu-6.0.0.tar.xz cp -r qemu/fpu qemu-6.0.0/ cp -r qemu/include/fpu qemu-6.0.0/include/ cp -r qemu/target/riscv qemu-6.0.0/target/ cp -r qemu/linux-user/elfload.c qemu-6.0.0/linux-user/ cd qemu-6.0.0 mkdir build cd build ../configure --prefix=`pwd`/install --target-list=riscv64-linux-user --disable-system make -j2 make install cp -r install $GITHUB_WORKSPACE/qemu-install - name: cache-riscv id: cache-riscv uses: actions/cache@v2.1.6 with: path: rv64gcv-install key: rv64gcv-linux-install-20210504 - name: install-riscv-build-deps if: steps.cache-riscv.outputs.cache-hit != 'true' run: | sudo apt-get update sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev device-tree-compiler - name: checkout-riscv-gnu-toolchain if: steps.cache-riscv.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: riscv/riscv-gnu-toolchain path: riscv-gnu-toolchain ref: 28271f03bb538d926ad2889dc8ad1b0cb1b3b45c - name: checkout-riscv-gnu-toolchain-submodules if: steps.cache-riscv.outputs.cache-hit != 'true' run: | cd riscv-gnu-toolchain git submodule update --init --recursive --depth 1 riscv-binutils git submodule update --init --recursive --depth 1 riscv-gcc git submodule update --init --recursive --depth 1 riscv-glibc git submodule update --init --recursive --depth 1 riscv-dejagnu git submodule update --init --recursive --depth 1 riscv-newlib git submodule update --init --recursive --depth 1 riscv-gdb - name: riscv-gnu-toolchain if: steps.cache-riscv.outputs.cache-hit != 'true' run: | cd riscv-gnu-toolchain sed -i '/__OBSOLETE_MATH/d' riscv-newlib/newlib/libm/common/math_errf.c ./configure --prefix=$GITHUB_WORKSPACE/rv64gcv-install --with-arch=rv64gcv_zfh make linux - name: riscv-strip-install if: steps.cache-riscv.outputs.cache-hit != 'true' run: find $GITHUB_WORKSPACE/rv64gcv-install -type f | xargs -i strip -g {} || true - name: configure run: export RISCV_ROOT_PATH=$GITHUB_WORKSPACE/rv64gcv-install && mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-unknown-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_FLAGS="-O1" -DCMAKE_CXX_FLAGS="-O1" -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - name: build run: cmake --build build -j 2 - name: test run: | export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH cd build TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,x-v=true,x-Zfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;$GITHUB_WORKSPACE/rv64gcv-install/sysroot" ctest --output-on-failure -j 2 - name: lcov-collect run: | cd build lcov -d ./src -c -o lcov.info lcov -r lcov.info '/usr/*' -o lcov.info lcov --list lcov.info - name: codecov uses: codecov/codecov-action@v1.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: build/lcov.info