CMakeLists.txt 2.3 KB

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