wayland_protos = dependency('wayland-protocols',
	version: '>=1.31',
	default_options: ['tests=false'],
)

hyprland_protos = dependency('hyprland-protocols',
	version: '>=0.2',
	fallback: 'hyprland-protocols',
)

wl_protocol_dir = wayland_protos.get_variable('pkgdatadir')
hl_protocol_dir = hyprland_protos.get_variable('pkgdatadir')

hyprwayland_scanner_dep = dependency('hyprwayland-scanner', required: true, native: true, version: '>=0.4.2')
hyprwayland_scanner = find_program(
	hyprwayland_scanner_dep.get_variable(pkgconfig: 'hyprwayland_scanner'),
	native: true,
)

client_protocols = [
	'wlr-screencopy-unstable-v1.xml',
	'wlr-foreign-toplevel-management-unstable-v1.xml',
	hl_protocol_dir / 'protocols/hyprland-toplevel-export-v1.xml',
	hl_protocol_dir / 'protocols/hyprland-global-shortcuts-v1.xml',
	wl_protocol_dir / 'stable/linux-dmabuf/linux-dmabuf-v1.xml',
]

wl_proto_files = []

foreach xml: client_protocols
	wl_proto_files += custom_target(
		xml.underscorify() + '_c',
		input: xml,
		output: ['@BASENAME@.cpp', '@BASENAME@.hpp'],
		command: [hyprwayland_scanner, '--client', '@INPUT@', '@OUTDIR@'],
	)
endforeach

wayland_scanner = dependency('wayland-scanner')
wayland_scanner_dir = wayland_scanner.get_variable('pkgdatadir')

wayland_xml = wayland_scanner_dir / 'wayland.xml'
wayland_protocol = custom_target(
	wayland_xml.underscorify(),
	input: wayland_xml,
	output: ['@BASENAME@.cpp', '@BASENAME@.hpp'],
	command: [hyprwayland_scanner, '--wayland-enums', '--client', '@INPUT@', '@OUTDIR@'],
)

lib_client_protos = static_library(
	'client_protos',
	wl_proto_files + wayland_protocol,
)

client_protos = declare_dependency(
	link_with: lib_client_protos,
	sources: wl_proto_files + wayland_protocol
)