config BR2_PACKAGE_UCLIBC_ARCH_SUPPORTS
	bool
	default y if BR2_aarch64
	default y if BR2_aarch64_be
	default y if BR2_arcle
	default y if BR2_arm
	default y if BR2_armeb
	default y if BR2_i386
	default y if BR2_m68k
	default y if BR2_microblaze
	default y if BR2_mips
	default y if BR2_mipsel
	default y if BR2_mips64
	default y if BR2_mips64el
	default y if BR2_or1k
	default y if BR2_powerpc
	# see libc/sysdeps/linux/riscv32/sys/asm.h
	default y if BR2_RISCV_32 && (BR2_RISCV_ABI_ILP32 || BR2_RISCV_ABI_ILP32D)
	# see libc/sysdeps/linux/riscv64/sys/asm.h
	default y if BR2_RISCV_64 && (BR2_RISCV_ABI_LP64 || BR2_RISCV_ABI_LP64D)
	default y if BR2_sh4
	default y if BR2_sh4eb
	default y if BR2_sparc
	default y if BR2_xtensa
	default y if BR2_x86_64

config BR2_PACKAGE_UCLIBC_SUPPORTS
	bool
	default y if BR2_PACKAGE_UCLIBC_ARCH_SUPPORTS

if BR2_TOOLCHAIN_BUILDROOT_UCLIBC

comment "uClibc Options"

config BR2_PACKAGE_UCLIBC
	bool
	default y
	select BR2_PACKAGE_LINUX_HEADERS

config BR2_UCLIBC_CONFIG
	string "uClibc configuration file to use?"
	default "package/uclibc/uClibc-ng.config"
	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_UCLIBC_CONFIG_FRAGMENT_FILES
	string "Additional uClibc configuration fragment files"
	help
	  A space-separated list of configuration fragment files, that
	  will be merged to the main uClibc configuration file.

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
	select BR2_NEEDS_HOST_UTF8_LOCALE
	help
	  Enable this option if you want your toolchain to support
	  localization and internationalization.

choice
	prompt "Thread library implementation"
	help
	  Use this option to select the thread library implementation
	  that should be used in your toolchain.

config BR2_PTHREADS_NATIVE
	bool "Native POSIX Threading (NPTL)"
	depends on BR2_USE_MMU || ((BR2_arm || BR2_armeb) && BR2_BINFMT_FDPIC)
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_NPTL

config BR2_PTHREADS
	bool "linuxthreads"
	depends on !BR2_aarch64 && !BR2_aarch64_be
	select BR2_TOOLCHAIN_HAS_THREADS

config BR2_PTHREADS_NONE
	bool "none"

endchoice

config BR2_PTHREAD_DEBUG
	bool "Thread library debugging"
	depends on BR2_PTHREADS || 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"
	depends on BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI
	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"
	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.

# Mapping from the Buildroot architecture configuration options to the
# uClibc architecture names.
config BR2_UCLIBC_TARGET_ARCH
	string
	default "aarch64"  if BR2_aarch64 || BR2_aarch64_be
	default "arc"	   if BR2_arcle
	default "arm"	   if BR2_arm	|| BR2_armeb
	default "m68k"	   if BR2_m68k
	default "microblaze"   if BR2_microblaze
	default "mips"	   if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
	default "or1k"     if BR2_or1k
	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
	default "riscv64"  if BR2_RISCV_64
	default "riscv32"  if BR2_RISCV_32

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

config BR2_UCLIBC_MIPS_NAN
	string
	default "LEGACY" if BR2_MIPS_NAN_LEGACY
	default "2008" if BR2_MIPS_NAN_2008
	depends on BR2_UCLIBC_TARGET_ARCH = "mips"

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

config BR2_UCLIBC_SPARC_TYPE
	string
	default "V8"	if BR2_sparc_v8
	depends on BR2_UCLIBC_TARGET_ARCH = "sparc"

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

config BR2_UCLIBC_X86_TYPE
	string
	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 || BR2_x86_corei7
	depends on BR2_UCLIBC_TARGET_ARCH = "i386"

endif # BR2_TOOLCHAIN_BUILDROOT_UCLIBC
