CMakeLists.txt 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. cmake_minimum_required(VERSION 3.28...3.30)
  2. add_library(libobs-opengl SHARED)
  3. add_library(OBS::libobs-opengl ALIAS libobs-opengl)
  4. if(NOT TARGET OBS::glad)
  5. add_subdirectory("${CMAKE_SOURCE_DIR}/deps/glad" "${CMAKE_BINARY_DIR}/deps/glad")
  6. endif()
  7. if(OS_LINUX OR OS_FREEBSD OR OS_OPENBSD)
  8. find_package(X11 REQUIRED)
  9. find_package(Xcb REQUIRED xcb)
  10. find_package(X11-xcb REQUIRED)
  11. if(ENABLE_WAYLAND)
  12. find_package(OpenGL REQUIRED EGL)
  13. find_package(Wayland REQUIRED)
  14. endif()
  15. endif()
  16. target_sources(
  17. libobs-opengl
  18. PRIVATE
  19. $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:gl-wayland-egl.c>
  20. $<$<PLATFORM_ID:Darwin>:gl-cocoa.m>
  21. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:gl-egl-common.c>
  22. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:gl-nix.c>
  23. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:gl-x11-egl.c>
  24. $<$<PLATFORM_ID:Windows>:gl-windows.c>
  25. gl-helpers.c
  26. gl-helpers.h
  27. gl-indexbuffer.c
  28. gl-shader.c
  29. gl-shaderparser.c
  30. gl-shaderparser.h
  31. gl-stagesurf.c
  32. gl-subsystem.c
  33. gl-subsystem.h
  34. gl-texture2d.c
  35. gl-texture3d.c
  36. gl-texturecube.c
  37. gl-vertexbuffer.c
  38. gl-zstencil.c
  39. )
  40. target_compile_options(libobs-opengl PRIVATE $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-strict-prototypes>)
  41. target_compile_definitions(libobs-opengl PRIVATE $<$<PLATFORM_ID:Darwin>:GL_SILENCE_DEPRECATION>)
  42. target_link_libraries(
  43. libobs-opengl
  44. PRIVATE
  45. OBS::libobs
  46. OBS::glad
  47. "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>"
  48. "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,IOSurface.framework>>"
  49. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:xcb::xcb>
  50. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::x11-xcb>
  51. $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:OpenGL::EGL>
  52. $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:Wayland::EGL>
  53. )
  54. if(OS_WINDOWS)
  55. configure_file(cmake/windows/obs-module.rc.in libobs-opengl.rc)
  56. target_sources(libobs-opengl PRIVATE libobs-opengl.rc)
  57. endif()
  58. target_enable_feature(libobs "OpenGL renderer")
  59. set_target_properties_obs(
  60. libobs-opengl
  61. PROPERTIES FOLDER core
  62. VERSION 0
  63. PREFIX ""
  64. SOVERSION "${OBS_VERSION_MAJOR}"
  65. )