config BR2_PACKAGE_SAMBA
	bool "samba"
	select BR2_PACKAGE_POPT
	help
	  Provides print services to all manner of SMB/CIFS clients,
	  including the numerous versions of Microsoft Windows
	  operating systems.

	  http://www.samba.org/

	  NOTE: A complete Samba install takes over 50MB of space,
		so choose only the components you need.

if BR2_PACKAGE_SAMBA

config BR2_PACKAGE_SAMBA_LIBICONV
	bool "extended encodings (libiconv)"
	depends on !BR2_ENABLE_LOCALE
	select BR2_PACKAGE_LIBICONV
	help
	  Include libiconv support for extended conversion of filename
	  enconding. Samba has built-in support for UTF-8, ISO-8859-1
	  and ASCII, so this is only required if you want to support
	  other encodings.

menu "Samba tools selection"

config BR2_PACKAGE_SAMBA_EVENTLOGADM
	bool "eventlogadm"
	default y
	help
	  Write Eventlog records to a tdb or perform other eventlog functions

config BR2_PACKAGE_SAMBA_FINDSMB
	bool "findsmb"
	default y
	depends on BR2_PACKAGE_SAMBA_SMBCLIENT
	depends on BR2_PACKAGE_SAMBA_NMBLOOKUP
	depends on BR2_PACKAGE_PERL
	help
	  Script to browse network

comment "findsmb       - disabled (requires nmblookup, smbclient and perl)"
	depends on !BR2_PACKAGE_SAMBA_SMBCLIENT || !BR2_PACKAGE_SAMBA_NMBLOOKUP || !BR2_PACKAGE_PERL

config BR2_PACKAGE_SAMBA_NET
	bool "net"
	default y
	help
	  Distributed SMB/CIFS Server Management Utility

config BR2_PACKAGE_SAMBA_NMBD
	bool "nmbd"
	default y
	help
	  NetBIOS name server to provide NetBIOS over IP naming services
	  to clients

config BR2_PACKAGE_SAMBA_NMBLOOKUP
	bool "nmblookup"
	default y
	help
	  Query NetBIOS names and map them to IP addresses in a network
	  using NetBIOS over TCP/IP queries

config BR2_PACKAGE_SAMBA_NTLM_AUTH
	bool "ntlm_auth"
	default y
	help
	  Helper utility that authenticates users using NT/LM authentication

config BR2_PACKAGE_SAMBA_PDBEDIT
	bool "pdbedit"
	default y
	help
	  Manage the SAM database (Database of Samba Users)

config BR2_PACKAGE_SAMBA_PROFILES
	bool "profiles"
	default y
	help
	  Utility that reports and changes SIDs in Windows NT registry files

config BR2_PACKAGE_SAMBA_RPCCLIENT
	bool "rpcclient"
	select BR2_PACKAGE_READLINE
	default y
	help
	  Tool for executing client side MS-RPC functions using RPC
	  calls from a UNIX workstation.

config BR2_PACKAGE_SAMBA_SMBCACLS
	bool "smbcacls"
	default y
	help
	  Set or get ACLs on an NT file or directory names

config BR2_PACKAGE_SAMBA_SMBCLIENT
	bool "smbclient"
	select BR2_PACKAGE_READLINE
	default y
	help
	  ftp-like client to access SMB/CIFS resources on servers

config BR2_PACKAGE_SAMBA_SMBCONTROL
	bool "smbcontrol"
	default y
	help
	  Send messages to smbd, nmbd or winbindd processes

config BR2_PACKAGE_SAMBA_SMBCQUOTAS
	bool "smbcquotas"
	default y
	help
	  Set or get QUOTAs of NTFS 5 shares

config BR2_PACKAGE_SAMBA_SMBD
	bool "smbd"
	default y
	help
	  The server daemon that provides filesharing and printing services

config BR2_PACKAGE_SAMBA_SMBGET
	bool "smbget"
	default y
	help
	  wget-like utility for download files over SMB

config BR2_PACKAGE_SAMBA_SMBLDBTOOLS
	bool "smbldbtools"
	default y
	help
	  ldbadd ldbdel ldbedit ldbmodify ldbrename ldbsearch tools

config BR2_PACKAGE_SAMBA_SMBPASSWD
	bool "smbpasswd"
	default y
	help
	  Change a user's SMB passwd

config BR2_PACKAGE_SAMBA_SMBSHARESEC
	bool "smbsharesec"
	default y
	help
	  Manipulate share permissions on SMB file shares

config BR2_PACKAGE_SAMBA_SMBSPOOL
	bool "smbspool"
	default y
	help
	  Send a print file to an SMB printer

config BR2_PACKAGE_SAMBA_SMBSTATUS
	bool "smbstatus"
	default y
	help
	  Report on current Samba connections

config BR2_PACKAGE_SAMBA_SMBTREE
	bool "smbtree"
	default y
	help
	  A text based smb network browser

config BR2_PACKAGE_SAMBA_SWAT
	bool "swat"
	default y
	help
	  Samba Web Administration Tool

config BR2_PACKAGE_SAMBA_SMBTA_UTIL
	bool "smbta-util"
	default y
	help
	  Tool to ease the configuration of the vfs_smb_traffic_analyzer
	  module regarding data encryption.

config BR2_PACKAGE_SAMBA_SMBTAR
	bool "smbtar"
	default y
	depends on BR2_PACKAGE_SAMBA_SMBCLIENT
	help
	  tar-like script that wraps smbclient

comment "smbtar        - disabled (requires smbclient)"
	depends on !BR2_PACKAGE_SAMBA_SMBCLIENT

config BR2_PACKAGE_SAMBA_TDB
	bool "tdb"
	default y
	help
	  Tools to operate on the .tdb database files

config BR2_PACKAGE_SAMBA_TESTPARM
	bool "testparm"
	default y
	help
	  Check an smb.conf configuration file for internal correctness

config BR2_PACKAGE_SAMBA_WINBINDD
	bool "winbindd"
	default y
	help
	  Name Service Switch daemon for resolving names from NT servers

config BR2_PACKAGE_SAMBA_WBINFO
	bool "wbinfo"
	default y
	depends on BR2_PACKAGE_SAMBA_WINBINDD
	help
	  Query information from winbind daemon

endmenu


menu "Samba libraries selection"

config BR2_PACKAGE_SAMBA_LIBSMBCLIENT
	bool "libsmbclient"
	help
	  libsmbclient is a library toolset that permits applications
	  to manipulate CIFS/SMB network resources using many of the
	  standards POSIX functions available for manipulating local
	  files.

endmenu


menu "Samba support selection"

config BR2_PACKAGE_SAMBA_AVAHI
	bool "support avahi"
	default y
	depends on BR2_PACKAGE_AVAHI_DAEMON
	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
	depends on BR2_USE_MMU # dbus
	select BR2_PACKAGE_DBUS
	help
	  Include support for avahi

comment "support avahi - disabled (requires avahi-daemon and thread support in toolchain)"
	depends on !BR2_PACKAGE_AVAHI_DAEMON || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_SAMBA_GAMIN
	bool "support gamin"
	default y
	depends on BR2_PACKAGE_GAMIN
	help
	  Include support for gamin

comment "support gamin - disabled (requires gamin)"
	depends on !BR2_PACKAGE_GAMIN

endmenu

endif
