[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