if BR2_TOOLCHAIN_BUILDROOT_UCLIBC

comment "uClibc Options"

choice
	prompt "uClibc C library Version"
	default BR2_UCLIBC_VERSION_0_9_33
	help
	  Select the version of uClibc you wish to use.

	config BR2_UCLIBC_VERSION_0_9_31
		bool "uClibc 0.9.31.x"
		depends on BR2_avr32

	config BR2_UCLIBC_VERSION_0_9_32
		bool "uClibc 0.9.32.x"
		depends on !(BR2_arc || BR2_avr32 || BR2_sh || BR2_xtensa)

	config BR2_UCLIBC_VERSION_0_9_33
		bool "uClibc 0.9.33.x"
		depends on !(BR2_arc || BR2_avr32 || BR2_xtensa)

	config BR2_UCLIBC_VERSION_XTENSA_GIT
		bool "uClibc Git Xtensa"
		depends on BR2_xtensa

	config BR2_UCLIBC_VERSION_SNAPSHOT
		bool "daily snapshot"
		depends on !(BR2_arc)

endchoice

config BR2_USE_UCLIBC_SNAPSHOT
	string "Date (yyyymmdd) of snapshot or 'snapshot' for latest"
	default "snapshot"
	depends on BR2_UCLIBC_VERSION_SNAPSHOT
	help
	  Use latest snapshot or one from a specific date?

config BR2_UCLIBC_VERSION_STRING
	string
	default 0.9.31.1	if BR2_UCLIBC_VERSION_0_9_31
	default 0.9.32.1	if BR2_UCLIBC_VERSION_0_9_32
	default 0.9.33.2	if BR2_UCLIBC_VERSION_0_9_33
	default "9f0f466d3b17181ce88be36ce24a775774fe686c" if BR2_arc
	default "7bf35c8b7d4a1f97174eb49f47f33946b282114c" if BR2_UCLIBC_VERSION_XTENSA_GIT
	default BR2_USE_UCLIBC_SNAPSHOT	if BR2_UCLIBC_VERSION_SNAPSHOT

config BR2_UCLIBC_CONFIG
	string "uClibc configuration file to use?"
	default "package/uclibc/uClibc-0.9.31.config" if BR2_UCLIBC_VERSION_0_9_31
	default "package/uclibc/uClibc-0.9.32.config" if BR2_UCLIBC_VERSION_0_9_32
	default "package/uclibc/uClibc-0.9.33.config" if BR2_UCLIBC_VERSION_0_9_33
	default "package/uclibc/uClibc-snapshot.config" if BR2_arc
	default "package/uclibc/uClibc-snapshot.config" if BR2_UCLIBC_VERSION_SNAPSHOT
	default "package/uclibc/uClibc-snapshot.config" if BR2_UCLIBC_VERSION_XTENSA_GIT
	help
	  Some people may wish to use their own modified uClibc configuration
	  file and will specify their config file location with this option.
	  See also docs/README in this package.
	  If unsure, use the default.

config BR2_TOOLCHAIN_BUILDROOT_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_BUILDROOT_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_BUILDROOT_INET_RPC
	bool "Enable RPC support"
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	help
	  Enable this option if you want your toolchain to support
	  RPC (needed for NFS, for example).

config BR2_TOOLCHAIN_BUILDROOT_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_BUILDROOT_LOCALE
	bool "Enable toolchain locale/i18n support"
	select BR2_TOOLCHAIN_BUILDROOT_WCHAR
	select BR2_ENABLE_LOCALE
	help
	  Enable this option if you want your toolchain to support
	  localization and internationalization.

choice
	prompt "Thread library implementation"
	default BR2_PTHREADS_NATIVE if !(BR2_avr32 || BR2_xtensa)
	default BR2_PTHREADS_OLD
	help
	  Use this option to select the thread library implementation
	  that should be used in your toolchain. Not all thread
	  variants work with all versions of uClibc, the "linuxthreads
	  (stable/old)" may be a working fallback if you need
	  threading at all.

	config BR2_PTHREADS_NONE
		bool "none"

	config BR2_PTHREADS
		bool "linuxthreads"
		depends on !BR2_bfin
		depends on !BR2_xtensa
		select BR2_TOOLCHAIN_HAS_THREADS

	config BR2_PTHREADS_OLD
		bool "linuxthreads (stable/old)"
		select BR2_TOOLCHAIN_HAS_THREADS

	config BR2_PTHREADS_NATIVE
		bool "Native POSIX Threading (NPTL)"
		select BR2_TOOLCHAIN_HAS_THREADS
		depends on !BR2_arc
		depends on !BR2_avr32
		depends on !BR2_bfin
		depends on !BR2_xtensa
		depends on !BR2_x86_i386
endchoice

config BR2_PTHREAD_DEBUG
	bool "Thread library debugging"
	depends on BR2_PTHREADS || BR2_PTHREADS_OLD || BR2_PTHREADS_NATIVE
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	help
	  Build the thread library with debugging enabled.

config BR2_TOOLCHAIN_BUILDROOT_USE_SSP
	bool "Enable stack protection support"
	select BR2_TOOLCHAIN_HAS_SSP
	help
	  Enable stack smashing protection support using GCCs
	  -fstack-protector-all option in uClibc.

	  See http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
	  for details.

config BR2_UCLIBC_INSTALL_UTILS
	bool "Compile and install uClibc utilities"
	depends on !BR2_bfin
	default y
	help
	  Enabling this option will compile and install the getconf,
	  ldconfig and ldd uClibc utilities for the target.

	  You can save ~32 KiB in target space by disabling them since
	  they're normally not needed.

config BR2_UCLIBC_INSTALL_TEST_SUITE
	bool "Compile and install uClibc tests"
	select BR2_PACKAGE_MAKE
	help
	  Enabling this option will compile and install the uClibc test suite.
	  This is useful if you want to check if the uClibc library is working
	  for your architecture and/or help developing uClibc.

	  The test suite will be installed into /root/uClibc directory. To run
	  the test suite enter the /root/uClibc/test directory and type
	  "make UCLIBC_ONLY=1 CC=/bin/true check".

	  See the /root/uClibc/test/README for additional information.

	  This is not needed at all for normal builds, so you can safely say no
	  if you do not plan to dig into your C library.

# Mapping from the Buildroot architecture configuration options to the
# uClibc architecture names.
config BR2_UCLIBC_TARGET_ARCH
	string
	default arc	   if BR2_arcle || BR2_arceb
	default arm	   if BR2_arm	|| BR2_armeb
	default avr32	   if BR2_avr32
	default bfin	   if BR2_bfin
	default m68k	   if BR2_m68k
	default mips	   if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
	default powerpc	   if BR2_powerpc
	default sh	   if BR2_sh
	default sparc	   if BR2_sparc
	default xtensa	   if BR2_xtensa
	default i386	   if BR2_i386
	default x86_64	   if BR2_x86_64

# This is only useful for uClibc <= 0.9.32. It can be removed once
# Buildroot will support only uClibc >= 0.9.33 on ARM.
config BR2_UCLIBC_ARM_TYPE
	string
	depends on BR2_UCLIBC_TARGET_ARCH = "arm"
	default GENERIC_ARM	if BR2_fa526
	default ARM7TDMI	if BR2_arm7tdmi
	default ARM720T		if BR2_arm720t
	default ARM920T		if BR2_arm920t
	default ARM922T		if BR2_arm922t
	default ARM926T		if BR2_arm926t
	default ARM10T		if BR2_arm10t
	default ARM1136JF_S	if BR2_arm1136jf_s
	default ARM1176JZ_S	if BR2_arm1176jz_s
	default ARM1176JZF_S	if BR2_arm1176jzf_s
	default ARM_SA1100	if BR2_strongarm
	default ARM_XSCALE	if BR2_xscale
	default ARM_IWMMXT	if BR2_iwmmxt
	default ARM_CORTEXA8	if BR2_cortex_a8
	default ARM_CORTEXA9	if BR2_cortex_a9

config BR2_UCLIBC_ARM_BX
	bool
	depends on BR2_UCLIBC_TARGET_ARCH = "arm"
	default y if (BR2_ARM_CPU_HAS_THUMB || BR2_ARM_CPU_HAS_THUMB2)

config BR2_UCLIBC_MIPS_ABI
	string
	depends on BR2_UCLIBC_TARGET_ARCH = "mips"
	default O32 if BR2_MIPS_OABI32
	default N32 if BR2_MIPS_NABI32
	default N64 if BR2_MIPS_NABI64

config BR2_UCLIBC_MIPS_ISA
	string
	depends on BR2_UCLIBC_TARGET_ARCH = "mips"
	default 1 if BR2_mips_1
	default 2 if BR2_mips_2
	default 3 if BR2_mips_3
	default 4 if BR2_mips_4
	default MIPS32 if BR2_mips_32
	default MIPS32R2 if BR2_mips_32r2
	default MIPS64 if BR2_mips_64

config BR2_UCLIBC_SH_TYPE
	string
	depends on BR2_UCLIBC_TARGET_ARCH = "sh"
	default SH2A if BR2_sh2a
	default SH4  if BR2_sh4 || BR2_sh4eb

config BR2_UCLIBC_SPARC_TYPE
	string
	depends on BR2_UCLIBC_TARGET_ARCH = "sparc"
	default V7	if BR2_sparc_v7 || BR2_sparc_sparchfleon || BR2_sparc_sparcsfleon
	default V8	if BR2_sparc_v8 || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleonv8

config BR2_UCLIBC_POWERPC_TYPE
	string
	depends on BR2_UCLIBC_TARGET_ARCH = "powerpc"
	default CLASSIC if !BR2_powerpc_8540 && !BR2_powerpc_8548
	default E500    if BR2_powerpc_8540 || BR2_powerpc_8548

config BR2_UCLIBC_X86_TYPE
	string
	depends on BR2_UCLIBC_TARGET_ARCH = "i386"
	default 386     if BR2_x86_i386
	default 486	if BR2_x86_i486
	default 586	if BR2_x86_i586
	default 586MMX	if BR2_x86_pentium_mmx
	default 686	if BR2_x86_i686 || BR2_x86_pentiumpro
	default PENTIUMII  if BR2_x86_pentium2
	default PENTIUMIII if BR2_x86_pentium3
	default PENTIUM4   if BR2_x86_pentium4 || BR2_x86_pentium_m || \
			      BR2_x86_nocona || BR2_x86_core2

endif # BR2_TOOLCHAIN_BUILDROOT_UCLIBC
