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"
	default y
	depends on BR2_USE_MMU # docker-containerd
	select BR2_PACKAGE_DOCKER_CONTAINERD # runtime dependency
	select BR2_PACKAGE_DOCKER_PROXY # runtime dependency
	select BR2_PACKAGE_IPTABLES # runtime dependency
	select BR2_PACKAGE_SQLITE # runtime dependency
	help
	  Build the Docker system daemon.
	  If not selected, will build client only.

config BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL
	bool "build experimental features"

config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT
	bool "build static client"
	depends on !BR2_STATIC_LIBS
	help
	  Build a static docker client.

if BR2_PACKAGE_DOCKER_ENGINE_DAEMON

config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS
	bool "btrfs filesystem driver"
	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
	depends on !BR2_TOOLCHAIN_USES_MUSL # 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
