CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. cmake_minimum_required(VERSION 3.16...3.25)
  2. option(ENABLE_PLUGINS "Enable building OBS plugins" ON)
  3. if(OBS_CMAKE_VERSION VERSION_GREATER_EQUAL 3.0.0)
  4. if(NOT ENABLE_PLUGINS)
  5. set_property(GLOBAL APPEND PROPERTY OBS_FEATURES_DISABLED "Plugin Support")
  6. return()
  7. endif()
  8. set_property(GLOBAL APPEND PROPERTY OBS_FEATURES_ENABLED "Plugin Support")
  9. macro(check_obs_browser)
  10. if(NOT (OS_WINDOWS AND NOT CMAKE_GENERATOR_PLATFORM MATCHES "(Win32|x64)"))
  11. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/cmake/macos/Info.plist.in")
  12. add_subdirectory(obs-browser)
  13. elseif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt")
  14. message(FATAL_ERROR "Required submodule 'obs-browser' not available.")
  15. endif()
  16. endif()
  17. endmacro()
  18. macro(check_obs_websocket)
  19. if(OS_WINDOWS
  20. OR OS_MACOS
  21. OR OS_LINUX)
  22. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/cmake/macos/Info.plist.in")
  23. add_subdirectory(obs-websocket)
  24. elseif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/CMakeLists.txt")
  25. message(FATAL_ERROR "Required submodule 'obs-websocket' not available.")
  26. endif()
  27. endif()
  28. endmacro()
  29. # Add plugins in alphabetical order to retain order in IDE projects
  30. add_subdirectory(aja)
  31. if(OS_WINDOWS OR OS_MACOS)
  32. add_subdirectory(coreaudio-encoder)
  33. endif()
  34. if(OS_WINDOWS
  35. OR OS_MACOS
  36. OR OS_LINUX)
  37. add_subdirectory(decklink)
  38. endif()
  39. if(OS_WINDOWS)
  40. add_subdirectory(enc-amf)
  41. endif()
  42. add_subdirectory(image-source)
  43. if(OS_LINUX)
  44. add_subdirectory(linux-alsa)
  45. add_subdirectory(linux-capture)
  46. add_subdirectory(linux-jack)
  47. add_subdirectory(linux-pipewire)
  48. add_subdirectory(linux-pulseaudio)
  49. add_subdirectory(linux-v4l2)
  50. endif()
  51. if(OS_MACOS)
  52. add_subdirectory(mac-avcapture)
  53. add_subdirectory(mac-capture)
  54. add_subdirectory(mac-syphon)
  55. add_subdirectory(mac-videotoolbox)
  56. add_subdirectory(mac-virtualcam)
  57. endif()
  58. check_obs_browser()
  59. add_subdirectory(obs-ffmpeg)
  60. add_subdirectory(obs-filters)
  61. add_subdirectory(obs-outputs)
  62. if(OS_WINDOWS)
  63. add_subdirectory(obs-qsv11)
  64. add_subdirectory(obs-text)
  65. endif()
  66. add_subdirectory(obs-transitions)
  67. if(OS_WINDOWS
  68. OR OS_MACOS
  69. OR OS_LINUX)
  70. add_subdirectory(obs-vst)
  71. endif()
  72. add_subdirectory(obs-webrtc)
  73. check_obs_websocket()
  74. add_subdirectory(obs-x264)
  75. add_subdirectory(rtmp-services)
  76. if(OS_LINUX)
  77. add_subdirectory(sndio)
  78. endif()
  79. add_subdirectory(text-freetype2)
  80. if(OS_WINDOWS
  81. OR OS_MACOS
  82. OR OS_LINUX)
  83. add_subdirectory(vlc-video)
  84. endif()
  85. if(OS_WINDOWS)
  86. add_subdirectory(win-capture)
  87. add_subdirectory(win-dshow)
  88. add_subdirectory(win-wasapi)
  89. endif()
  90. return()
  91. endif()
  92. if(NOT ENABLE_PLUGINS)
  93. obs_status(STATUS "Building with plugins disabled.")
  94. return()
  95. endif()
  96. function(check_obs_browser)
  97. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt)
  98. add_subdirectory(obs-browser)
  99. else()
  100. obs_status(FATAL_ERROR "obs-browser submodule not available.")
  101. endif()
  102. endfunction()
  103. # APPLE/WIN32/UNIX are soft-deprecated: https://discourse.cmake.org/t/platform-id-vs-win32-vs-cmake-system-name/1226/2
  104. if(OS_WINDOWS)
  105. add_subdirectory(coreaudio-encoder)
  106. add_subdirectory(win-wasapi)
  107. add_subdirectory(win-dshow)
  108. add_subdirectory(win-capture)
  109. add_subdirectory(decklink)
  110. add_subdirectory(obs-qsv11)
  111. add_subdirectory(obs-text)
  112. add_subdirectory(vlc-video)
  113. add_subdirectory(obs-vst)
  114. if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/enc-amf/CMakeLists.txt")
  115. add_subdirectory(enc-amf)
  116. else()
  117. obs_status(WARNING "enc-amf plugin not found.")
  118. endif()
  119. check_obs_browser()
  120. elseif(OS_MACOS)
  121. add_subdirectory(coreaudio-encoder)
  122. add_subdirectory(mac-avcapture)
  123. add_subdirectory(mac-capture)
  124. add_subdirectory(mac-videotoolbox)
  125. add_subdirectory(mac-syphon)
  126. add_subdirectory(mac-virtualcam)
  127. add_subdirectory(decklink)
  128. add_subdirectory(vlc-video)
  129. add_subdirectory(linux-jack)
  130. add_subdirectory(obs-vst)
  131. check_obs_browser()
  132. elseif(OS_LINUX)
  133. add_subdirectory(linux-capture)
  134. add_subdirectory(linux-pulseaudio)
  135. add_subdirectory(linux-v4l2)
  136. add_subdirectory(linux-jack)
  137. add_subdirectory(linux-alsa)
  138. add_subdirectory(linux-pipewire)
  139. add_subdirectory(decklink)
  140. add_subdirectory(vlc-video)
  141. add_subdirectory(sndio)
  142. add_subdirectory(obs-vst)
  143. add_subdirectory(obs-qsv11)
  144. check_obs_browser()
  145. elseif(OS_FREEBSD)
  146. add_subdirectory(linux-capture)
  147. add_subdirectory(linux-pipewire)
  148. add_subdirectory(linux-pulseaudio)
  149. add_subdirectory(linux-v4l2)
  150. add_subdirectory(linux-jack)
  151. add_subdirectory(linux-alsa)
  152. add_subdirectory(vlc-video)
  153. add_subdirectory(oss-audio)
  154. add_subdirectory(sndio)
  155. obs_status(STATUS "obs-browser plugin not available.")
  156. obs_status(STATUS "obs-vst plugin not available.")
  157. elseif(OS_OPENBSD)
  158. add_subdirectory(linux-capture)
  159. add_subdirectory(sndio)
  160. obs_status(STATUS "obs-browser plugin not available.")
  161. obs_status(STATUS "obs-vst plugin not available.")
  162. endif()
  163. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/CMakeLists.txt)
  164. add_subdirectory(obs-websocket)
  165. else()
  166. obs_status(FATAL_ERROR "obs-websocket submodule not available.")
  167. endif()
  168. add_subdirectory(image-source)
  169. add_subdirectory(obs-x264)
  170. add_subdirectory(obs-libfdk)
  171. add_subdirectory(obs-ffmpeg)
  172. add_subdirectory(obs-outputs)
  173. add_subdirectory(obs-filters)
  174. add_subdirectory(obs-transitions)
  175. add_subdirectory(rtmp-services)
  176. add_subdirectory(text-freetype2)
  177. add_subdirectory(aja)
  178. add_subdirectory(obs-webrtc)