From 2ee8d1d8f20212ee83692a45e9755c41c13cbe43 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Sat, 4 Jan 2014 16:17:40 +0100 Subject: cc/gcc: add option to enable/disable decimal floats Decimal floats need support form the C library, namely support for fenv, which is missing in uClibc for any architecture but x86/32. Add an option (a choice) to enable or disable decimal floats. Signed-off-by: "Yann E. MORIN" diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2 index 20b70d8..822cfd7 100644 --- a/config/cc/gcc.in.2 +++ b/config/cc/gcc.in.2 @@ -255,6 +255,52 @@ config CC_GCC_LNK_HASH_STYLE default "gnu" if CC_GCC_LNK_HASH_STYLE_GNU default "both" if CC_GCC_LNK_HASH_STYLE_BOTH +choice CC_GCC_DEC_FLOATS_CHOICE + bool "Decimal floats" + default CC_GCC_DEC_FLOATS_AUTO + help + Choose what type of decimal floats to support. + + Note that using decimal floats requires a C library that provides + support for fenv (namely, the fenv.h header). This is the case + for (e)glibc, and uClibc on x86/32. For other C libraries, or + uClibc on other archs, this might not be the case, so you should + disable support for decimal floats. + + The default is to let ./configure decide. + +config CC_GCC_DEC_FLOAT_AUTO + bool "auto" + help + Let ./configure decide. If you say 'y' here, gcc will default to: + - 'bid' for x86 (32- and 64-bit) + - 'dpd' for powerpc + - 'no' for the other architectures + +config CC_GCC_DEC_FLOAT_BID + bool "bid" + help + Use the 'binary integer decimal' format for decimal floats. + +config CC_GCC_DEC_FLOAT_DPD + bool "dpd" + help + Use the 'densely packed decimal' for decimal floats. + +config CC_GCC_DEC_FLOATS_NO + bool "no" + help + Do not support decimal floats. The default. + +endchoice # CC_GCC_DEC_FLOATS_CHOICE + +config CC_GCC_DEC_FLOATS + string + default "" if CC_GCC_DEC_FLOATS_AUTO + default "bid" if CC_GCC_DEC_FLOATS_BID + default "dpd" if CC_GCC_DEC_FLOATS_DPD + default "no" if CC_GCC_DEC_FLOATS_NO + #----------------------------------------------------------------------------- config CC_GCC_HAS_ARCH_OPTIONS diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index a443d84..7f3415c 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -333,6 +333,11 @@ do_cc_core_backend() { *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; esac + case "${CT_CC_GCC_DEC_FLOATS}" in + "") ;; + *) extra_config+=( "--enable-decimal-float=${CT_CC_GCC_DEC_FLOATS}" );; + esac + case "${CT_ARCH}" in mips) case "${CT_CC_GCC_mips_llsc}" in @@ -784,6 +789,11 @@ do_cc_backend() { *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; esac + case "${CT_CC_GCC_DEC_FLOATS}" in + "") ;; + *) extra_config+=( "--enable-decimal-float=${CT_CC_GCC_DEC_FLOATS}" );; + esac + if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then extra_config+=( --enable-plugin ) fi -- cgit v0.10.2-6-g49f6