config BR2_PACKAGE_DOCKER_ENGINE
	bool "docker-engine"
	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
	depends on !BR2_TOOLCHAIN_USES_UCLIBC # containerd -> runc
	depends on BR2_USE_MMU # containerd
	depends on !BR2_PACKAGE_CGROUPFS_MOUNT
	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp
	select BR2_PACKAGE_CGROUPFS_V2_MOUNT if !BR2_PACKAGE_SYSTEMD # runtime dependency
	select BR2_PACKAGE_CONTAINERD # runtime dependency
	select BR2_PACKAGE_HOST_GO
	select BR2_PACKAGE_IPTABLES # runtime dependency
	select BR2_PACKAGE_LIBSECCOMP
	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_DRIVER_BTRFS
	bool "btrfs filesystem driver"
	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
	select BR2_PACKAGE_LVM2
	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
	depends on !BR2_STATIC_LIBS # gvfs
	select BR2_PACKAGE_GVFS
	help
	  Build the vfs filesystem driver for Docker.

choice
	bool "support docker-init"
	default BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_TINI if BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT  # legacy
	help
	  Support providing a minimal init process for containers.
	  Required to use "docker run --init".

config BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_NONE
	bool "none"
	help
	  Do not support docker-init.

config BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_CATATONIT
	bool "catatonit"
	select BR2_PACKAGE_CATATONIT # runtime
	help
	  Support providing a minimal init process for containers,
	  using catatonit.

config BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_TINI
	bool "tini"
	select BR2_PACKAGE_TINI # runtime
	help
	  Support providing a minimal init process for containers,
	  using tini.

endchoice

config BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_NAME
	string
	default "tini" if BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_TINI
	default "catatonit" if BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_CATATONIT

endif

comment "docker-engine needs a glibc or musl toolchain w/ threads, headers >= 5.2"
	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
		BR2_TOOLCHAIN_USES_UCLIBC || \
		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
	depends on BR2_USE_MMU
