comment "samba4 needs a uClibc or glibc toolchain w/ wchar, dynamic library, NPTL"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_MUSL \
		|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_USE_MMU

config BR2_PACKAGE_SAMBA4
	bool "samba4"
	depends on BR2_USE_MMU # fork()
	depends on BR2_USE_WCHAR # python
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # python -> libffi
	depends on !BR2_STATIC_LIBS # cmocka, python, gnutls
	depends on !BR2_nios2 # binary too large, relocations don't fit
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_TOOLCHAIN_USES_MUSL
	select BR2_PACKAGE_CMOCKA
	select BR2_PACKAGE_E2FSPROGS
	select BR2_PACKAGE_GNUTLS
	select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_PACKAGE_POPT
	select BR2_PACKAGE_ZLIB
	help
	  Provides secure, stable and fast file and print services
	  for all clients using the SMB/CIFS protocol, such as all
	  versions of DOS, Windows, OS/2, Linux and many others.

	  http://www.samba.org/

if BR2_PACKAGE_SAMBA4

config BR2_PACKAGE_SAMBA4_AD_DC
	bool "AD DC"
	depends on BR2_PACKAGE_PYTHON3
	select BR2_PACKAGE_JANSSON
	help
	  Enable Active Directory Domain Controller functionality.

comment "AD DC depends on python3"
	depends on !BR2_PACKAGE_PYTHON3

config BR2_PACKAGE_SAMBA4_ADS
	bool "ADS"
	select BR2_PACKAGE_OPENLDAP
	help
	  Enable Active Directory member Server functionality.

config BR2_PACKAGE_SAMBA4_SMBTORTURE
	bool "smbtorture"
	help
	  Install the smbtorture test suite.
	  It's normally used for validation and stress testing.
	  Approximately +5 MB of stripped uncompressed target space.

endif
