Add Cmake build for tim-vx

Signed-off-by: Zongwu.Yang <Zongwu.Yang@verisilicon.com>
This commit is contained in:
Zongwu.Yang 2021-01-29 19:15:59 +08:00 committed by hawk081
parent 9f70d05765
commit 5108598fd5
5 changed files with 128 additions and 0 deletions

18
CMakeLists.txt Normal file
View File

@ -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")

35
cmake/OvxDrvConfig.cmake Normal file
View File

@ -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("==================================================")

View File

@ -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)

22
src/tim/vx/CMakeLists.txt Normal file
View File

@ -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)

View File

@ -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})