CMakeLists.txt 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. cmake_minimum_required(VERSION 3.28...3.30)
  2. option(ENABLE_DECKLINK "Build OBS with Decklink support" ON)
  3. if(NOT ENABLE_DECKLINK)
  4. target_disable(decklink)
  5. return()
  6. endif()
  7. add_library(decklink MODULE)
  8. add_library(OBS::decklink ALIAS decklink)
  9. add_library(decklink-sdk INTERFACE)
  10. add_library(Decklink::SDK ALIAS decklink-sdk)
  11. target_sources(
  12. decklink-sdk
  13. INTERFACE
  14. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPI.h>"
  15. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPIConfiguration.h>"
  16. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPIDeckControl.h>"
  17. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPIDiscovery.h>"
  18. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPIDispatch.cpp>"
  19. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPIModes.h>"
  20. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPIStreaming.h>"
  21. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPITypes.h>"
  22. "$<$<PLATFORM_ID:Darwin>:${CMAKE_CURRENT_SOURCE_DIR}/mac/decklink-sdk/DeckLinkAPIVersion.h>"
  23. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPI.h>"
  24. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPIConfiguration.h>"
  25. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPIDeckControl.h>"
  26. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPIDiscovery.h>"
  27. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPIDispatch.cpp>"
  28. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPIModes.h>"
  29. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPITypes.h>"
  30. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/DeckLinkAPIVersion.h>"
  31. "$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:${CMAKE_CURRENT_SOURCE_DIR}/linux/decklink-sdk/LinuxCOM.h>"
  32. "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_SOURCE_DIR}/win/decklink-sdk/DeckLinkAPIVersion.h>"
  33. )
  34. target_sources(
  35. decklink
  36. PRIVATE
  37. $<$<PLATFORM_ID:Darwin>:mac/platform.cpp>
  38. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:linux/platform.cpp>
  39. $<$<PLATFORM_ID:Windows>:win/platform.cpp>
  40. audio-repack.c
  41. audio-repack.h
  42. audio-repack.hpp
  43. const.h
  44. decklink-device-discovery.cpp
  45. decklink-device-discovery.hpp
  46. decklink-device-instance.cpp
  47. decklink-device-instance.hpp
  48. decklink-device-mode.cpp
  49. decklink-device-mode.hpp
  50. decklink-device.cpp
  51. decklink-device.hpp
  52. decklink-devices.cpp
  53. decklink-devices.hpp
  54. decklink-output.cpp
  55. decklink-source.cpp
  56. DecklinkBase.cpp
  57. DecklinkBase.h
  58. DecklinkInput.cpp
  59. DecklinkInput.hpp
  60. DecklinkOutput.cpp
  61. DecklinkOutput.hpp
  62. OBSVideoFrame.cpp
  63. OBSVideoFrame.h
  64. platform.hpp
  65. plugin-main.cpp
  66. util.cpp
  67. util.hpp
  68. )
  69. target_link_libraries(
  70. decklink
  71. PRIVATE
  72. OBS::libobs
  73. OBS::caption
  74. Decklink::SDK
  75. "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,CoreFoundation.framework>>"
  76. )
  77. if(OS_WINDOWS)
  78. configure_file(cmake/windows/obs-module.rc.in win-decklink.rc)
  79. target_sources(decklink PRIVATE win-decklink.rc)
  80. include(idlfilehelper)
  81. target_add_idl_files(decklink win/decklink-sdk/DeckLinkAPI.idl)
  82. set_source_files_properties(win/decklink-sdk/DeckLinkAPIVersion.h PROPERTIES GENERATED TRUE)
  83. target_sources(decklink-sdk INTERFACE win/decklink-sdk/DeckLinkAPIVersion.h)
  84. endif()
  85. set_target_properties_obs(decklink PROPERTIES FOLDER plugins/decklink PREFIX "")