From 5108598fd5f8059d8308822526790c6d62512ff3 Mon Sep 17 00:00:00 2001 From: "Zongwu.Yang" Date: Fri, 29 Jan 2021 19:15:59 +0800 Subject: [PATCH] Add Cmake build for tim-vx Signed-off-by: Zongwu.Yang --- CMakeLists.txt | 18 +++++++++++++ cmake/OvxDrvConfig.cmake | 35 +++++++++++++++++++++++++ samples/lenet/CMakeLists.txt | 11 ++++++++ src/tim/vx/CMakeLists.txt | 22 ++++++++++++++++ src/tim/vx/internal/CMakeLists.txt | 42 ++++++++++++++++++++++++++++++ 5 files changed, 128 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/OvxDrvConfig.cmake create mode 100644 samples/lenet/CMakeLists.txt create mode 100644 src/tim/vx/CMakeLists.txt create mode 100644 src/tim/vx/internal/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a9f615b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required (VERSION 3.3) +project(tim-vx) + +set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Werror -fPIC") +set(CMAKE_CXX_FLAGS "--std=c++14 -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Werror -fPIC") + +set(CMAKE_C_VISIBILITY_PRESET hidden) +set(OVXLIB_API_ATTR "__attribute__\(\(visibility\(\"default\"\)\)\)") +message(${OVXLIB_API_ATTR}) +add_definitions(-DOVXLIB_API=${OVXLIB_API_ATTR}) + +# find dependencies +find_package(OvxDrv REQUIRED PATHS ${PROJECT_SOURCE_DIR}/cmake) +include_directories(${PROJECT_SOURCE_DIR}/include/tim/vx) +include_directories(${OVXDRV_INCLUDE_DIRS}) + +add_subdirectory("src/tim/vx") +add_subdirectory("samples/lenet") diff --git a/cmake/OvxDrvConfig.cmake b/cmake/OvxDrvConfig.cmake new file mode 100644 index 0000000..96857f2 --- /dev/null +++ b/cmake/OvxDrvConfig.cmake @@ -0,0 +1,35 @@ +message("==================================================") +message("Processing OvxDrvConfig.cmake ...") +set(PKG_NAME "OVXDRV") + +set(OVXDRV_INCLUDE_DIRS) +list(APPEND OVXDRV_INCLUDE_DIRS + ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/include + ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/include/CL) + +set(LIBS CLC GAL OpenVX OpenVXU VSC ArchModelSw NNArchPerf) +if(CMAKE_CROSSCOMPILING) + # todo (sven) add any library if only avaiable in cross build +endif() + +list(LENGTH LIBS count) +math(EXPR count "${count} - 1") +foreach(i RANGE ${count}) + list(GET LIBS ${i} lib) + find_library(${PKG_NAME}_FOUND_LIB_${i} + NAMES ${lib} + PATHS ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/lib + ) + message("found lib ${lib} at ${${PKG_NAME}_FOUND_LIB_${i}}") + list(APPEND ${PKG_NAME}_LIBRARIES ${${PKG_NAME}_FOUND_LIB_${i}}) + + message("--->" ${PKG_NAME}_LIBRARIES ${${PKG_NAME}_FOUND_LIB_${i}}) +endforeach() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(${PKG_NAME} DEFAULT_MSG + ${PKG_NAME}_LIBRARIES) + +mark_as_advanced(${PKG_NAME}_INCLUDE_DIRS ${PKG_NAME}_LIBRARIES) + +message("==================================================") \ No newline at end of file diff --git a/samples/lenet/CMakeLists.txt b/samples/lenet/CMakeLists.txt new file mode 100644 index 0000000..c903117 --- /dev/null +++ b/samples/lenet/CMakeLists.txt @@ -0,0 +1,11 @@ +message("samples/lenet") + +set(target_name "lenet") + +aux_source_directory(. SRC) + +include_directories(${PROJECT_SOURCE_DIR}/include) +include_directories(./) + +add_executable(${target_name} ${SRC}) +target_link_libraries(${target_name} ${OVXDRV_LIBRARIES} tim-vx) \ No newline at end of file diff --git a/src/tim/vx/CMakeLists.txt b/src/tim/vx/CMakeLists.txt new file mode 100644 index 0000000..7c91bc2 --- /dev/null +++ b/src/tim/vx/CMakeLists.txt @@ -0,0 +1,22 @@ +message("src/tim/vx") + +set(target_name "tim-vx") + +add_subdirectory("internal") + +aux_source_directory(. VX_SRC) +aux_source_directory(ops OPS_SRC) + +set(SRC) +list(APPEND SRC + ${VX_SRC} + ${OPS_SRC} + ) + +include_directories(${PROJECT_SOURCE_DIR}/include) +include_directories(${PROJECT_SOURCE_DIR}/include/tim/vx) +include_directories(${PROJECT_SOURCE_DIR}/src/tim/vx) +include_directories(${PROJECT_SOURCE_DIR}/src/tim/vx/internal/include) + +add_library(${target_name} SHARED ${SRC}) +target_link_libraries(${target_name} PRIVATE tim_internal) \ No newline at end of file diff --git a/src/tim/vx/internal/CMakeLists.txt b/src/tim/vx/internal/CMakeLists.txt new file mode 100644 index 0000000..ee5a54d --- /dev/null +++ b/src/tim/vx/internal/CMakeLists.txt @@ -0,0 +1,42 @@ +message("src/tim/vx/internal") + +set(lib_name "tim_internal") + +aux_source_directory(src INTERNAL_SRC) +aux_source_directory(src/kernel INTERNAL_KERNEL) +aux_source_directory(src/kernel/cl INTERNAL_KERNEL_CL) +aux_source_directory(src/kernel/cpu INTERNAL_KERNEL_CPU) +aux_source_directory(src/kernel/evis INTERNAL_KERNEL_EVIS) +aux_source_directory(src/kernel/vx INTERNAL_KERNEL_VX) +aux_source_directory(src/ops INTERNAL_OPS) +aux_source_directory(src/client INTERNAL_CLIENT) +aux_source_directory(src/libnnext INTERNAL_LIBNNEXT) +aux_source_directory(src/libnnext/ops/kernel INTERNAL_LIBNNEXT_OPS_KERNEL) +aux_source_directory(src/quantization INTERNAL_QUANTIZATION) +aux_source_directory(src/custom/ops INTERNAL_CUSTOM_OPS) +aux_source_directory(src/custom/ops/kernel INTERNAL_CUSTOM_OPS_KERNEL) +aux_source_directory(src/utils INTERNAL_UTILS) + +set(SRC) +list(APPEND SRC + ${INTERNAL_SRC} + ${INTERNAL_KERNEL} + ${INTERNAL_KERNEL_CL} + ${INTERNAL_KERNEL_CPU} + ${INTERNAL_KERNEL_EVIS} + ${INTERNAL_KERNEL_VX} + ${INTERNAL_OPS} + ${INTERNAL_CLIENT} + ${INTERNAL_LIBNNEXT} + ${INTERNAL_LIBNNEXT_OPS_KERNEL} + ${INTERNAL_QUANTIZATION} + ${INTERNAL_CUSTOM_OPS} + ${INTERNAL_CUSTOM_OPS_KERNEL} + ${INTERNAL_UTILS} +) + +include_directories(include) +include_directories(${OVXDRV_INCLUDE_DIRS}) + +add_library(${lib_name} ${SRC}) +target_link_libraries(${lib_name} PRIVATE ${OVXDRV_LIBRARIES}) \ No newline at end of file