config BR2_PACKAGE_FREERDP
	bool "freerdp"
	# FreeRDP does not have a single C++ source file, however it
	# insists on having a C++ compiler. Removing that requirement
	# is a bit too much involving, so we just depend on it...
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR
	depends on !BR2_STATIC_LIBS # uses dlfcn.h
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_USE_MMU # libglib2
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	select BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL
	select BR2_PACKAGE_ZLIB
	select BR2_PACKAGE_LIBGLIB2
	help
	  FreeRDP is a free implementation of the Remote Desktop
	  Protocol (RDP), released under the Apache license

	  This only installs the freerdp libraries.

	  http://www.freerdp.com/

	  Note: this also installs a key and certificate in
	  /etc/freerdp/keys/ . These are publicly-known, as they
	  are present in FreeRDP's source tree. It is strongly
	  suggested that you overwrite them with your own set,
	  either in an overlay rootfs or in a post-build script.

if BR2_PACKAGE_FREERDP

config BR2_PACKAGE_FREERDP_GSTREAMER1
	bool "gstreamer support"
	depends on BR2_PACKAGE_GSTREAMER1
	depends on BR2_PACKAGE_XORG7 # xlib-libxrandr
	# gstreamer-1.x dependencies already dependencies of FreeRDP
	select BR2_PACKAGE_GST1_PLUGINS_BASE
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP
	select BR2_PACKAGE_XLIB_LIBXRANDR

comment "gstreamer support needs X.Org"
	depends on !BR2_PACKAGE_XORG7
	depends on BR2_PACKAGE_GSTREAMER1

config BR2_PACKAGE_FREERDP_SERVER
	bool "server"
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXDAMAGE
	select BR2_PACKAGE_XLIB_LIBXEXT
	select BR2_PACKAGE_XLIB_LIBXFIXES

config BR2_PACKAGE_FREERDP_CLIENT_X11
	bool "X11 client"
	default y
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXEXT

comment "server and X11 client need X.Org"
	depends on !BR2_PACKAGE_XORG7

config BR2_PACKAGE_FREERDP_CLIENT_WL
	bool "wayland client"
	default y
	depends on BR2_PACKAGE_WAYLAND
	select BR2_PACKAGE_LIBXKBCOMMON

endif

comment "freerdp needs a toolchain w/ wchar, dynamic library, threads, C++"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \
		|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP
