CMakeLists.txt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. cmake_minimum_required(VERSION 3.28...3.30)
  2. option(ENABLE_PIPEWIRE "Enable PipeWire support" ON)
  3. if(NOT ENABLE_PIPEWIRE)
  4. target_disable(linux-pipewire)
  5. return()
  6. endif()
  7. find_package(PipeWire 0.3.33 REQUIRED)
  8. find_package(Gio 2.76 REQUIRED)
  9. find_package(Libdrm REQUIRED)
  10. get_target_property(libdrm_include_directories Libdrm::Libdrm INTERFACE_INCLUDE_DIRECTORIES)
  11. add_library(linux-pipewire MODULE)
  12. add_library(OBS::pipewire ALIAS linux-pipewire)
  13. if(PipeWire_VERSION VERSION_GREATER_EQUAL 0.3.60)
  14. target_enable_feature(linux-pipewire "PipeWire 0.3.60+ camera support")
  15. set(_HAS_PIPEWIRE_CAMERA TRUE)
  16. else()
  17. set(_HAS_PIPEWIRE_CAMERA FALSE)
  18. endif()
  19. target_sources(
  20. linux-pipewire
  21. PRIVATE
  22. $<$<BOOL:${_HAS_PIPEWIRE_CAMERA}>:camera-portal.c>
  23. $<$<BOOL:${_HAS_PIPEWIRE_CAMERA}>:camera-portal.h>
  24. formats.c
  25. formats.h
  26. linux-pipewire.c
  27. pipewire.c
  28. pipewire.h
  29. portal.c
  30. portal.h
  31. screencast-portal.c
  32. screencast-portal.h
  33. )
  34. target_include_directories(linux-pipewire PRIVATE ${libdrm_include_directories})
  35. target_link_libraries(linux-pipewire PRIVATE OBS::libobs OBS::glad PipeWire::PipeWire gio::gio)
  36. set_target_properties_obs(linux-pipewire PROPERTIES FOLDER plugins PREFIX "")