os-linux.cmake 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. cmake_minimum_required(VERSION 3.22...3.25)
  2. find_package(LibUUID REQUIRED)
  3. find_package(X11 REQUIRED)
  4. find_package(x11-xcb REQUIRED)
  5. find_package(
  6. xcb
  7. COMPONENTS xcb
  8. OPTIONAL_COMPONENTS xcb-xinput
  9. QUIET)
  10. find_package(gio)
  11. target_link_libraries(libobs PRIVATE X11::x11-xcb xcb::xcb LibUUID::LibUUID ${CMAKE_DL_LIBS})
  12. if(TARGET xcb::xcb-xinput)
  13. target_link_libraries(libobs PRIVATE xcb::xcb-xinput)
  14. endif()
  15. target_compile_definitions(libobs PRIVATE USE_XDG
  16. $<$<OR:$<C_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:GNU>>:ENABLE_DARRAY_TYPE_TEST>)
  17. target_sources(
  18. libobs
  19. PRIVATE obs-nix.c
  20. obs-nix-platform.c
  21. obs-nix-platform.h
  22. obs-nix-x11.c
  23. util/pipe-posix.c
  24. util/platform-nix.c
  25. util/threading-posix.c
  26. util/threading-posix.h)
  27. if(ENABLE_PULSEAUDIO)
  28. find_package(PulseAudio REQUIRED)
  29. target_sources(
  30. libobs
  31. PRIVATE audio-monitoring/pulse/pulseaudio-enum-devices.c audio-monitoring/pulse/pulseaudio-output.c
  32. audio-monitoring/pulse/pulseaudio-monitoring-available.c audio-monitoring/pulse/pulseaudio-wrapper.c
  33. audio-monitoring/pulse/pulseaudio-wrapper.h)
  34. target_link_libraries(libobs PRIVATE PulseAudio::PulseAudio)
  35. target_enable_feature(libobs "PulseAudio audio monitoring (Linux)")
  36. else()
  37. target_sources(libobs PRIVATE audio-monitoring/null/null-audio-monitoring.c)
  38. target_disable_feature(libobs "PulseAudio audio monitoring (Linux)")
  39. endif()
  40. if(TARGET gio::gio)
  41. target_link_libraries(libobs PRIVATE gio::gio)
  42. target_sources(libobs PRIVATE util/platform-nix-dbus.c util/platform-nix-portal.c)
  43. endif()
  44. if(ENABLE_WAYLAND)
  45. find_package(
  46. Wayland
  47. COMPONENTS Client
  48. REQUIRED)
  49. find_package(xkbcommon REQUIRED)
  50. target_link_libraries(libobs PRIVATE Wayland::Client xkbcommon::xkbcommon)
  51. target_sources(libobs PRIVATE obs-nix-wayland.c)
  52. target_enable_feature(libobs "Wayland compositor support (Linux)")
  53. else()
  54. target_disable_feature(libobs "Wayland compositor support (Linux)")
  55. endif()
  56. set_target_properties(libobs PROPERTIES OUTPUT_NAME obs)