From eae539575c7f46115ee224f40692640feef64aa9 Mon Sep 17 00:00:00 2001 From: Sven Date: Tue, 25 May 2021 09:48:49 +0800 Subject: [PATCH] Add CMake UnitTest in CI (#66) Signed-off-by: xiang.zhang --- .github/workflows/x86_vsim_unit_test.yml | 38 ++++++++++++++++++++++++ CMakeLists.txt | 11 +++++-- README.md | 3 ++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/x86_vsim_unit_test.yml diff --git a/.github/workflows/x86_vsim_unit_test.yml b/.github/workflows/x86_vsim_unit_test.yml new file mode 100644 index 0000000..1a5fd9d --- /dev/null +++ b/.github/workflows/x86_vsim_unit_test.yml @@ -0,0 +1,38 @@ +name: x86_vsim_unit_test + +on: + # push: + # branches: [ main ] + pull_request: + branches: [ main ] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Release + +jobs: + build: + # The CMake configure and build commands are platform agnostic and should work equally + # well on Windows or Mac. You can convert this to a matrix build if you need + # cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: execute-unit-test.x86.vsim + run: | + export LD_LIBRARY_PATH=`pwd`/prebuilt-sdk/x86_64_linux/lib + export VIVANTE_SDK_DIR=`pwd`/prebuilt-sdk/x86_64_linux/ + cd ${{github.workspace}}/build/src/tim/ + ./unit_test \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 4cfe98e..a25bd87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,20 @@ cmake_minimum_required (VERSION 3.14) project(tim-vx) -OPTION(TIM_VX_ENABLE_TEST "Build the unit test" ON) -OPTION(TIM_VX_ENABLE_LAYOUT_INFER "Enable layout inference support" ON) +OPTION(TIM_VX_ENABLE_TEST "Build the unit test" ON) +OPTION(TIM_VX_ENABLE_LAYOUT_INFER "Enable layout inference support" ON) +OPTION(TIM_VX_CODE_COVERAGE "Run code coverage with gconv(gcc only" OFF) set(CMAKE_CXX_STANDARD 14) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_CXX_FLAGS "-Wall -Wextra -Werror") +if(${TIM_VX_CODE_COVERAGE}) + set(CMAKE_CXX_FLAGS "-g -O0 --coverage -fprofile-arcs -ftest-coverage") + set(CMAKE_C_FLAGS "-g -O0 --coverage -fprofile-arcs -ftest-coverage") +endif() + + if(NOT DEFINED CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "..." FORCE) endif() diff --git a/README.md b/README.md index 0fd2556..236c1c6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ + + # TIM-VX - Tensor Interface Module for OpenVX +![VSim.X86.UnitTest](https://github.com/VeriSilicon/TIM-VX/actions/workflows/x86_vsim_unit_test.yml/badge.svg) TIM-VX is a software integration module provided by VeriSilicon to facilitate deployment of Neural-Networks on OpenVX enabled ML accelerators. It serves as the backend binding for runtime frameworks such as Android NN, Tensorflow-Lite, MLIR, TVM and more.