|
@@ -9,9 +9,31 @@ if(NOT TARGET OBS::glad)
|
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/deps/glad" "${CMAKE_BINARY_DIR}/deps/glad")
|
|
|
endif()
|
|
|
|
|
|
+if(OS_LINUX
|
|
|
+ OR OS_FREEBSD
|
|
|
+ OR OS_OPENBSD)
|
|
|
+ find_package(X11 REQUIRED)
|
|
|
+ # cmake-format: off
|
|
|
+ find_package(xcb REQUIRED xcb)
|
|
|
+ # cmake-format: on
|
|
|
+ find_package(x11-xcb REQUIRED)
|
|
|
+
|
|
|
+ if(ENABLE_WAYLAND)
|
|
|
+ find_package(OpenGL REQUIRED EGL)
|
|
|
+ find_package(Wayland REQUIRED)
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
target_sources(
|
|
|
libobs-opengl
|
|
|
- PRIVATE gl-helpers.c
|
|
|
+ PRIVATE # cmake-format: sortable
|
|
|
+ $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:gl-wayland-egl.c>
|
|
|
+ $<$<PLATFORM_ID:Darwin>:gl-cocoa.m>
|
|
|
+ $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:gl-egl-common.c>
|
|
|
+ $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:gl-nix.c>
|
|
|
+ $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:gl-x11-egl.c>
|
|
|
+ $<$<PLATFORM_ID:Windows>:gl-windows.c>
|
|
|
+ gl-helpers.c
|
|
|
gl-helpers.h
|
|
|
gl-indexbuffer.c
|
|
|
gl-shader.c
|
|
@@ -26,51 +48,33 @@ target_sources(
|
|
|
gl-vertexbuffer.c
|
|
|
gl-zstencil.c)
|
|
|
|
|
|
-target_link_libraries(libobs-opengl PRIVATE OBS::libobs OBS::glad)
|
|
|
-
|
|
|
-if(OS_WINDOWS)
|
|
|
- configure_file(cmake/windows/obs-module.rc.in libobs-opengl.rc)
|
|
|
-
|
|
|
- target_sources(libobs-opengl PRIVATE gl-windows.c libobs-opengl.rc)
|
|
|
-elseif(OS_MACOS)
|
|
|
- find_library(COCOA Cocoa)
|
|
|
- find_library(IOSURF IOSurface)
|
|
|
+target_compile_options(libobs-opengl PRIVATE $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-strict-prototypes>)
|
|
|
|
|
|
- target_sources(libobs-opengl PRIVATE gl-cocoa.m)
|
|
|
- target_compile_definitions(libobs-opengl PRIVATE GL_SILENCE_DEPRECATION)
|
|
|
- target_compile_options(libobs-opengl PRIVATE -Wno-strict-prototypes)
|
|
|
+target_compile_definitions(libobs-opengl PRIVATE $<$<PLATFORM_ID:Darwin>:GL_SILENCE_DEPRECATION>)
|
|
|
|
|
|
- target_link_libraries(libobs-opengl PRIVATE ${COCOA} ${IOSURF})
|
|
|
-elseif(OS_LINUX OR OS_FREEBSD)
|
|
|
- find_package(X11 REQUIRED)
|
|
|
- find_package(
|
|
|
- xcb
|
|
|
- COMPONENTS xcb
|
|
|
- REQUIRED)
|
|
|
- find_package(x11-xcb REQUIRED)
|
|
|
-
|
|
|
- target_sources(libobs-opengl PRIVATE gl-egl-common.c gl-nix.c gl-x11-egl.c)
|
|
|
- target_link_libraries(libobs-opengl PRIVATE xcb::xcb X11::x11-xcb)
|
|
|
-
|
|
|
- if(ENABLE_WAYLAND)
|
|
|
- find_package(
|
|
|
- OpenGL
|
|
|
- COMPONENTS EGL
|
|
|
- REQUIRED)
|
|
|
-
|
|
|
- find_package(Wayland REQUIRED)
|
|
|
-
|
|
|
- target_sources(libobs-opengl PRIVATE gl-wayland-egl.c)
|
|
|
- target_link_libraries(libobs-opengl PRIVATE OpenGL::EGL Wayland::EGL)
|
|
|
- endif()
|
|
|
+target_link_libraries(
|
|
|
+ libobs-opengl
|
|
|
+ PRIVATE OBS::libobs
|
|
|
+ OBS::glad
|
|
|
+ "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>"
|
|
|
+ "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,IOSurface.framework>>"
|
|
|
+ $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:xcb::xcb>
|
|
|
+ $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::x11-xcb>
|
|
|
+ $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:OpenGL::EGL>
|
|
|
+ $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:Wayland::EGL>)
|
|
|
|
|
|
+if(OS_WINDOWS)
|
|
|
+ configure_file(cmake/windows/obs-module.rc.in libobs-opengl.rc)
|
|
|
+ target_sources(libobs-opengl PRIVATE libobs-opengl.rc)
|
|
|
endif()
|
|
|
|
|
|
target_enable_feature(libobs "OpenGL renderer")
|
|
|
|
|
|
+# cmake-format: off
|
|
|
set_target_properties_obs(
|
|
|
libobs-opengl
|
|
|
PROPERTIES FOLDER core
|
|
|
VERSION 0
|
|
|
PREFIX ""
|
|
|
SOVERSION "${OBS_VERSION_MAJOR}")
|
|
|
+# cmake-format: on
|