2021-05-10 23:06:04 +08:00
|
|
|
message("src/tim/vx")
|
|
|
|
|
|
|
|
|
|
set(TARGET_NAME "tim-vx")
|
|
|
|
|
|
|
|
|
|
aux_source_directory(./vx VX_SRC)
|
|
|
|
|
aux_source_directory(./vx/ops OPS_SRC)
|
|
|
|
|
|
2021-10-12 10:44:49 +08:00
|
|
|
set(${TARGET_NAME}_SRCS)
|
|
|
|
|
list(APPEND ${TARGET_NAME}_SRCS
|
2021-05-10 23:06:04 +08:00
|
|
|
${VX_SRC}
|
|
|
|
|
${OPS_SRC}
|
2021-10-12 10:44:49 +08:00
|
|
|
)
|
2021-03-01 14:50:43 +08:00
|
|
|
|
2021-12-15 22:23:32 +08:00
|
|
|
if(${TIM_VX_USE_EXTERNAL_OVXLIB})
|
|
|
|
|
find_library(OVXLIB_LIB NAMES "ovxlib")
|
|
|
|
|
message(STATUS "Using external OVXLIB from ${OVXLIB_LIB}")
|
|
|
|
|
add_library(tim_internal SHARED IMPORTED)
|
|
|
|
|
set_target_properties(tim_internal PROPERTIES IMPORTED_LOCATION ${OVXLIB_LIB})
|
|
|
|
|
target_link_libraries(tim_internal INTERFACE ${OVXDRV_LIBRARIES})
|
|
|
|
|
else()
|
|
|
|
|
include(vx/internal/tim_internal.cmake)
|
|
|
|
|
endif()
|
|
|
|
|
|
2021-06-10 17:02:13 +08:00
|
|
|
if(${TIM_VX_USE_EXTERNAL_OVXLIB})
|
|
|
|
|
if(NOT OVXLIB_INC)
|
|
|
|
|
message(FATAL_ERROR "Set OVXLIB_INC if using external OVXLIB (TIM_VX_USE_EXTERNAL_OVXLIB)")
|
|
|
|
|
endif()
|
|
|
|
|
set(OVXLIB_INCLUDE_DIR ${OVXLIB_INC})
|
|
|
|
|
else()
|
|
|
|
|
set(OVXLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/src/tim/vx/internal/include")
|
|
|
|
|
endif()
|
|
|
|
|
message(STATUS "OVXLIB include directory: ${OVXLIB_INCLUDE_DIR}")
|
2021-05-10 23:06:04 +08:00
|
|
|
|
2021-05-17 13:04:45 +08:00
|
|
|
if(TIM_VX_ENABLE_LAYOUT_INFER)
|
2021-05-11 09:46:46 +08:00
|
|
|
aux_source_directory(./transform LAYOUT_INFER_FRAMEWORK_SRCS)
|
|
|
|
|
aux_source_directory(./transform/ops LAYOUT_INFER_OP_SRCS)
|
2021-05-10 23:06:04 +08:00
|
|
|
|
2021-10-12 10:44:49 +08:00
|
|
|
list(APPEND ${TARGET_NAME}_SRCS
|
2021-05-10 23:06:04 +08:00
|
|
|
${LAYOUT_INFER_FRAMEWORK_SRCS}
|
|
|
|
|
${LAYOUT_INFER_OP_SRCS}
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2021-10-12 10:44:49 +08:00
|
|
|
foreach(src_file ${${TARGET_NAME}_SRCS})
|
2021-05-14 14:00:22 +08:00
|
|
|
if(${src_file} MATCHES ".*_test\.cc")
|
2021-10-12 10:44:49 +08:00
|
|
|
list(REMOVE_ITEM ${TARGET_NAME}_SRCS ${src_file})
|
|
|
|
|
list(APPEND ${TARGET_NAME}_TEST_SRCS ${src_file})
|
2021-05-14 14:00:22 +08:00
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
|
2021-11-10 20:05:31 +08:00
|
|
|
set(EXTERNAL_LIBS)
|
|
|
|
|
set(INC_DIRS)
|
|
|
|
|
list(APPEND INC_DIRS
|
2021-10-12 10:44:49 +08:00
|
|
|
${PROJECT_SOURCE_DIR}/include
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/vx
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/transform
|
|
|
|
|
${OVXLIB_INCLUDE_DIR}
|
|
|
|
|
${OVXDRV_INCLUDE_DIRS}
|
|
|
|
|
)
|
|
|
|
|
|
2021-11-10 20:05:31 +08:00
|
|
|
if(${TIM_VX_ENABLE_VIPLITE})
|
|
|
|
|
aux_source_directory(./lite LITE_SRC)
|
|
|
|
|
list(APPEND ${TARGET_NAME}_SRCS
|
|
|
|
|
${LITE_SRC})
|
|
|
|
|
list(APPEND EXTERNAL_LIBS ${VIPLITE_DRV_LIBRARIES})
|
|
|
|
|
list(APPEND INC_DIRS
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lite
|
|
|
|
|
${VIPLITE_DRV_INCLUDE_DIR}
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
add_library(${TARGET_NAME} ${${TARGET_NAME}_SRCS})
|
|
|
|
|
target_include_directories(${TARGET_NAME} PRIVATE ${INC_DIRS})
|
|
|
|
|
target_link_libraries(${TARGET_NAME} PUBLIC
|
2021-12-15 22:23:32 +08:00
|
|
|
-Wl,--no-whole-archive ${EXTERNAL_LIBS} ${OVXDRV_LIBRARIES})
|
2021-11-10 20:05:31 +08:00
|
|
|
|
2021-12-15 22:23:32 +08:00
|
|
|
if(${TIM_VX_USE_EXTERNAL_OVXLIB})
|
|
|
|
|
#-Wl,--whole-archive should not applied to external library, but only for shared library
|
|
|
|
|
target_link_libraries(${TARGET_NAME} PUBLIC tim_internal)
|
|
|
|
|
endif()
|
2021-05-10 23:06:04 +08:00
|
|
|
|
2021-12-15 22:23:32 +08:00
|
|
|
if (NOT CMAKE_INSTALL_LIBDIR)
|
|
|
|
|
set(CMAKE_INSTALL_LIBDIR "lib")
|
2021-11-24 15:18:29 +08:00
|
|
|
endif()
|
|
|
|
|
|
2021-12-15 22:23:32 +08:00
|
|
|
install(TARGETS ${TARGET_NAME} ${TARGET_NAME}
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
|
|
|
|
|
|
2021-10-12 10:44:49 +08:00
|
|
|
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/tim/vx
|
2022-02-21 10:20:38 +08:00
|
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/tim)
|
2021-05-10 23:06:04 +08:00
|
|
|
|
2021-11-10 20:05:31 +08:00
|
|
|
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/tim/lite
|
2022-02-21 10:20:38 +08:00
|
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/tim)
|
2021-11-10 20:05:31 +08:00
|
|
|
|
2021-05-17 13:04:45 +08:00
|
|
|
if(TIM_VX_ENABLE_LAYOUT_INFER)
|
2021-10-12 10:44:49 +08:00
|
|
|
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/tim/transform
|
2022-02-21 10:20:38 +08:00
|
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/tim)
|
2021-05-17 13:04:45 +08:00
|
|
|
endif()
|
|
|
|
|
|
2021-10-12 10:44:49 +08:00
|
|
|
if(TIM_VX_ENABLE_TEST)
|
2021-05-17 13:04:45 +08:00
|
|
|
include(GoogleTest)
|
|
|
|
|
|
2021-10-12 10:44:49 +08:00
|
|
|
add_executable(unit_test ${${TARGET_NAME}_TEST_SRCS})
|
2021-10-12 19:50:55 +08:00
|
|
|
target_link_libraries(unit_test PRIVATE gtest gtest_main gmock gmock_main ${TARGET_NAME} ${OVXDRV_LIBRARIES})
|
2021-10-12 10:44:49 +08:00
|
|
|
target_include_directories(unit_test PRIVATE
|
|
|
|
|
${PROJECT_SOURCE_DIR}/include
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/vx
|
2022-03-09 12:10:08 +08:00
|
|
|
${OVXLIB_INCLUDE_DIR}
|
|
|
|
|
${INC_DIRS}
|
2021-10-12 10:44:49 +08:00
|
|
|
)
|
2021-05-17 13:04:45 +08:00
|
|
|
|
2021-12-15 22:23:32 +08:00
|
|
|
install(TARGETS unit_test DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})
|
2021-05-11 13:44:32 +08:00
|
|
|
endif()
|
2021-03-01 14:50:43 +08:00
|
|
|
|
|
|
|
|
add_subdirectory("utils")
|