pkg_search_module(WAYLAND_SERVER REQUIRED IMPORTED_TARGET wayland-server)

function(ws_generate_local type input_file output_name)
    find_package(PkgConfig REQUIRED)
    pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner)
    execute_process(COMMAND ${WAYLAND_SCANNER}
        ${type}-header
        ${input_file}
        ${WAYLAND_PROTOCOLS_OUTPUTDIR}/${output_name}.h
    )

    execute_process(COMMAND ${WAYLAND_SCANNER}
        public-code
        ${input_file}
        ${WAYLAND_PROTOCOLS_OUTPUTDIR}/${output_name}.c
    )
endfunction()

link_libraries(
    PkgConfig::WAYLAND_SERVER
)

# xdg-shell protocol code is compiled into libwaylibserver (waylib's
# ws_generate); compiling it again here would duplicate global symbols
# (xdg_*_interface) across the two shared libraries.

add_subdirectory(foreign-toplevel)
add_subdirectory(output-manager)
add_subdirectory(personalization)
add_subdirectory(shortcut)
add_subdirectory(wallpaper-color)
add_subdirectory(window-management)
add_subdirectory(virtual-output)
add_subdirectory(dde-shell)
add_subdirectory(capture)
add_subdirectory(item-selector)
add_subdirectory(ddm)
add_subdirectory(screensaver)
add_subdirectory(prelaunch-splash)
add_subdirectory(app-id-resolver)
add_subdirectory(wine-window-state)
add_subdirectory(wine-window-management)
add_subdirectory(wallpaper)
add_subdirectory(activation)
add_subdirectory(input-manager)
add_subdirectory(keyboard-state-notify)
add_subdirectory(keyboard-shortcuts-inhibit)
