From 9b3e72b4fd51b63227adad5dbcae8f68333903df Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Tue, 16 Jul 2013 10:03:13 +0200 Subject: [PATCH] arch: Refactor BR2_SOFT_FLOAT into per-architecture options As we are going to introduced a more advanced support of floating point options for the ARM architecture, we need to adjust how the soft-float option is handled. We replace the current hidden option BR2_PREFER_SOFT_FLOAT option and the visible BR2_SOFT_FLOAT option by: * A global hidden BR2_SOFT_FLOAT option, defined in arch/Config.in, that tells whether the architecture-specific code is using software emulated floating point. This hidden option can be used throughout Buildroot to determine whether soft float is used or not. * Per-architecture visible BR2__SOFT_FLOAT options, for the architecture for which it makes sense, which allows users to select soft float emulation when needed. This change will allow each architecture to have a different way of presenting its floating point capabilities. Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- arch/Config.in | 3 +++ arch/Config.in.arm | 10 ++++++++++ arch/Config.in.mips | 10 ++++++++++ arch/Config.in.powerpc | 9 +++++++++ toolchain/toolchain-common.in | 21 --------------------- 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/arch/Config.in b/arch/Config.in index 5bb96c5275..c2dc9e809c 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -1,6 +1,9 @@ config BR2_ARCH_IS_64 bool +config BR2_SOFT_FLOAT + bool + choice prompt "Target Architecture" default BR2_i386 diff --git a/arch/Config.in.arm b/arch/Config.in.arm index 027dac2d9d..29b2b45a79 100644 --- a/arch/Config.in.arm +++ b/arch/Config.in.arm @@ -79,6 +79,16 @@ endchoice config BR2_ARM_EABI def_bool y +config BR2_ARM_SOFT_FLOAT + bool "Use soft-float" + default y + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + config BR2_ARM_ENABLE_NEON bool "Enable NEON SIMD extension support" depends on BR2_ARM_CPU_MAYBE_HAS_NEON diff --git a/arch/Config.in.mips b/arch/Config.in.mips index 1454fb4419..6242bcc747 100644 --- a/arch/Config.in.mips +++ b/arch/Config.in.mips @@ -52,6 +52,16 @@ config BR2_MIPS_NABI64 depends on BR2_ARCH_IS_64 endchoice +config BR2_MIPS_SOFT_FLOAT + bool "Use soft-float" + default y + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + config BR2_ARCH default "mips" if BR2_mips default "mipsel" if BR2_mipsel diff --git a/arch/Config.in.powerpc b/arch/Config.in.powerpc index 8643efcd72..ae70a8aa80 100644 --- a/arch/Config.in.powerpc +++ b/arch/Config.in.powerpc @@ -88,6 +88,15 @@ config BR2_powerpc_SPE depends on BR2_powerpc_8540 || BR2_powerpc_8548 endchoice +config BR2_POWERPC_SOFT_FLOAT + bool "Use soft-float" + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + config BR2_ARCH default "powerpc" if BR2_powerpc diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in index 7c9b842cca..dc3bd2a914 100644 --- a/toolchain/toolchain-common.in +++ b/toolchain/toolchain-common.in @@ -90,27 +90,6 @@ config BR2_USE_MMU If your target has a MMU, you should say Y here. If you are unsure, just say Y. -config BR2_PREFER_SOFT_FLOAT - bool - default y if BR2_arm - default y if BR2_armeb - default y if BR2_avr32 - default y if BR2_mips - default y if BR2_mipsel - -config BR2_SOFT_FLOAT - bool "Use software floating point by default" - depends on BR2_arm || BR2_armeb || BR2_avr32 || BR2_mips || BR2_mipsel || BR2_powerpc - # External toolchains will automatically do soft float or hard - # float depending on their configuration - depends on BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_CTNG - default $(BR2_PREFER_SOFT_FLOAT) - help - If your target CPU does not have a Floating Point Unit (FPU) or a - kernel FPU emulator, but you still wish to support floating point - functions, then everything will need to be compiled with soft - floating point support (-msoft-float). - config BR2_TARGET_OPTIMIZATION string "Target Optimizations" default "-pipe"