[PATCH 1 of 1] gcc: support 'softfp' toolchains for ARM

Javier Viguera javier.viguera@digi.com
Wed Aug 31 16:10:00 GMT 2011


# HG changeset patch
# User Javier Viguera <javier.viguera@digi.com>
# Date 1314806112 -7200
# Node ID 3d480b953bf8ef37829d8c078a5ea860b57bcf98
# Parent  a171c274bc12d640850aeb5989059b818fbc8064
gcc: support 'softfp' toolchains for ARM

Allows to build toolchains with default '-mfloat-abi=softfp -mfpu=...'.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>

diff -r a171c274bc12 -r 3d480b953bf8 config/arch/arm.in
--- a/config/arch/arm.in	Tue Aug 30 19:38:10 2011 +0200
+++ b/config/arch/arm.in	Wed Aug 31 17:55:12 2011 +0200
@@ -10,6 +10,7 @@
 ## select ARCH_SUPPORT_CPU
 ## select ARCH_SUPPORT_TUNE
 ## select ARCH_SUPPORT_FPU
+## select ARCH_SUPPORT_SOFTFP
 ##
 ## help The ARM architecture, as defined by:
 ## help     http://www.arm.com/
diff -r a171c274bc12 -r 3d480b953bf8 config/target.in
--- a/config/target.in	Tue Aug 30 19:38:10 2011 +0200
+++ b/config/target.in	Wed Aug 31 17:55:12 2011 +0200
@@ -15,6 +15,7 @@
 config ARCH_SUPPORT_CPU
 config ARCH_SUPPORT_TUNE
 config ARCH_SUPPORT_FPU
+config ARCH_SUPPORT_SOFTFP
 
 config ARCH_DEFAULT_HAS_MMU
 config ARCH_DEFAULT_BE
@@ -34,6 +35,7 @@
 config ARCH_BITNESS
 config ARCH_FLOAT_HW
 config ARCH_FLOAT_SW
+config ARCH_FLOAT_SOFTFP
 config TARGET_CFLAGS
 config TARGET_LDFLAGS
 
@@ -144,6 +146,10 @@
 config ARCH_SUPPORT_FPU
     bool
 
+config ARCH_SUPPORT_SOFTFP
+    bool
+    default n
+
 config ARCH_ARCH
     string
     prompt "Architecture level"
@@ -271,6 +277,11 @@
       If your processor has no FPU, then you most probably want this, as it
       is faster than emulating the FPU in the kernel.
 
+config ARCH_FLOAT_SOFTFP
+    bool
+    prompt "softfp"
+    depends on ARCH_SUPPORT_SOFTFP
+
 endchoice
 
 config TARGET_CFLAGS
diff -r a171c274bc12 -r 3d480b953bf8 scripts/build/arch/arm.sh
--- a/scripts/build/arch/arm.sh	Tue Aug 30 19:38:10 2011 +0200
+++ b/scripts/build/arch/arm.sh	Wed Aug 31 17:55:12 2011 +0200
@@ -4,6 +4,9 @@
     # The architecture part of the tuple:
     CT_TARGET_ARCH="${CT_ARCH}${target_endian_eb}"
 
+    # gcc ./configure flags
+    [ "${CT_ARCH_FLOAT_SOFTFP}" ] && { CT_ARCH_FLOAT_CFLAG="-mfloat-abi=softfp"; CT_ARCH_WITH_FLOAT="--with-float=softfp"; }
+
     # The system part of the tuple:
     case "${CT_LIBC},${CT_ARCH_ARM_EABI}" in
         *glibc,y)   CT_TARGET_SYS=gnueabi;;
diff -r a171c274bc12 -r 3d480b953bf8 scripts/build/libc/glibc-eglibc.sh-common
--- a/scripts/build/libc/glibc-eglibc.sh-common	Tue Aug 30 19:38:10 2011 +0200
+++ b/scripts/build/libc/glibc-eglibc.sh-common	Wed Aug 31 17:55:12 2011 +0200
@@ -132,9 +132,9 @@
         *) extra_config+=("--disable-shared");;
     esac
 
-    case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in
-        y,) extra_config+=("--with-fp");;
-        ,y) extra_config+=("--without-fp");;
+    case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW},${CT_ARCH_FLOAT_SOFTFP}" in
+        y,,) extra_config+=("--with-fp");;
+        ,y,|,,y) extra_config+=("--without-fp");;
     esac
 
     if [ "${CT_LIBC_DISABLE_VERSIONING}" = "y" ]; then
diff -r a171c274bc12 -r 3d480b953bf8 scripts/build/libc/uClibc.sh
--- a/scripts/build/libc/uClibc.sh	Tue Aug 30 19:38:10 2011 +0200
+++ b/scripts/build/libc/uClibc.sh	Wed Aug 31 17:55:12 2011 +0200
@@ -352,13 +352,13 @@
 
     # Accomodate for old and new uClibc version, where the
     # way to select between hard/soft float has changed
-    case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in
-        y,) cat <<-ENDSED
+    case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW},${CT_ARCH_FLOAT_SOFTFP}" in
+        y,,) cat <<-ENDSED
 				s/^[^_]*(HAS_FPU).*/\\1=y/
 				s/.*(UCLIBC_HAS_FPU).*/\\1=y/
 				ENDSED
             ;;
-        ,y) cat <<-ENDSED
+        ,y,|,,y) cat <<-ENDSED
 				s/^[^_]*(HAS_FPU).*/\\# \\1 is not set/
 				s/.*(UCLIBC_HAS_FPU).*/# \\1 is not set/
 				ENDSED
diff -r a171c274bc12 -r 3d480b953bf8 scripts/showSamples.sh
--- a/scripts/showSamples.sh	Tue Aug 30 19:38:10 2011 +0200
+++ b/scripts/showSamples.sh	Wed Aug 31 17:55:12 2011 +0200
@@ -127,7 +127,7 @@
             printf "  ${CT_LIBC_VERSION}  "
         fi
         printf "|  ${CT_THREADS:-none}  "
-        printf "|  ${CT_ARCH_FLOAT_HW:+hard}${CT_ARCH_FLOAT_SW:+soft}  "
+        printf "|  ${CT_ARCH_FLOAT_HW:+hard}${CT_ARCH_FLOAT_SW:+soft}${CT_ARCH_FLOAT_SOFTFP:+softfp}  "
         printf "|  C"
         [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ", C++"
         [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ", Fortran"

--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list