comment "mosh needs a toolchain w/ C++, threads, dynamic library, wchar, host and target gcc >= 4.8"
	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \
		|| BR2_STATIC_LIBS || !BR2_USE_WCHAR \
		|| !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS

config BR2_PACKAGE_MOSH
	bool "mosh"
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
	depends on BR2_INSTALL_LIBSTDCPP # protobuf
	depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf
	depends on BR2_HOST_GCC_AT_LEAST_4_8 # protobuf
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf
	depends on !BR2_STATIC_LIBS # protobuf
	depends on BR2_USE_WCHAR
	select BR2_PACKAGE_PROTOBUF
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_NETTLE if !BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_ZLIB
	# runtime dependency
	select BR2_PACKAGE_OPENSSH if !BR2_PACKAGE_DROPBEAR_CLIENT
	help
	  Remote terminal application that supports intermittent
	  connectivity, allows roaming, and provides speculative local
	  echo and line editing of user keystrokes.

	  Mosh requires that the remote machine has a locale setting
	  matching the one on the client.

	  When using mosh with dropbear on a remote machine, the
	  client needs mosh with a version above 1.3.0 and the
	  --no-ssh-pty option needs to be passed when starting the
	  connection.

	  https://mosh.org
