config BR2_PACKAGE_MINETEST
	bool "minetest"
	depends on BR2_INSTALL_LIBSTDCPP # irrlicht
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_PACKAGE_XORG7 # irrlicht
	depends on BR2_PACKAGE_HAS_LIBGL # irrlicht
	depends on BR2_PACKAGE_LUAJIT
	select BR2_PACKAGE_IRRLICHT
	select BR2_PACKAGE_GMP
	select BR2_PACKAGE_JSONCPP
	select BR2_PACKAGE_SQLITE
	select BR2_PACKAGE_ZLIB
	# At least one option must be enabled
	select BR2_PACKAGE_MINETEST_CLIENT if !BR2_PACKAGE_MINETEST_SERVER
	help
	  Minetest is a near-infinite-world block sandbox game and a
	  game engine, inspired by InfiniMiner, Minecraft, and the
	  like.

	  http://www.minetest.net

if BR2_PACKAGE_MINETEST

config BR2_PACKAGE_MINETEST_CLIENT
	bool "minetest client"
	select BR2_PACKAGE_BZIP2
	select BR2_PACKAGE_LIBPNG
	select BR2_PACKAGE_JPEG
	select BR2_PACKAGE_XLIB_LIBXXF86VM
	help
	  Build Minetest client.

config BR2_PACKAGE_MINETEST_SERVER
	bool "minetest server"
	help
	  Build Minetest server.

config BR2_PACKAGE_MINETEST_SOUND
	bool "enable sound"
	depends on BR2_PACKAGE_MINETEST_CLIENT
	depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal
	select BR2_PACKAGE_LIBVORBIS
	select BR2_PACKAGE_OPENAL

comment "sound support needs a toolchain w/ threads NPTL"
	depends on BR2_PACKAGE_MINETEST_CLIENT
	depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL

endif

comment "minetest needs a toolchain w/ C++, gcc >= 4.9, threads"
	depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS
	depends on !BR2_INSTALL_LIBSTDCPP \
		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \
		|| !BR2_TOOLCHAIN_HAS_THREADS

comment "minetest needs X11 and an OpenGL provider"
	depends on (BR2_INSTALL_LIBSTDCPP \
		&& BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \
		&& BR2_TOOLCHAIN_HAS_THREADS)
	depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7
