OrangePi3588Media/CMakeLists.txt

89 lines
2.9 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/http_server.cpp
src/utils/dma_alloc.cpp
src/utils/config_expand.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)
if(WIN32)
target_link_libraries(media-server PRIVATE ws2_32)
endif()
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)