1
0

legacy.cmake 3.3 KB

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