CMakeLists.txt 3.0 KB

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