|
@@ -1,29 +1,34 @@
|
|
|
-project(linux-pipewire)
|
|
|
+cmake_minimum_required(VERSION 3.22...3.25)
|
|
|
+
|
|
|
+legacy_check()
|
|
|
|
|
|
option(ENABLE_PIPEWIRE "Enable PipeWire support" ON)
|
|
|
if(NOT ENABLE_PIPEWIRE)
|
|
|
- obs_status(DISABLED "linux-pipewire")
|
|
|
+ target_disable(linux-pipewire)
|
|
|
return()
|
|
|
endif()
|
|
|
|
|
|
find_package(PipeWire 0.3.33 REQUIRED)
|
|
|
-find_package(Gio QUIET)
|
|
|
-find_package(Libdrm QUIET) # we require libdrm/drm_fourcc.h to build
|
|
|
-
|
|
|
-if(NOT TARGET PipeWire::PipeWire)
|
|
|
- obs_status(FATAL_ERROR "PipeWire library not found! Please install PipeWire or set ENABLE_PIPEWIRE=OFF.")
|
|
|
-elseif(NOT TARGET GIO::GIO)
|
|
|
- obs_status(FATAL_ERROR "Gio library not found! Please install GLib2 (or Gio) or set ENABLE_PIPEWIRE=OFF.")
|
|
|
-elseif(NOT TARGET Libdrm::Libdrm)
|
|
|
- obs_status(FATAL_ERROR "libdrm headers not found! Please install libdrm or set ENABLE_PIPEWIRE=OFF.")
|
|
|
-endif()
|
|
|
+find_package(Gio REQUIRED)
|
|
|
+find_package(Libdrm REQUIRED)
|
|
|
+get_target_property(libdrm_include_directories Libdrm::Libdrm INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
|
|
add_library(linux-pipewire MODULE)
|
|
|
add_library(OBS::pipewire ALIAS linux-pipewire)
|
|
|
|
|
|
+if(PipeWire_VERSION VERSION_GREATER_EQUAL 0.3.60)
|
|
|
+ target_enable_feature(linux-pipewire "PipeWire 0.3.60+ camera support")
|
|
|
+ set(_HAS_PIPEWIRE_CAMERA TRUE)
|
|
|
+else()
|
|
|
+ set(_HAS_PIPEWIRE_CAMERA FALSE)
|
|
|
+endif()
|
|
|
+
|
|
|
target_sources(
|
|
|
linux-pipewire
|
|
|
- PRIVATE formats.c
|
|
|
+ PRIVATE # cmake-format: sortable
|
|
|
+ $<$<BOOL:${_HAS_PIPEWIRE_CAMERA}>:camera-portal.c>
|
|
|
+ $<$<BOOL:${_HAS_PIPEWIRE_CAMERA}>:camera-portal.h>
|
|
|
+ formats.c
|
|
|
formats.h
|
|
|
linux-pipewire.c
|
|
|
pipewire.c
|
|
@@ -33,14 +38,8 @@ target_sources(
|
|
|
screencast-portal.c
|
|
|
screencast-portal.h)
|
|
|
|
|
|
-target_link_libraries(linux-pipewire PRIVATE OBS::libobs OBS::obsglad PipeWire::PipeWire GIO::GIO Libdrm::Libdrm)
|
|
|
-
|
|
|
-if(PIPEWIRE_VERSION VERSION_GREATER_EQUAL 0.3.60)
|
|
|
- obs_status(STATUS "PipeWire 0.3.60+ found, enabling camera support")
|
|
|
-
|
|
|
- target_sources(linux-pipewire PRIVATE camera-portal.c camera-portal.h)
|
|
|
-endif()
|
|
|
+target_include_directories(linux-pipewire PRIVATE ${libdrm_include_directories})
|
|
|
|
|
|
-set_target_properties(linux-pipewire PROPERTIES FOLDER "plugins")
|
|
|
+target_link_libraries(linux-pipewire PRIVATE OBS::libobs OBS::glad PipeWire::PipeWire gio::gio)
|
|
|
|
|
|
-setup_plugin_target(linux-pipewire)
|
|
|
+set_target_properties_obs(linux-pipewire PROPERTIES FOLDER plugins PREFIX "")
|