cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR)
|
set(CMAKE_CXX_STANDARD 11)
|
add_definitions(-DDBUG)
|
add_definitions(-g)
|
PROJECT(uvc_app)
|
include(FindPkgConfig)
|
pkg_check_modules (JSON-C REQUIRED IMPORTED_TARGET json-c)
|
|
include_directories(uvc)
|
|
set(LIB_SOURCE
|
uvc/uvc-gadget.c
|
uvc/uvc_video.cpp
|
uvc/yuv.c
|
uvc/uvc_control.c
|
uvc/uvc_encode.cpp
|
uvc/mpi_enc.c
|
uvc/uevent.c
|
uvc/drm.c
|
cJSON/cJSON.c
|
uvc/mpp_osd.c
|
uvc/uvc_configfs.c
|
)
|
|
add_library(rkuvc SHARED ${LIB_SOURCE})
|
target_link_libraries(rkuvc pthread drm rockchip_mpp)
|
|
set(SOURCE
|
main.c
|
${LIB_SOURCE}
|
)
|
|
set(UVC_APP_DEPENDENT_LIBS
|
pthread
|
drm
|
rockchip_mpp
|
rt
|
rga
|
)
|
|
set(UVC_APP_INC
|
${CMAKE_CURRENT_SOURCE_DIR}/uvc/
|
)
|
|
option(ENABLE_USB3 "support usb3.0 config" OFF)
|
if (${ENABLE_USB3})
|
add_definitions(-DUSE_USB3)
|
endif()
|
|
option(ENABLE_AISERVER "rockchip aiserver" OFF)
|
if (${ENABLE_AISERVER})
|
add_definitions(-DUSE_RK_AISERVER)
|
set(SOURCE
|
${SOURCE}
|
uvc/uvc_ipc.cpp
|
)
|
find_package(Protobuf REQUIRED)
|
if(PROTOBUF_FOUND)
|
message(STATUS "protobuf library found")
|
set(UVC_APP_DEPENDENT_LIBS ${UVC_APP_DEPENDENT_LIBS} protobuf-lite)
|
include_directories(${PROTOBUF_INCLUDE_DIRS})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS
|
${CMAKE_CURRENT_SOURCE_DIR}/uvc/uvc_data.proto)
|
set(UVC_APP_INC ${UVC_APP_INC} ${PROTO_HDRS})
|
set(SOURCE ${SOURCE} ${PROTO_SRCS} ${PROTO_HDRS})
|
endif()
|
else()
|
add_definitions(-fno-rtti)
|
option(USE_ROCKIT "uvc camera use rockit" OFF)
|
if(USE_ROCKIT)
|
add_definitions(-DUSE_ROCKIT=1)
|
SET(UVC_APP_DEPENDENT_LIBS
|
${UVC_APP_DEPENDENT_LIBS}
|
rockit
|
)
|
install(FILES conf/uvc.json DESTINATION ../etc/uvc_app/)
|
else()
|
# add_definitions(-DUSE_RKMEDIA=1)
|
# add_definitions(-DEPTZ_ENABLE=1)
|
# include_directories(${ROCKX_HEADER_DIR})
|
# set(UVC_APP_DEPENDENT_LIBS
|
# ${UVC_APP_DEPENDENT_LIBS}
|
# easymedia
|
# rockx
|
# rga
|
# ${CMAKE_CURRENT_LIST_DIR}/libs/libuvcAlgorithm.so)
|
# set(SOURCE
|
# ${SOURCE}
|
# process/eptz_control.cpp
|
# process/zoom_control.cpp
|
# )
|
# set(Algorithm_LIBS ${CMAKE_CURRENT_LIST_DIR}/libs/libuvcAlgorithm.so)
|
# install(FILES ${Algorithm_LIBS} DESTINATION lib)
|
endif()
|
endif()
|
|
option(DBSERVER_SUPPORT "enbale dbserver" OFF)
|
if (${DBSERVER_SUPPORT})
|
add_definitions(-DDBSERVER_SUPPORT)
|
set(UVC_APP_DEPENDENT_LIBS ${UVC_APP_DEPENDENT_LIBS} IPCProtocol)
|
endif()
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
add_definitions(-DUSE_ARM64)
|
else()
|
target_link_libraries(rkuvc ${CMAKE_SOURCE_DIR}/libs/libmjpeg_fps_ctr.a)
|
SET(UVC_APP_DEPENDENT_LIBS
|
${UVC_APP_DEPENDENT_LIBS}
|
${CMAKE_SOURCE_DIR}/libs/libmjpeg_fps_ctr.a
|
)
|
|
option(ENABLE_MINILOGGER "enbale minilogger" ON)
|
if (${ENABLE_MINILOGGER})
|
find_package(MiniLogger REQUIRED)
|
add_definitions(-DENABLE_MINILOGGER)
|
set(UVC_APP_DEPENDENT_LIBS ${UVC_APP_DEPENDENT_LIBS} MiniLogger::MiniLogger)
|
target_link_libraries(rkuvc MiniLogger::MiniLogger)
|
endif()
|
endif()
|
|
option(COMPILES_CAMERA "compile:with rkmedia v4l2 flow " OFF)
|
option(EPTZ_SUPPORT "uvc support eptz" OFF)
|
if(COMPILES_CAMERA)
|
include_directories(process)
|
add_definitions(-DCAMERA_CONTROL)
|
set(SOURCE
|
${SOURCE}
|
process/camera_control.cpp
|
process/camera_pu_control.cpp
|
)
|
endif()
|
|
ADD_EXECUTABLE(uvc_app ${SOURCE})
|
target_link_libraries(uvc_app ${UVC_APP_DEPENDENT_LIBS} PkgConfig::JSON-C)
|
|
install(DIRECTORY ./uvc DESTINATION include
|
FILES_MATCHING PATTERN "*.h")
|
|
install(TARGETS uvc_app DESTINATION bin)
|
install(DIRECTORY . DESTINATION bin
|
FILES_MATCHING PATTERN "*.sh"
|
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
GROUP_READ GROUP_WRITE GROUP_EXECUTE
|
WORLD_READ WORLD_WRITE WORLD_EXECUTE)
|
|
if(EXISTS "mpp_enc_cfg.conf")
|
set(ETC_DST "${PROJECT_SOURCE_DIR}/../../target/etc/")
|
file(COPY mpp_enc_cfg.conf DESTINATION ${ETC_DST})
|
endif(EXISTS "mpp_enc_cfg.conf")
|
|
if(DEFINED INSTALL_LIBRKUVC)
|
install(TARGETS rkuvc DESTINATION lib)
|
endif()
|