aae3a6a466
Status output related to OBS configuration is prefixed with the string "OBS" and added padding for enabled and disabled features. This padding was not aligned between platforms. By moving the padding and prefix decoration into its own function, both elements are controlled in a single place. CMake scripts were changed to use this new function `obs_status` instead of using CMake's `message` function directly.
107 lines
3.3 KiB
CMake
107 lines
3.3 KiB
CMake
project(decklink)
|
|
|
|
option(ENABLE_DECKLINK "Build OBS with Decklink support" ON)
|
|
if(NOT ENABLE_DECKLINK)
|
|
obs_status(DISABLED "decklink")
|
|
return()
|
|
endif()
|
|
|
|
if(OS_WINDOWS)
|
|
include(IDLFileHelper)
|
|
add_idl_files(win-decklink-sdk_GENERATED_FILES
|
|
win/decklink-sdk/DeckLinkAPI.idl)
|
|
endif()
|
|
|
|
add_library(decklink MODULE)
|
|
add_library(OBS::decklink ALIAS decklink)
|
|
|
|
add_library(decklink-sdk INTERFACE)
|
|
add_library(Decklink::SDK ALIAS decklink-sdk)
|
|
|
|
target_sources(
|
|
decklink
|
|
PRIVATE OBSVideoFrame.cpp
|
|
OBSVideoFrame.h
|
|
audio-repack.c
|
|
audio-repack.h
|
|
audio-repack.hpp
|
|
const.h
|
|
decklink-device.cpp
|
|
decklink-device.hpp
|
|
decklink-devices.cpp
|
|
decklink-devices.hpp
|
|
decklink-device-discovery.cpp
|
|
decklink-device-discovery.hpp
|
|
decklink-device-instance.cpp
|
|
decklink-device-instance.hpp
|
|
decklink-device-mode.cpp
|
|
decklink-device-mode.hpp
|
|
decklink-output.cpp
|
|
decklink-source.cpp
|
|
DecklinkBase.cpp
|
|
DecklinkBase.h
|
|
DecklinkInput.cpp
|
|
DecklinkInput.hpp
|
|
DecklinkOutput.cpp
|
|
DecklinkOutput.hpp
|
|
platform.hpp
|
|
plugin-main.cpp
|
|
util.cpp
|
|
util.hpp)
|
|
|
|
target_include_directories(decklink-sdk INTERFACE ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
target_link_libraries(decklink PRIVATE OBS::libobs OBS::caption Decklink::SDK)
|
|
|
|
set_target_properties(decklink PROPERTIES FOLDER "plugins/decklink")
|
|
|
|
if(OS_WINDOWS)
|
|
set(MODULE_DESCRIPTION "OBS DeckLink Windows module")
|
|
configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in
|
|
win-decklink.rc)
|
|
|
|
target_sources(decklink PRIVATE win/platform.cpp win-decklink.rc)
|
|
|
|
target_sources(decklink-sdk INTERFACE win/decklink-sdk/DeckLinkAPIVersion.h
|
|
${win-decklink-sdk_GENERATED_FILES})
|
|
|
|
elseif(OS_MACOS)
|
|
find_library(COREFOUNDATION CoreFoundation)
|
|
mark_as_advanced(COREFOUNDATION)
|
|
|
|
target_sources(decklink PRIVATE mac/platform.cpp)
|
|
|
|
target_sources(
|
|
decklink-sdk
|
|
INTERFACE mac/decklink-sdk/DeckLinkAPIDispatch.cpp
|
|
mac/decklink-sdk/DeckLinkAPI.h
|
|
mac/decklink-sdk/DeckLinkAPIConfiguration.h
|
|
mac/decklink-sdk/DeckLinkAPIDeckControl.h
|
|
mac/decklink-sdk/DeckLinkAPIDiscovery.h
|
|
mac/decklink-sdk/DeckLinkAPIModes.h
|
|
mac/decklink-sdk/DeckLinkAPIStreaming.h
|
|
mac/decklink-sdk/DeckLinkAPITypes.h
|
|
mac/decklink-sdk/DeckLinkAPIVersion.h)
|
|
|
|
target_link_libraries(decklink PRIVATE ${COREFOUNDATION})
|
|
|
|
target_compile_features(decklink PRIVATE cxx_auto_type)
|
|
elseif(OS_POSIX)
|
|
target_sources(decklink PRIVATE linux/platform.cpp)
|
|
|
|
target_sources(
|
|
decklink-sdk
|
|
INTERFACE linux/decklink-sdk/DeckLinkAPIDispatch.cpp
|
|
linux/decklink-sdk/DeckLinkAPI.h
|
|
linux/decklink-sdk/DeckLinkAPIConfiguration.h
|
|
linux/decklink-sdk/DeckLinkAPIDeckControl.h
|
|
linux/decklink-sdk/DeckLinkAPIDiscovery.h
|
|
linux/decklink-sdk/DeckLinkAPIModes.h
|
|
linux/decklink-sdk/DeckLinkAPITypes.h
|
|
linux/decklink-sdk/DeckLinkAPIVersion.h
|
|
linux/decklink-sdk/LinuxCOM.h)
|
|
endif()
|
|
|
|
setup_plugin_target(decklink)
|
|
setup_target_resources(decklink "obs-plugins/decklink")
|