CMakeLists.txt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. cmake_minimum_required(VERSION 3.22...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. add_subdirectory(image-source)
  40. if(OS_LINUX)
  41. add_subdirectory(linux-alsa)
  42. add_subdirectory(linux-capture)
  43. add_subdirectory(linux-jack)
  44. add_subdirectory(linux-pipewire)
  45. add_subdirectory(linux-pulseaudio)
  46. add_subdirectory(linux-v4l2)
  47. endif()
  48. if(OS_MACOS)
  49. add_subdirectory(mac-avcapture)
  50. add_subdirectory(mac-capture)
  51. add_subdirectory(mac-syphon)
  52. add_subdirectory(mac-videotoolbox)
  53. add_subdirectory(mac-virtualcam)
  54. endif()
  55. check_obs_browser()
  56. add_subdirectory(obs-ffmpeg)
  57. add_subdirectory(obs-filters)
  58. add_subdirectory(obs-outputs)
  59. if(OS_WINDOWS)
  60. add_subdirectory(obs-qsv11)
  61. add_subdirectory(obs-text)
  62. endif()
  63. add_subdirectory(obs-transitions)
  64. if(OS_WINDOWS
  65. OR OS_MACOS
  66. OR OS_LINUX)
  67. add_subdirectory(obs-vst)
  68. endif()
  69. add_subdirectory(obs-webrtc)
  70. check_obs_websocket()
  71. add_subdirectory(obs-x264)
  72. add_subdirectory(rtmp-services)
  73. if(OS_LINUX)
  74. add_subdirectory(sndio)
  75. endif()
  76. add_subdirectory(text-freetype2)
  77. if(OS_WINDOWS
  78. OR OS_MACOS
  79. OR OS_LINUX)
  80. add_subdirectory(vlc-video)
  81. endif()
  82. if(OS_WINDOWS)
  83. add_subdirectory(win-capture)
  84. add_subdirectory(win-dshow)
  85. add_subdirectory(win-wasapi)
  86. endif()
  87. return()
  88. endif()
  89. if(NOT ENABLE_PLUGINS)
  90. obs_status(STATUS "Building with plugins disabled.")
  91. return()
  92. endif()
  93. function(check_obs_browser)
  94. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt)
  95. add_subdirectory(obs-browser)
  96. else()
  97. obs_status(FATAL_ERROR "obs-browser submodule not available.")
  98. endif()
  99. endfunction()
  100. # APPLE/WIN32/UNIX are soft-deprecated: https://discourse.cmake.org/t/platform-id-vs-win32-vs-cmake-system-name/1226/2
  101. if(OS_WINDOWS)
  102. add_subdirectory(coreaudio-encoder)
  103. add_subdirectory(win-wasapi)
  104. add_subdirectory(win-dshow)
  105. add_subdirectory(win-capture)
  106. add_subdirectory(decklink)
  107. add_subdirectory(obs-qsv11)
  108. add_subdirectory(obs-text)
  109. add_subdirectory(vlc-video)
  110. add_subdirectory(obs-vst)
  111. check_obs_browser()
  112. elseif(OS_MACOS)
  113. add_subdirectory(coreaudio-encoder)
  114. add_subdirectory(mac-avcapture)
  115. add_subdirectory(mac-capture)
  116. add_subdirectory(mac-videotoolbox)
  117. add_subdirectory(mac-syphon)
  118. add_subdirectory(mac-virtualcam)
  119. add_subdirectory(decklink)
  120. add_subdirectory(vlc-video)
  121. add_subdirectory(linux-jack)
  122. add_subdirectory(obs-vst)
  123. check_obs_browser()
  124. elseif(OS_LINUX)
  125. add_subdirectory(linux-capture)
  126. add_subdirectory(linux-pulseaudio)
  127. add_subdirectory(linux-v4l2)
  128. add_subdirectory(linux-jack)
  129. add_subdirectory(linux-alsa)
  130. add_subdirectory(linux-pipewire)
  131. add_subdirectory(decklink)
  132. add_subdirectory(vlc-video)
  133. add_subdirectory(sndio)
  134. add_subdirectory(obs-vst)
  135. add_subdirectory(obs-qsv11)
  136. check_obs_browser()
  137. elseif(OS_FREEBSD)
  138. add_subdirectory(linux-capture)
  139. add_subdirectory(linux-pipewire)
  140. add_subdirectory(linux-pulseaudio)
  141. add_subdirectory(linux-v4l2)
  142. add_subdirectory(linux-jack)
  143. add_subdirectory(linux-alsa)
  144. add_subdirectory(vlc-video)
  145. add_subdirectory(oss-audio)
  146. add_subdirectory(sndio)
  147. obs_status(STATUS "obs-browser plugin not available.")
  148. obs_status(STATUS "obs-vst plugin not available.")
  149. elseif(OS_OPENBSD)
  150. add_subdirectory(linux-capture)
  151. add_subdirectory(sndio)
  152. obs_status(STATUS "obs-browser plugin not available.")
  153. obs_status(STATUS "obs-vst plugin not available.")
  154. endif()
  155. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/CMakeLists.txt)
  156. add_subdirectory(obs-websocket)
  157. else()
  158. obs_status(FATAL_ERROR "obs-websocket submodule not available.")
  159. endif()
  160. add_subdirectory(image-source)
  161. add_subdirectory(obs-x264)
  162. add_subdirectory(obs-libfdk)
  163. add_subdirectory(obs-ffmpeg)
  164. add_subdirectory(obs-outputs)
  165. add_subdirectory(obs-filters)
  166. add_subdirectory(obs-transitions)
  167. add_subdirectory(rtmp-services)
  168. add_subdirectory(text-freetype2)
  169. add_subdirectory(aja)
  170. add_subdirectory(obs-webrtc)