cmake_minimum_required(VERSION 3.16) project(decklink-bridge CXX C) set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -O2") # Path to DeckLink SDK headers (services/capture/sdk/) set(DECKLINK_SDK_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../sdk" CACHE PATH "Path to Blackmagic DeckLink SDK headers") # Path to Deltacast bridge (for fc_writer.h/c — shared writer module) set(DELTACAST_BRIDGE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../deltacast-bridge" CACHE PATH "Path to deltacast-bridge (contains fc_writer.h/c)") # Legacy FIFO fallback option (mirrors deltacast-bridge option) option(LEGACY_FIFO "Use named FIFOs instead of framecache shm" OFF) # ── decklink-bridge executable ──────────────────────────────────────── add_executable(decklink-bridge main.cpp ${DELTACAST_BRIDGE_DIR}/fc_writer.c # shared framecache writer ) if(LEGACY_FIFO) target_compile_definitions(decklink-bridge PRIVATE LEGACY_FIFO=1) message(STATUS "decklink-bridge: LEGACY_FIFO mode enabled") else() message(STATUS "decklink-bridge: framecache shm mode enabled") endif() target_include_directories(decklink-bridge PRIVATE ${DECKLINK_SDK_DIR} ${DELTACAST_BRIDGE_DIR} # fc_writer.h ) target_link_libraries(decklink-bridge PRIVATE pthread rt # shm_open, sem_open dl # dlopen (used by DeckLinkAPIDispatch.cpp on Linux) ) # DeckLink driver is linked at runtime via dlopen (no link-time .so needed). # The SDK's DeckLinkAPIDispatch.cpp handles the dynamic loading. set_target_properties(decklink-bridge PROPERTIES INSTALL_RPATH "/usr/local/lib" BUILD_WITH_INSTALL_RPATH TRUE ) install(TARGETS decklink-bridge DESTINATION bin)