wl_proto(wlp-layer-shell wlr-layer-shell-unstable-v1 "${CMAKE_CURRENT_SOURCE_DIR}/protocols")
wl_proto(wlp-viewporter viewporter "${WAYLAND_PROTOCOLS}/stable/viewporter")
wl_proto(wlp-fractional-scale fractional-scale-v1 "${WAYLAND_PROTOCOLS}/staging/fractional-scale")
wl_proto(wlp-xdg-shell xdg-shell "${WAYLAND_PROTOCOLS}/stable/xdg-shell")

qml_module(ZShell-internal
	URI ZShell.Internal
	INCLUDE_PREFIX internal
	SOURCES
		hyprextras.hpp hyprextras.cpp
		hyprdevices.hpp hyprdevices.cpp
		cachingimagemanager.hpp cachingimagemanager.cpp
		circularindicatormanager.hpp circularindicatormanager.cpp
		circularbuffer.hpp circularbuffer.cpp
		arcgauge.hpp arcgauge.cpp
		wallpaperimage.hpp wallpaperimage.cpp
		wallpaperservice.hpp wallpaperservice.cpp
		wallpapersurface.hpp wallpapersurface.cpp
		wallpaperobject.hpp wallpaperobject.cpp
		lidwatcher.hpp lidwatcher.cpp
		visualizerbars.hpp visualizerbars.cpp
		linearindicatormanager.hpp linearindicatormanager.cpp
		strokecanvasitem.hpp strokecanvasitem.cpp
		strokecanvasrenderer.hpp strokecanvasrenderer.cpp
		videoplayer.hpp videoplayer.cpp
		cursor.hpp
	LIBRARIES
		Qt::Gui
		Qt::Quick
		Qt::Concurrent
		Qt::Sql
		Qt::Core
		Qt::Network
		Qt::DBus
		Qt::CanvasPainter
		Qt::GuiPrivate
		wlp-layer-shell
		wlp-xdg-shell
		wlp-viewporter
		wlp-fractional-scale
		PkgConfig::EGL
		PkgConfig::WAYLAND_EGL
		PkgConfig::GL
		PkgConfig::MPV
		PkgConfig::AVCODEC
		PkgConfig::AVFORMAT
		PkgConfig::AVUTIL
)

qt_add_resources(ZShell-internal "wallpaper_shaders"
	PREFIX "/"
	FILES
		shaders/wallpaper.vert
		shaders/wallpaper.frag
		shaders/wallpaper_video.frag
)

if(CUDAToolkit_FOUND)
	target_link_libraries(ZShell-internal PRIVATE CUDA::cuda_driver)
	target_compile_definitions(ZShell-internal PRIVATE ZHAVE_VIDEO=1)
endif()
