0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
obs-studio/plugins/decklink/CMakeLists.txt
PatTheMav aae3a6a466 cmake: Fix diverging prefix padding for OBS status outputs
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.
2022-03-26 09:44:23 -04:00

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")