config BR2_PACKAGE_DOCKER_ENGINE
	bool "docker-engine"
	depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_THREADS
	help
	  Docker is a platform to build, ship,
	  and run applications as lightweight containers.

	  https://github.com/docker/docker

if BR2_PACKAGE_DOCKER_ENGINE

config BR2_PACKAGE_DOCKER_ENGINE_DAEMON
	bool "docker daemon"
	depends on BR2_USE_WCHAR # docker-containerd
	select BR2_PACKAGE_DOCKER_CONTAINERD # runtime dependency
	select BR2_PACKAGE_SQLITE # runtime dependency
	default y
	help
	  Build the Docker system daemon.
	  If not selected, will build client only.

config BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL
	bool "build experimental features"

if BR2_PACKAGE_DOCKER_ENGINE_DAEMON

config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS
	bool "btrfs filesystem driver"
	depends on BR2_USE_WCHAR # btrfs-progs
	depends on BR2_USE_MMU # btrfs-progs
	depends on BR2_TOOLCHAIN_HAS_THREADS # btrfs-progs
	select BR2_PACKAGE_BTRFS_PROGS
	help
	  Build the btrfs filesystem driver for Docker.

config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER
	bool "devicemapper filesystem driver"
	depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2
	depends on BR2_USE_MMU # lvm2
	depends on !BR2_STATIC_LIBS # lvm2
	select BR2_PACKAGE_LVM2
	select BR2_PACKAGE_LVM2_APP_LIBRARY
	help
	  Build the devicemapper filesystem driver for Docker.

config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS
	bool "vfs filesystem driver"
	depends on BR2_USE_WCHAR # gvfs
	depends on BR2_USE_MMU # gvfs
	depends on BR2_TOOLCHAIN_HAS_THREADS # gvfs
	select BR2_PACKAGE_GVFS
	help
	  Build the vfs filesystem driver for Docker.

endif

endif

comment "docker-engine needs a toolchain w/ threads"
	depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS
