Files
OBS-WebKitGTK/CMakeLists.txt
2026-07-18 08:42:01 +05:00

87 lines
3.5 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(obs-webkit-browser VERSION 0.1.0 LANGUAGES C)
include(GNUInstallDirs)
find_package(PkgConfig REQUIRED)
find_package(Threads REQUIRED)
pkg_check_modules(OBS REQUIRED IMPORTED_TARGET libobs)
pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
pkg_check_modules(WEBKIT REQUIRED IMPORTED_TARGET webkit2gtk-4.1)
pkg_check_modules(X11_CAPTURE REQUIRED IMPORTED_TARGET x11 xcomposite xdamage xext)
add_library(obs-webkit-browser MODULE
src/plugin.c
src/protocol.h
)
target_compile_features(obs-webkit-browser PRIVATE c_std_11)
target_compile_definitions(obs-webkit-browser PRIVATE _GNU_SOURCE)
target_compile_options(obs-webkit-browser PRIVATE -Wall -Wextra -Wpedantic)
target_link_libraries(obs-webkit-browser PRIVATE PkgConfig::OBS Threads::Threads)
set_target_properties(obs-webkit-browser PROPERTIES PREFIX "")
add_executable(obs-webkit-renderer
src/renderer.c
src/protocol.h
)
target_compile_features(obs-webkit-renderer PRIVATE c_std_11)
target_compile_definitions(obs-webkit-renderer PRIVATE _GNU_SOURCE)
target_compile_options(obs-webkit-renderer PRIVATE -Wall -Wextra -Wpedantic)
target_link_libraries(obs-webkit-renderer PRIVATE
PkgConfig::GLIB
PkgConfig::GTK
PkgConfig::WEBKIT
PkgConfig::X11_CAPTURE
Threads::Threads
)
set(OBS_PLUGIN_DIR "${CMAKE_INSTALL_LIBDIR}/obs-plugins" CACHE PATH
"Directory for the OBS plugin module")
set(OBS_PLUGIN_DATA_DIR "${CMAKE_INSTALL_DATADIR}/obs/obs-plugins/obs-webkit-browser"
CACHE PATH "Directory for plugin data and the renderer helper")
install(TARGETS obs-webkit-browser
LIBRARY DESTINATION "${OBS_PLUGIN_DIR}")
install(TARGETS obs-webkit-renderer
RUNTIME DESTINATION "${OBS_PLUGIN_DATA_DIR}")
install(FILES data/locale/en-US.ini data/locale/ru-RU.ini
DESTINATION "${OBS_PLUGIN_DATA_DIR}/locale")
include(CTest)
if(BUILD_TESTING)
add_executable(protocol-test tests/protocol-test.c)
target_compile_features(protocol-test PRIVATE c_std_11)
target_include_directories(protocol-test PRIVATE src)
add_test(NAME protocol-test COMMAND protocol-test)
add_executable(renderer-smoke-test tests/renderer-smoke-test.c)
target_compile_features(renderer-smoke-test PRIVATE c_std_11)
target_compile_definitions(renderer-smoke-test PRIVATE _GNU_SOURCE)
target_include_directories(renderer-smoke-test PRIVATE src)
add_test(NAME renderer-smoke-test
COMMAND renderer-smoke-test $<TARGET_FILE:obs-webkit-renderer>)
set_tests_properties(renderer-smoke-test PROPERTIES TIMEOUT 20)
add_test(NAME renderer-opaque-smoke-test
COMMAND renderer-smoke-test $<TARGET_FILE:obs-webkit-renderer> opaque)
set_tests_properties(renderer-opaque-smoke-test PROPERTIES TIMEOUT 20)
add_executable(renderer-fps-test tests/renderer-fps-test.c)
target_compile_features(renderer-fps-test PRIVATE c_std_11)
target_compile_definitions(renderer-fps-test PRIVATE _GNU_SOURCE)
target_include_directories(renderer-fps-test PRIVATE src)
add_test(NAME blur-transition-fps-test
COMMAND renderer-fps-test $<TARGET_FILE:obs-webkit-renderer>)
set_tests_properties(blur-transition-fps-test PROPERTIES TIMEOUT 20)
add_executable(module-load-test tests/module-load-test.c)
target_compile_features(module-load-test PRIVATE c_std_11)
target_link_libraries(module-load-test PRIVATE PkgConfig::OBS)
add_test(NAME module-load-test COMMAND module-load-test
$<TARGET_FILE:obs-webkit-browser> "${CMAKE_CURRENT_SOURCE_DIR}/data"
$<TARGET_FILE:obs-webkit-renderer>)
set_tests_properties(module-load-test PROPERTIES TIMEOUT 20)
endif()