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-Wallpaper
	URI ZShell.Wallpaper
	INCLUDE_PREFIX wallpaper
	SOURCES
		wallpaperservice.hpp wallpaperservice.cpp
		wallpaperobject.hpp wallpaperobject.cpp
		wallpapersurface.hpp wallpapersurface.cpp
		wallpaperimage.hpp wallpaperimage.cpp
		wallpapercache.hpp wallpapercache.cpp
		videotranscoder.hpp videotranscoder.cpp
		videodecoder.hpp videodecoder.cpp
		nvidiaplayer.hpp nvidiaplayer.cpp
		vaapiplayer.hpp vaapiplayer.cpp
	LIBRARIES
		Qt::Gui
		Qt::Quick
		Qt::Concurrent
		Qt::Sql
		Qt::Core
		Qt::GuiPrivate
		Qt::WaylandClient
		Qt::WaylandClientPrivate
		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
		ZShell-config
)

target_compile_definitions(ZShell-Wallpaper PRIVATE ZHAVE_FFMPEG=1)

if(LIBVA_FOUND)
	target_link_libraries(ZShell-Wallpaper PRIVATE PkgConfig::LIBVA)
	target_compile_definitions(ZShell-Wallpaper PRIVATE ZHAVE_VAAPI=1)
endif()

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

qt_add_resources(ZShell-Wallpaper "wallpaper_shaders"
	PREFIX "/"
	FILES
		shaders/wallpaper.vert
		shaders/wallpaper.frag
		shaders/wallpaper_video.frag
		shaders/wallpaper_trans_bowtie.frag
		shaders/wallpaper_trans_fade.frag
		shaders/wallpaper_trans_linear_blur.frag
		shaders/wallpaper_trans_window_slices.frag
		shaders/wallpaper_trans_wipe_right.frag
		shaders/wallpaper_trans_wipe_down.frag
		shaders/wallpaper_trans_tiles_wave.frag
		shaders/wallpaper_trans_split_slide_in_horizontal.frag
		shaders/wallpaper_trans_hexagonalize.frag
		shaders/wallpaper_trans_doom_melt.frag
)
