87 lines
3.5 KiB
CMake
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 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()
|