CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. project(linux-capture)
  2. find_package(X11 REQUIRED)
  3. if(NOT X11_Xcomposite_FOUND)
  4. message(STATUS "Xcomposite library not found, linux-capture plugin disabled")
  5. return()
  6. endif()
  7. find_package(XCB COMPONENTS XCB RANDR SHM XFIXES XINERAMA REQUIRED)
  8. find_package(X11_XCB REQUIRED)
  9. set(linux-capture_INCLUDES
  10. "${CMAKE_SOURCE_DIR}/libobs"
  11. ${X11_Xcomposite_INCLUDE_PATH}
  12. ${X11_X11_INCLUDE_PATH}
  13. ${XCB_INCLUDE_DIRS}
  14. )
  15. set(linux-capture_SOURCES
  16. linux-capture.c
  17. xcursor.c
  18. xcursor-xcb.c
  19. xhelpers.c
  20. xshm-input.c
  21. xcomposite-main.cpp
  22. xcompcap-main.cpp
  23. xcompcap-helper.cpp
  24. )
  25. set(linux-capture_HEADERS
  26. xcursor.h
  27. xcursor-xcb.h
  28. xhelpers.h
  29. xcompcap-main.hpp
  30. xcompcap-helper.hpp
  31. )
  32. set(linux-capture_LIBRARIES
  33. libobs
  34. glad
  35. ${X11_LIBRARIES}
  36. ${X11_Xfixes_LIB}
  37. ${X11_X11_LIB}
  38. ${X11_Xcomposite_LIB}
  39. ${XCB_LIBRARIES}
  40. )
  41. option(ENABLE_PIPEWIRE "Enable PipeWire support" ON)
  42. if(ENABLE_PIPEWIRE)
  43. find_package(PipeWire 0.3.32 QUIET)
  44. find_package(Libdrm QUIET) # we require libdrm/drm_fourcc.h to build
  45. find_package(Gio QUIET)
  46. if(NOT PIPEWIRE_FOUND)
  47. message(FATAL_ERROR "PipeWire library not found! Please install PipeWire or set ENABLE_PIPEWIRE=OFF")
  48. elseif(NOT GIO_FOUND)
  49. message(FATAL_ERROR "Gio library not found! Please install GLib2 (or Gio) or set ENABLE_PIPEWIRE=OFF")
  50. elseif(NOT LIBDRM_INCLUDE_DIRS)
  51. message(FATAL_ERROR "libdrm headers not found! Please install libdrm or set ENABLE_PIPEWIRE=OFF")
  52. endif()
  53. add_definitions(-DENABLE_PIPEWIRE)
  54. set(linux-capture_INCLUDES
  55. ${linux-capture_INCLUDES}
  56. ${GIO_INCLUDE_DIRS}
  57. ${PIPEWIRE_INCLUDE_DIRS}
  58. ${DRM_INCLUDE_DIRS}
  59. )
  60. add_definitions(
  61. ${GIO_DEFINITIONS}
  62. ${PIPEWIRE_DEFINITIONS}
  63. )
  64. set(linux-capture_SOURCES
  65. ${linux-capture_SOURCES}
  66. pipewire.c
  67. pipewire-capture.c
  68. portal.c
  69. )
  70. set(linux-capture_HEADERS
  71. ${linux-capture_HEADERS}
  72. pipewire.h
  73. pipewire-capture.h
  74. portal.h
  75. )
  76. set(linux-capture_LIBRARIES
  77. ${linux-capture_LIBRARIES}
  78. ${GIO_LIBRARIES}
  79. ${PIPEWIRE_LIBRARIES}
  80. )
  81. endif()
  82. include_directories(SYSTEM
  83. ${linux-capture_INCLUDES}
  84. )
  85. add_library(linux-capture MODULE
  86. ${linux-capture_SOURCES}
  87. ${linux-capture_HEADERS}
  88. )
  89. target_link_libraries(linux-capture
  90. ${linux-capture_LIBRARIES}
  91. )
  92. set_target_properties(linux-capture PROPERTIES FOLDER "plugins")
  93. install_obs_plugin_with_data(linux-capture data)