Files
OBS-WebKitGTK/CMakeLists.txt
2026-07-20 10:23:57 +05:00

110 lines
4.7 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(obs-webkit-browser VERSION 1.2.0 LANGUAGES C CXX)
include(GNUInstallDirs)
find_package(PkgConfig REQUIRED)
find_package(Threads REQUIRED)
pkg_check_modules(OBS REQUIRED IMPORTED_TARGET libobs)
pkg_check_modules(OBS_FRONTEND REQUIRED IMPORTED_TARGET obs-frontend-api)
pkg_check_modules(QT_WIDGETS REQUIRED IMPORTED_TARGET Qt6Widgets)
find_path(OBS_HEADER_DIRECTORY obs.h PATH_SUFFIXES obs REQUIRED)
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/docks.cpp
src/protocol.h
)
target_compile_features(obs-webkit-browser PRIVATE c_std_11)
target_compile_features(obs-webkit-browser PRIVATE cxx_std_17)
target_compile_definitions(obs-webkit-browser PRIVATE _GNU_SOURCE)
target_compile_options(obs-webkit-browser PRIVATE -Wall -Wextra -Wpedantic)
target_include_directories(obs-webkit-browser PRIVATE "${OBS_HEADER_DIRECTORY}")
target_link_libraries(obs-webkit-browser PRIVATE
obs
obs-frontend-api
PkgConfig::QT_WIDGETS
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 SKIP_RETURN_CODE 77)
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 SKIP_RETURN_CODE 77)
add_test(NAME renderer-zoom-smoke-test
COMMAND renderer-smoke-test $<TARGET_FILE:obs-webkit-renderer> zoom)
set_tests_properties(renderer-zoom-smoke-test PROPERTIES TIMEOUT 20 SKIP_RETURN_CODE 77)
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 SKIP_RETURN_CODE 77)
add_executable(shared-profile-test tests/shared-profile-test.c)
target_compile_features(shared-profile-test PRIVATE c_std_11)
target_compile_definitions(shared-profile-test PRIVATE _GNU_SOURCE)
target_include_directories(shared-profile-test PRIVATE src)
add_test(NAME shared-profile-test
COMMAND shared-profile-test $<TARGET_FILE:obs-webkit-renderer>)
set_tests_properties(shared-profile-test PROPERTIES TIMEOUT 30 SKIP_RETURN_CODE 77)
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 SKIP_RETURN_CODE 77)
endif()