# Selection options for crosstool-NG

if BR2_TOOLCHAIN_CTNG

choice
 	prompt "Crosstool-NG C library"

config BR2_TOOLCHAIN_CTNG_uClibc
	bool "uClibc"

# Although eglibc can be configured to opt-out some features,
# let's not deal with that for the time being, it's complex...
config BR2_TOOLCHAIN_CTNG_eglibc
	bool "eglibc"
	select BR2_LARGEFILE
	select BR2_INET_IPV6
	select BR2_INET_RPC
	select BR2_ENABLE_LOCALE
	select BR2_USE_WCHAR
	select BR2_PROGRAM_INVOCATION

config BR2_TOOLCHAIN_CTNG_glibc
	bool "glibc"
	select BR2_LARGEFILE
	select BR2_INET_IPV6
	select BR2_INET_RPC
	select BR2_ENABLE_LOCALE
	select BR2_USE_WCHAR
	select BR2_PROGRAM_INVOCATION

endchoice # C library

config BR2_TOOLCHAIN_CTNG_LIBC
	string
	default "uClibc"	if BR2_TOOLCHAIN_CTNG_uClibc
	default "eglibc"	if BR2_TOOLCHAIN_CTNG_eglibc
	default "glibc"		if BR2_TOOLCHAIN_CTNG_glibc

config BR2_TOOLCHAIN_CTNG_CONFIG
	string "crosstool-NG configuration file to use"
	default "toolchain/toolchain-crosstool-ng/crosstool-ng.config"
	help
	  Enter here the crosstool-NG's .config file to use.
	  If unsure, use the default.
	  To finetune your toolchain, you can also call:
	  make ctng-menuconfig

if BR2_TOOLCHAIN_CTNG_uClibc

comment "Toolchain Options"

config BR2_TOOLCHAIN_CTNG_uClibc_LARGEFILE
	bool "Enable large file (files > 2 GB) support"
	select BR2_LARGEFILE
	help
	  Enable this option if you want your toolchain to support
	  files bigger than 2 GB.

config BR2_TOOLCHAIN_CTNG_uClibc_INET_IPV6
	bool "Enable IPv6 support"
	select BR2_INET_IPV6
	help
	  Enable this option if you want your toolchain to support
	  IPv6.

config BR2_TOOLCHAIN_CTNG_uClibc_INET_RPC
	bool "Enable RPC support"
	select BR2_INET_RPC
	help
	  Enable this option if you want your toolchain to support
	  RPC (needed for NFS, for example).

config BR2_TOOLCHAIN_CTNG_uClibc_WCHAR
	bool "Enable WCHAR support"
	select BR2_USE_WCHAR
	help
	  Enable this option if you want your toolchain to support
	  wide characters (i.e characters longer than 8 bits, needed
	  for locale support).

config BR2_TOOLCHAIN_CTNG_uClibc_LOCALE
	bool "Enable toolchain locale/i18n support"
	select BR2_TOOLCHAIN_CTNG_uClibc_WCHAR
	select BR2_ENABLE_LOCALE
	help
	  Enable this option if you want your toolchain to support
	  localization and internationalization.

config BR2_TOOLCHAIN_CTNG_uClibc_PROGRAM_INVOCATION
	bool "Enable 'program invocation name' support"
	select BR2_PROGRAM_INVOCATION
	help
	  Enable this option if you want your toolchain to support the
	  GNU-specific program_invocation_name and
	  program_invocation_short_name strings.  Some GNU packages
	  (like tar and coreutils) utilize these for extra useful
	  output, but in general are not required.

endif # BR2_TOOLCHAIN_CTNG_uClibc

config BR2_TOOLCHAIN_CTNG_CXX
	bool "Enable C++ support"
	select BR2_INSTALL_LIBSTDCPP
	help
	  Enable this option if you want your toolchain to support the
	  C++ language and you want C++ libraries to be installed on
	  your target system.

choice
	prompt "Thread library implementation"
	default BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS_OLD \
		if BR2_TOOLCHAIN_CTNG_uClibc
	default BR2_TOOLCHAIN_CTNG_THREADS_NPTL		\
		if BR2_TOOLCHAIN_CTNG_eglibc ||		\
		   BR2_TOOLCHAIN_CTNG_glibc
	help
	  Enable thread support and select thread implementation. With
	  glibc, thread support is mandatory but several
	  implementations are available. With uClibc, thread support
	  is optional, and when enabled, several implementations are
	  available. However, not all thread variants work with all
	  versions of uClibc for all architectures, the "linuxthreads
	  (stable/old)" may be a working fallback.

	config BR2_TOOLCHAIN_CTNG_THREADS_NONE
		bool "none"
		depends on BR2_TOOLCHAIN_CTNG_uClibc

	config BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS
		bool "linuxthreads"
		select BR2_TOOLCHAIN_HAS_THREADS

	config BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS_OLD
		bool "linuxthreads (stable/old)"
		select BR2_TOOLCHAIN_HAS_THREADS
		depends on BR2_TOOLCHAIN_CTNG_uClibc

	config BR2_TOOLCHAIN_CTNG_THREADS_NPTL
		bool "Native POSIX Threading (NPTL)"
		select BR2_TOOLCHAIN_HAS_THREADS
		depends on BR2_TOOLCHAIN_CTNG_eglibc || \
			   BR2_TOOLCHAIN_CTNG_glibc
endchoice

endif # BR2_TOOLCHAIN_CTNG
