# HG changeset patch # User "Yann E. MORIN" # Date 1388848660 -3600 # Node ID c4b4bb58f639995e35edd3dd1874d1def6f62cc3 # Parent b8da1339f9fc9558573cfd2d4e00193b500f1b48 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 -r b8da1339f9fc -r c4b4bb58f639 config/cc/gcc.in.2 --- a/config/cc/gcc.in.2 Wed Jan 15 23:24:27 2014 +0100 +++ b/config/cc/gcc.in.2 Sat Jan 04 16:17:40 2014 +0100 @@ -255,6 +255,52 @@ 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 -r b8da1339f9fc -r c4b4bb58f639 scripts/build/cc/gcc.sh --- a/scripts/build/cc/gcc.sh Wed Jan 15 23:24:27 2014 +0100 +++ b/scripts/build/cc/gcc.sh Sat Jan 04 16:17:40 2014 +0100 @@ -333,6 +333,11 @@ *) 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 @@ *) 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