# Buildroot backend specific options

if BR2_TOOLCHAIN_BUILDROOT
source "toolchain/elf2flt/Config.in"
source "toolchain/mklibs/Config.in"
source "toolchain/sstrip/Config.in"

config BR2_VFP_FLOAT
	bool "Use ARM Vector Floating Point unit"
	depends on !BR2_SOFT_FLOAT
	depends on BR2_arm || BR2_armeb
	help
	  Setting this option will enable the "-mfpu=vfp" option.
	  If your ARM CPU has a Vector Floating Point Unit (VFP)
	  and the toolchain supports the option, then the
	  code can be optimized.

	  Most people will answer N.

config BR2_CROSS_TOOLCHAIN_TARGET_UTILS
	bool "Include target utils in cross toolchain"
	default y
	help
	  When using buildroot to build a deployable cross toolchain,
	  it is handy to include certain target apps with that toolchain
	  as a convenience.
	  Examples include ldd, gdbserver, and strace.

	  Answer Y if you want these apps (if built) copied into the
	  cross toolchain dir under <arch>-linux-uclibc/target_utils/.

endif
