os-freebsd.cmake 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. find_package(LibUUID REQUIRED)
  2. find_package(X11 REQUIRED)
  3. find_package(X11-xcb REQUIRED)
  4. find_package(Xcb REQUIRED xcb OPTIONAL_COMPONENTS xcb-xinput)
  5. find_package(Gio)
  6. find_package(Sysinfo REQUIRED)
  7. set(CMAKE_M_LIBS "")
  8. include(CheckCSourceCompiles)
  9. set(LIBM_TEST_SOURCE "#include<math.h>\nfloat f; int main(){sqrt(f);return 0;}")
  10. check_c_source_compiles("${LIBM_TEST_SOURCE}" HAVE_MATH_IN_STD_LIB)
  11. set(CMAKE_REQUIRED_INCLUDES "/usr/local/include")
  12. set(UUID_TEST_SOURCE "#include<uuid/uuid.h>\nint main(){return 0;}")
  13. check_c_source_compiles("${UUID_TEST_SOURCE}" HAVE_UUID_HEADER)
  14. if(NOT HAVE_UUID_HEADER)
  15. message(FATAL_ERROR "Required system header <uuid/uuid.h> not found.")
  16. endif()
  17. target_sources(
  18. libobs
  19. PRIVATE
  20. obs-nix-platform.c
  21. obs-nix-platform.h
  22. obs-nix-x11.c
  23. obs-nix.c
  24. util/pipe-posix.c
  25. util/platform-nix.c
  26. util/threading-posix.c
  27. util/threading-posix.h
  28. )
  29. target_compile_definitions(
  30. libobs
  31. PRIVATE
  32. OBS_INSTALL_PREFIX="${OBS_INSTALL_PREFIX}"
  33. $<$<COMPILE_LANG_AND_ID:C,GNU>:ENABLE_DARRAY_TYPE_TEST>
  34. $<$<COMPILE_LANG_AND_ID:CXX,GNU>:ENABLE_DARRAY_TYPE_TEST>
  35. )
  36. target_link_libraries(
  37. libobs
  38. PRIVATE
  39. X11::x11-xcb
  40. xcb::xcb
  41. LibUUID::LibUUID
  42. Sysinfo::Sysinfo
  43. ${CMAKE_DL_LIBS}
  44. $<$<NOT:$<BOOL:${HAVE_MATH_IN_STD_LIB}>>:m>
  45. $<$<TARGET_EXISTS:xcb::xcb-input>:xcb::xcb-input>
  46. )
  47. if(ENABLE_PULSEAUDIO)
  48. find_package(PulseAudio REQUIRED)
  49. target_sources(
  50. libobs
  51. PRIVATE
  52. audio-monitoring/pulse/pulseaudio-enum-devices.c
  53. audio-monitoring/pulse/pulseaudio-monitoring-available.c
  54. audio-monitoring/pulse/pulseaudio-output.c
  55. audio-monitoring/pulse/pulseaudio-wrapper.c
  56. audio-monitoring/pulse/pulseaudio-wrapper.h
  57. )
  58. target_link_libraries(libobs PRIVATE PulseAudio::PulseAudio)
  59. target_enable_feature(libobs "PulseAudio audio monitoring (FreeBSD)")
  60. else()
  61. target_sources(libobs PRIVATE audio-monitoring/null/null-audio-monitoring.c)
  62. target_disable_feature(libobs "PulseAudio audio monitoring (FreeBSD)")
  63. endif()
  64. if(TARGET gio::gio)
  65. target_sources(libobs PRIVATE util/platform-nix-dbus.c util/platform-nix-portal.c)
  66. target_link_libraries(libobs PRIVATE gio::gio)
  67. endif()
  68. if(ENABLE_WAYLAND)
  69. find_package(Wayland REQUIRED Client)
  70. find_package(Xkbcommon REQUIRED)
  71. target_sources(libobs PRIVATE obs-nix-wayland.c)
  72. target_link_libraries(libobs PRIVATE Wayland::Client xkbcommon::xkbcommon)
  73. target_enable_feature(libobs "Wayland compositor support (FreeBSD)")
  74. else()
  75. target_disable_feature(libobs "Wayland compositor support (FreebSD)")
  76. endif()
  77. set_target_properties(libobs PROPERTIES OUTPUT_NAME obs)