Files
cvmmap-streamer/CMakeLists.txt
T

110 lines
3.2 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(cvmmap-streamer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(Threads REQUIRED)
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/lib/CLI11/CMakeLists.txt")
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/lib/CLI11" "${CMAKE_CURRENT_BINARY_DIR}/vendor/cli11")
endif()
find_package(cppzmq QUIET)
find_package(ZeroMQ QUIET)
find_package(spdlog REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GSTREAMER
IMPORTED_TARGET
gstreamer-1.0>=1.14
gstreamer-video-1.0>=1.14
gstreamer-app-1.0>=1.14)
if (NOT GSTREAMER_FOUND)
message(FATAL_ERROR
"GStreamer development packages are required for cvmmap-streamer. "
"Install pkg-config modules: gstreamer-1.0>=1.14, gstreamer-video-1.0>=1.14, "
"and gstreamer-app-1.0>=1.14.")
endif()
add_library(cvmmap_streamer_common STATIC
src/ipc/help.cpp
src/config/runtime_config.cpp
src/core/frame_source.cpp
src/core/ingest_runtime.cpp
src/ipc/contracts.cpp
src/sim/wire.cpp
lib/cvmmap-client-cpp/app_cvmmap_client.cpp
lib/cvmmap-client-cpp/app_cvmmap_parser.cpp
src/metrics/latency_tracker.cpp
src/pipeline/pipeline_runtime.cpp
src/protocol/rtmp_publisher.cpp
src/protocol/rtp_publisher.cpp)
target_include_directories(cvmmap_streamer_common
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/include"
PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/lib/cvmmap-client-cpp"
"${CMAKE_CURRENT_LIST_DIR}/lib/cvmmap-client-cpp/include")
set(CVMAP_STREAMER_LINK_DEPS Threads::Threads)
if (TARGET cppzmq::cppzmq)
list(APPEND CVMAP_STREAMER_LINK_DEPS cppzmq::cppzmq)
elseif (TARGET cppzmq)
list(APPEND CVMAP_STREAMER_LINK_DEPS cppzmq)
endif()
if (TARGET ZeroMQ::libzmq)
list(APPEND CVMAP_STREAMER_LINK_DEPS ZeroMQ::libzmq)
elseif (TARGET ZeroMQ::ZeroMQ)
list(APPEND CVMAP_STREAMER_LINK_DEPS ZeroMQ::ZeroMQ)
endif()
if (TARGET ZeroMQ::cppzmq)
list(APPEND CVMAP_STREAMER_LINK_DEPS ZeroMQ::cppzmq)
elseif (TARGET cppzmq::cppzmq)
list(APPEND CVMAP_STREAMER_LINK_DEPS cppzmq::cppzmq)
endif()
if (NOT TARGET PkgConfig::GSTREAMER)
message(FATAL_ERROR
"GStreamer packages were detected but PkgConfig::GSTREAMER target is unavailable. "
"Please ensure GStreamer development toolchain is correctly installed.")
endif()
list(APPEND CVMAP_STREAMER_LINK_DEPS PkgConfig::GSTREAMER)
if (TARGET spdlog::spdlog)
list(APPEND CVMAP_STREAMER_LINK_DEPS spdlog::spdlog)
elseif (TARGET spdlog)
list(APPEND CVMAP_STREAMER_LINK_DEPS spdlog)
endif()
if (TARGET CLI11::CLI11)
list(APPEND CVMAP_STREAMER_LINK_DEPS CLI11::CLI11)
endif()
target_link_libraries(cvmmap_streamer_common PUBLIC ${CVMAP_STREAMER_LINK_DEPS})
function(add_cvmmap_binary target source)
add_executable(${target} ${source} ${ARGN})
target_include_directories(${target}
PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/include")
target_link_libraries(${target}
PRIVATE
cvmmap_streamer_common)
set_target_properties(${target} PROPERTIES OUTPUT_NAME "${target}")
endfunction()
add_cvmmap_binary(cvmmap_streamer src/main_streamer.cpp)
add_cvmmap_binary(rtp_receiver_tester src/testers/rtp_receiver_tester.cpp)
add_cvmmap_binary(rtmp_stub_tester src/testers/rtmp_stub_tester.cpp)
add_cvmmap_binary(ipc_snapshot_tester src/testers/ipc_snapshot_tester.cpp)