83 lines
2.8 KiB
CMake
83 lines
2.8 KiB
CMake
# Minimum version based on requirements from PRD (CMake >= 3.20)
|
|
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(rk3588_media_server
|
|
VERSION 0.1.0
|
|
DESCRIPTION "RK3588 media server bootstrap"
|
|
LANGUAGES C CXX)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
option(BUILD_SAMPLES "Build demo binaries" ON)
|
|
option(ENABLE_RK_DEMOS "Use official Rockchip demos that link against vendor SDKs" OFF)
|
|
|
|
set(RK_MPP_ROOT "${CMAKE_SOURCE_DIR}/third_party/mpp" CACHE PATH "Path to Rockchip MPP SDK root")
|
|
set(RK_MPP_LIB_PATH "" CACHE FILEPATH "Absolute path to librockchip_mpp.so built for RK3588")
|
|
set(RK_RKNN_ROOT "${CMAKE_SOURCE_DIR}/third_party/rknpu2" CACHE PATH "Path to Rockchip RKNN runtime repository")
|
|
set(RKNN_RUNTIME_LIB_DIR "${RK_RKNN_ROOT}/runtime/RK3588/Linux/librknn_api/aarch64" CACHE PATH "Directory containing librknnrt.so")
|
|
set(RKNN_RUNTIME_INCLUDE_DIR "${RK_RKNN_ROOT}/runtime/RK3588/Linux/librknn_api/include" CACHE PATH "include path for rknn_api.h")
|
|
set(RKNN_MODEL_PATH "${RK_RKNN_ROOT}/examples/rknn_api_demo/model/RK3588/mobilenet_v1.rknn" CACHE FILEPATH "Default RKNN demo model")
|
|
set(RKNN_SAMPLE_IMAGE "${RK_RKNN_ROOT}/examples/rknn_api_demo/model/dog_224x224.jpg" CACHE FILEPATH "Default RKNN demo input image")
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
# Helper target for common warnings
|
|
add_library(project_options INTERFACE)
|
|
if(MSVC)
|
|
target_compile_options(project_options INTERFACE /W4)
|
|
else()
|
|
target_compile_options(project_options INTERFACE -Wall -Wextra -Wpedantic)
|
|
endif()
|
|
|
|
# Resolve git revision if possible
|
|
find_package(Git QUIET)
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE RK_GIT_SHA
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
endif()
|
|
if(NOT RK_GIT_SHA)
|
|
set(RK_GIT_SHA "nogit")
|
|
endif()
|
|
|
|
set(SRC_FILES
|
|
src/main.cpp
|
|
src/media_server_app.cpp
|
|
src/graph_manager.cpp
|
|
src/plugin_loader.cpp
|
|
src/ai_scheduler.cpp
|
|
src/utils/dma_alloc.cpp
|
|
)
|
|
|
|
add_executable(media-server ${SRC_FILES})
|
|
set_target_properties(media-server PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
|
target_include_directories(media-server
|
|
PRIVATE
|
|
${CMAKE_SOURCE_DIR}/include
|
|
${CMAKE_SOURCE_DIR}/third_party
|
|
)
|
|
target_link_libraries(media-server PRIVATE project_options Threads::Threads)
|
|
target_compile_definitions(media-server PRIVATE
|
|
RK_PROJECT_VERSION="${PROJECT_VERSION}"
|
|
RK_GIT_SHA="${RK_GIT_SHA}"
|
|
)
|
|
|
|
install(TARGETS media-server RUNTIME DESTINATION bin)
|
|
|
|
if(BUILD_SAMPLES)
|
|
add_subdirectory(samples)
|
|
endif()
|
|
|
|
add_subdirectory(plugins)
|
|
|
|
include(GNUInstallDirs)
|
|
install(FILES configs/sample_cam1.json DESTINATION ${CMAKE_INSTALL_DATADIR}/rk3588-media-server)
|