srcs_weston = [
	git_version_h,
	'main.c',
	'testsuite-util.c',
	'text-backend.c',
	'weston-screenshooter.c',
	text_input_unstable_v1_server_protocol_h,
	text_input_unstable_v1_protocol_c,
	input_method_unstable_v1_server_protocol_h,
	input_method_unstable_v1_protocol_c,
	weston_screenshooter_server_protocol_h,
	weston_screenshooter_protocol_c,
]
deps_weston = [
	dep_libshared,
	dep_libweston_public,
	dep_libinput,
	dep_libevdev,
	dep_libdl,
	dep_threads,
]

if get_option('xwayland')
	config_h.set('BUILD_XWAYLAND', '1')

	srcs_weston += 'xwayland.c'
	config_h.set_quoted('XSERVER_PATH', get_option('xwayland-path'))
endif

libexec_weston = shared_library(
	'exec_weston',
	sources: srcs_weston,
	include_directories: common_inc,
	dependencies: deps_weston,
	install_dir: dir_module_weston,
	install: true,
	version: '0.0.0',
	soversion: 0
)
dep_libexec_weston = declare_dependency(
	link_with: libexec_weston,
	include_directories: [ include_directories('.'), public_inc ],
	dependencies: dep_libweston_public
)
exe_weston = executable(
	'weston',
	'executable.c',
	include_directories: common_inc,
	dependencies: dep_libexec_weston,
	install_rpath: dir_module_weston,
	install: true
)
install_headers('weston.h', subdir: 'weston')

pkgconfig.generate(
	filebase: 'weston',
	name: 'Weston Plugin API',
	version: version_weston,
	description: 'Header files for Weston plugin development',
	requires_private: [ lib_weston ],
	variables: [
		'libexecdir=' + join_paths('${prefix}', get_option('libexecdir')),
		'pkglibexecdir=${libexecdir}/weston'
	],
	subdirs: 'weston'
)

install_data(
	'weston.desktop',
	install_dir: join_paths(dir_data, 'wayland-sessions')
)

if get_option('screenshare')
	srcs_screenshare = [
		'screen-share.c',
		fullscreen_shell_unstable_v1_client_protocol_h,
		fullscreen_shell_unstable_v1_protocol_c,
	]
	deps_screenshare = [
		dep_libexec_weston,
		dep_libshared,
		dep_libweston_public,
		dep_libweston_private_h, # XXX: https://gitlab.freedesktop.org/wayland/weston/issues/292
		dep_wayland_client,
	]
	plugin_screenshare = shared_library(
		'screen-share',
		srcs_screenshare,
		include_directories: common_inc,
		dependencies: deps_screenshare,
		name_prefix: '',
		install: true,
		install_dir: dir_module_weston,
		install_rpath: '$ORIGIN'
	)
	env_modmap += 'screen-share.so=@0@;'.format(plugin_screenshare.full_path())
endif

if get_option('color-management-lcms')
	config_h.set('HAVE_LCMS', '1')

	srcs_lcms = [
		'cms-static.c',
		'cms-helper.c',
	]

	dep_lcms2 = dependency('lcms2', required: false)
	if not dep_lcms2.found()
		error('cms-static requires lcms2 which was not found. Or, you can use \'-Dcolor-management-lcms=false\'.')
	endif

	plugin_lcms = shared_library(
		'cms-static',
		srcs_lcms,
		include_directories: common_inc,
		dependencies: [ dep_libexec_weston, dep_libweston_public, dep_lcms2 ],
		name_prefix: '',
		install: true,
		install_dir: dir_module_weston,
		install_rpath: '$ORIGIN'
	)
	env_modmap += 'cms-static.so=@0@;'.format(plugin_lcms.full_path())
endif

if get_option('color-management-colord')
	if not get_option('color-management-lcms')
		error('LCMS must be enabled to support colord')
	endif

	srcs_colord = [
		'cms-colord.c',
		'cms-helper.c',
	]

	dep_colord = dependency('colord', version: '>= 0.1.27', required: false)
	if not dep_colord.found()
		error('cms-colord requires colord >= 0.1.27 which was not found. Or, you can use \'-Dcolor-management-colord=false\'.')
	endif

	plugin_colord_deps = [ dep_libweston_public, dep_colord, dep_lcms2 ]

	foreach depname : [ 'glib-2.0', 'gobject-2.0' ]
		dep = dependency(depname, required: false)
		if not dep.found()
			error('cms-colord requires \'@0@\' which was not found. If you rather not build this, set \'-Dcolor-management-colord=false\'.'.format(depname))
		endif
		plugin_colord_deps += dep
	endforeach

	plugin_colord = shared_library(
		'cms-colord',
		srcs_colord,
		include_directories: common_inc,
		dependencies: plugin_colord_deps,
		name_prefix: '',
		install: true,
		install_dir: dir_module_weston
	)
	env_modmap += 'cms-colord.so=@0@;'.format(plugin_colord.full_path())
endif

if get_option('systemd')
	dep_libsystemd = dependency('libsystemd', required: false)
	if not dep_libsystemd.found()
		error('systemd-notify requires libsystemd which was not found. Or, you can use \'-Dsystemd=false\'.')
	endif

	plugin_systemd_notify = shared_library(
		'systemd-notify',
		'systemd-notify.c',
		include_directories: common_inc,
		dependencies: [ dep_libweston_public, dep_libsystemd ],
		name_prefix: '',
		install: true,
		install_dir: dir_module_weston
	)
	env_modmap += 'systemd-notify.so=@0@;'.format(plugin_systemd_notify.full_path())
endif

weston_ini_config = configuration_data()
weston_ini_config.set('bindir', dir_bin)
weston_ini_config.set('libexecdir', dir_libexec)
configure_file(
	input: '../weston.ini.in',
	output: 'weston.ini',
	configuration: weston_ini_config
)
