find_package(TreelandProtocols REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(WAYLAND_CLIENT REQUIRED IMPORTED_TARGET wayland-client)
pkg_check_modules(XKBCOMMON REQUIRED IMPORTED_TARGET xkbcommon)

option(TREELAND_ENABLE_UINPUT_PROTOCOL_TESTS
    "Build optional /dev/uinput protocol integration tests" OFF)
option(TREELAND_ENABLE_GPU_PROTOCOL_TESTS
    "Build protocol integration tests that require a GPU DMA-BUF renderer" OFF)

set(TREELAND_PROTOCOL_TEST_DSG_DATA_DIR "${CMAKE_CURRENT_BINARY_DIR}/dsg")
file(COPY "${PROJECT_SOURCE_DIR}/misc/dconfig/"
    DESTINATION "${TREELAND_PROTOCOL_TEST_DSG_DATA_DIR}/configs/org.deepin.dde.treeland")
set(TREELAND_PROTOCOL_TEST_DSG_DATA_DIRS
    "${TREELAND_PROTOCOL_TEST_DSG_DATA_DIR}:/usr/share/dsg")

include(${CMAKE_CURRENT_SOURCE_DIR}/framework/ProtocolTest.cmake)

add_subdirectory(drm)
add_subdirectory(input-method-unstable-v2)
add_subdirectory(virtual-keyboard-unstable-v1)
add_subdirectory(wlr-data-control-unstable-v1)
add_subdirectory(wlr-export-dmabuf-unstable-v1)
add_subdirectory(wlr-foreign-toplevel-management-unstable-v1)
add_subdirectory(wlr-gamma-control-unstable-v1)
add_subdirectory(wlr-layer-shell-unstable-v1)
add_subdirectory(wlr-output-management-unstable-v1)
add_subdirectory(wlr-output-power-management-unstable-v1)
add_subdirectory(treeland-app-id-resolver-v2)
add_subdirectory(treeland-app-id-resolver-desktop-v2)
add_subdirectory(treeland-capture-unstable-v1)
add_subdirectory(treeland-capture-desktop-v1)
add_subdirectory(treeland-compositor-action-v1)
add_subdirectory(treeland-dde-shell-v1)
add_subdirectory(treeland-active-notify-unstable-v1)
add_subdirectory(treeland-appearance-unstable-v1)
add_subdirectory(treeland-remote-subsurface-unstable-v1)
add_subdirectory(treeland-dde-shell-v2)
add_subdirectory(treeland-dde-shell-desktop-v1)
add_subdirectory(treeland-dde-shell-lockscreen-desktop-v1)
add_subdirectory(treeland-dde-shell-multitask-desktop-v1)
add_subdirectory(treeland-ddm-v1)
add_subdirectory(treeland-decoration-unstable-v1)
add_subdirectory(treeland-foreign-toplevel-manager-v2)
add_subdirectory(treeland-input-manager-unstable-v1)
if(TREELAND_ENABLE_UINPUT_PROTOCOL_TESTS AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
    add_subdirectory(treeland-input-manager-uinput-v1)
endif()
add_subdirectory(treeland-keyboard-state-notify-unstable-v1)
add_subdirectory(treeland-layer-shell-extension-unstable-v1)
add_subdirectory(treeland-output-manager-v1)
add_subdirectory(treeland-personalization-manager-v1)
add_subdirectory(treeland-personalization-desktop-v1)
add_subdirectory(treeland-prelaunch-splash-v2)
add_subdirectory(treeland-prelaunch-splash-desktop-v2)
add_subdirectory(treeland-screensaver-v2)
add_subdirectory(treeland-screensaver-desktop-v2)
add_subdirectory(treeland-shortcut-manager-v2)
add_subdirectory(treeland-shortcut-manager-desktop-v2)
add_subdirectory(treeland-virtual-output-manager-v1)
add_subdirectory(treeland-virtual-output-desktop-v1)
add_subdirectory(treeland-wallpaper-color-v1)
add_subdirectory(treeland-wallpaper-manager-unstable-v1)
add_subdirectory(treeland-wallpaper-shell-unstable-v1)
add_subdirectory(treeland-wallpaper-desktop-v1)
add_subdirectory(treeland-show-desktop-v1)
add_subdirectory(treeland-xwindow-control-unstable-v1)
add_subdirectory(treeland-region-watch-unstable-v1)
add_subdirectory(treeland-show-desktop-desktop-v1)
add_subdirectory(treeland-window-transition-unstable-v1)
add_subdirectory(treeland-wine-window-state-unstable-v1)
add_subdirectory(treeland-wine-window-management-unstable-v1)

# --- Standard wayland-protocols (1.49) served by Treeland ---
add_subdirectory(wayland-alpha-modifier-v1)
add_subdirectory(wayland-cursor-shape-v1)
add_subdirectory(wayland-ext-data-control-v1)
add_subdirectory(wayland-ext-foreign-toplevel-list-v1)
add_subdirectory(wayland-ext-idle-notify-v1)
add_subdirectory(wayland-ext-image-copy-capture-v1)
add_subdirectory(wayland-ext-session-lock-v1)
add_subdirectory(wayland-fractional-scale-v1)
add_subdirectory(wayland-idle-inhibit-unstable-v1)
add_subdirectory(wayland-keyboard-shortcuts-inhibit-unstable-v1)
add_subdirectory(wayland-pointer-constraints-unstable-v1)
add_subdirectory(wayland-pointer-gestures-unstable-v1)
add_subdirectory(wayland-primary-selection-unstable-v1)
add_subdirectory(wayland-relative-pointer-unstable-v1)
add_subdirectory(wayland-security-context-v1)
add_subdirectory(wayland-single-pixel-buffer-v1)
add_subdirectory(wayland-text-input-unstable-v1)
add_subdirectory(wayland-text-input-unstable-v3)
add_subdirectory(wayland-viewporter)
add_subdirectory(wayland-xdg-activation-v1)
add_subdirectory(wayland-xdg-decoration-unstable-v1)
add_subdirectory(wayland-xdg-dialog-v1)
add_subdirectory(wayland-xdg-foreign-unstable-v2)
add_subdirectory(wayland-xdg-output-unstable-v1)
add_subdirectory(wayland-xdg-toplevel-tag-v1)

include(${CMAKE_CURRENT_SOURCE_DIR}/ProtocolTestCoverageTarget.cmake)
