comment "python needs a toolchain w/ wchar, threads, dynamic library"
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS

config BR2_PACKAGE_PYTHON
	bool "python2.7 (deprecated)"
	depends on BR2_USE_WCHAR
	# uses fork()
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_THREADS # libffi
	depends on !BR2_STATIC_LIBS
	select BR2_PACKAGE_LIBFFI
	help
	  The python language interpreter.

	  http://www.python.org/

if BR2_PACKAGE_PYTHON

choice
	prompt "python module format to install"
	default BR2_PACKAGE_PYTHON_PYC_ONLY
	help
	  Select Python module format to install on target (py, pyc or
	  both)

config BR2_PACKAGE_PYTHON_PY_ONLY
	bool ".py sources only"

config BR2_PACKAGE_PYTHON_PYC_ONLY
	bool ".pyc compiled sources only"

config BR2_PACKAGE_PYTHON_PY_PYC
	bool ".py sources and .pyc compiled"

endchoice

menu "core python modules"

comment "The following modules are unusual or require extra libraries"

config BR2_PACKAGE_PYTHON_2TO3
	bool "2to3 module"
	help
	  code translation from python 2 to 3

config BR2_PACKAGE_PYTHON_BZIP2
	bool "bzip2 module"
	select BR2_PACKAGE_BZIP2
	help
	  bzip2 module for Python

config BR2_PACKAGE_PYTHON_BSDDB
	bool "bsddb module"
	select BR2_PACKAGE_BERKELEYDB
	help
	  bsddb module for Python.

config BR2_PACKAGE_PYTHON_CODECSCJK
	bool "codecscjk module"
	help
	  Chinese/Japanese/Korean codecs module for Python (large).

config BR2_PACKAGE_PYTHON_CURSES
	bool "curses module"
	select BR2_PACKAGE_NCURSES
	help
	  curses module for Python.

config BR2_PACKAGE_PYTHON_OSSAUDIODEV
	bool "ossaudiodev module"
	help
	  ossaudiodev module for Python.

config BR2_PACKAGE_PYTHON_READLINE
	bool "readline"
	select BR2_PACKAGE_READLINE
	help
	  readline module for Python (required for command-line
	  editing in the Python shell).

config BR2_PACKAGE_PYTHON_SSL
	bool "ssl"
	select BR2_PACKAGE_OPENSSL
	help
	  _ssl module for Python (required for https in urllib etc).

config BR2_PACKAGE_PYTHON_UNICODEDATA
	bool "unicodedata module"
	default y
	help
	  Unicode character database (used by stringprep module)
	  (large).

if BR2_PACKAGE_PYTHON_UNICODEDATA

choice
	prompt "Python unicode database format"
	default BR2_PACKAGE_PYTHON_UCS2
	help
	  Select Python unicode database format for target

config BR2_PACKAGE_PYTHON_UCS2
	bool "Universal Character Set 2-byte (UCS2)"

config BR2_PACKAGE_PYTHON_UCS4
	bool "Universal Character Set 4-byte (UCS4)"

endchoice

endif

config BR2_PACKAGE_PYTHON_SQLITE
	bool "sqlite module"
	select BR2_PACKAGE_SQLITE
	help
	  SQLite database support

config BR2_PACKAGE_PYTHON_PYEXPAT
	bool "xml module"
	select BR2_PACKAGE_EXPAT
	help
	  pyexpat and xml libraries for Python

config BR2_PACKAGE_PYTHON_ZLIB
	bool "zlib module"
	select BR2_PACKAGE_ZLIB
	help
	  zlib support in Python

config BR2_PACKAGE_PYTHON_HASHLIB
	bool "hashlib module"
	select BR2_PACKAGE_OPENSSL
	help
	  hashlib support in Python

endmenu

endif
