diff mbox

[1/2] deb-pkg: Add automatic support for armhf architecture

Message ID 1381079041.2788.25.camel@deadeye.wl.decadent.org.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Ben Hutchings Oct. 6, 2013, 5:04 p.m. UTC
The Debian armhf architecture uses the ARM EABI hard-float variant,
whereas armel uses the soft-float variant.  Although the kernel
doesn't use FP itself, CONFIG_VFP must be enabled to support
hard-float userland and will probably be disabled when supporting a
soft-float userland.  So set the architecture to armhf by default when
CONFIG_AEABI and CONFIG_VFP are both enabled.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 scripts/package/builddeb | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

maximilian attems Oct. 7, 2013, 1:38 p.m. UTC | #1
On Sun, Oct 06, 2013 at 06:04:01PM +0100, Ben Hutchings wrote:
> The Debian armhf architecture uses the ARM EABI hard-float variant,
> whereas armel uses the soft-float variant.  Although the kernel
> doesn't use FP itself, CONFIG_VFP must be enabled to support
> hard-float userland and will probably be disabled when supporting a
> soft-float userland.  So set the architecture to armhf by default when
> CONFIG_AEABI and CONFIG_VFP are both enabled.
> 
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: maximilian attems <max@stro.at>
> ---
>  scripts/package/builddeb | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/package/builddeb b/scripts/package/builddeb
> index 90e521f..e14c56e 100644
> --- a/scripts/package/builddeb
> +++ b/scripts/package/builddeb
> @@ -43,7 +43,16 @@ create_package() {
>  	mips*)
>  		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el) ;;
>  	arm*)
> -		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el) ;;
> +		if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
> +		    if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
> +			debarch=armhf
> +		    else
> +			debarch=armel
> +		    fi
> +		else
> +		    debarch=arm
> +		fi
> +		;;
>  	*)
>  		echo "" >&2
>  		echo "** ** **  WARNING  ** ** **" >&2
> 
> 
> -- 
> Ben Hutchings
> Who are all these weirdos? - David Bowie, reading IRC for the first time


--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Fathi Boudra Oct. 7, 2013, 3:01 p.m. UTC | #2
On 6 October 2013 20:04, Ben Hutchings <ben@decadent.org.uk> wrote:
> The Debian armhf architecture uses the ARM EABI hard-float variant,
> whereas armel uses the soft-float variant.  Although the kernel
> doesn't use FP itself, CONFIG_VFP must be enabled to support
> hard-float userland and will probably be disabled when supporting a
> soft-float userland.  So set the architecture to armhf by default when
> CONFIG_AEABI and CONFIG_VFP are both enabled.
>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

Acked-by: Fathi Boudra <fathi.boudra@linaro.org>

> ---
>  scripts/package/builddeb | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/package/builddeb b/scripts/package/builddeb
> index 90e521f..e14c56e 100644
> --- a/scripts/package/builddeb
> +++ b/scripts/package/builddeb
> @@ -43,7 +43,16 @@ create_package() {
>         mips*)
>                 debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el) ;;
>         arm*)
> -               debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el) ;;
> +               if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
> +                   if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
> +                       debarch=armhf
> +                   else
> +                       debarch=armel
> +                   fi
> +               else
> +                   debarch=arm
> +               fi
> +               ;;
>         *)
>                 echo "" >&2
>                 echo "** ** **  WARNING  ** ** **" >&2
>
>
> --
> Ben Hutchings
> Who are all these weirdos? - David Bowie, reading IRC for the first time
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Héctor Orón Martínez Oct. 8, 2013, 12:23 a.m. UTC | #3
Hello,

2013/10/6 Ben Hutchings <ben@decadent.org.uk>:
> The Debian armhf architecture uses the ARM EABI hard-float variant,
> whereas armel uses the soft-float variant.  Although the kernel
> doesn't use FP itself, CONFIG_VFP must be enabled to support
> hard-float userland and will probably be disabled when supporting a
> soft-float userland.  So set the architecture to armhf by default when
> CONFIG_AEABI and CONFIG_VFP are both enabled.

Debian armel userland can be run on any device, so it is suggested to
better rely on toolchain configuration rather than kernel config
symbols.

For arm-gnueabi(hf) toolchain something like:
  $ gcc -dumpspecs | grep multilib_defaults -A2 | grep -q soft && echo
"This is armel"
  $ gcc -dumpspecs | grep multilib_defaults -A2 | grep -q hard && echo
"This is armhf"
could be checked instead.

Best regards

> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
>  scripts/package/builddeb | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/package/builddeb b/scripts/package/builddeb
> index 90e521f..e14c56e 100644
> --- a/scripts/package/builddeb
> +++ b/scripts/package/builddeb
> @@ -43,7 +43,16 @@ create_package() {
>         mips*)
>                 debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el) ;;
>         arm*)
> -               debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el) ;;
> +               if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
> +                   if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
> +                       debarch=armhf
> +                   else
> +                       debarch=armel
> +                   fi
> +               else
> +                   debarch=arm
> +               fi
> +               ;;
>         *)
>                 echo "" >&2
>                 echo "** ** **  WARNING  ** ** **" >&2
>
>
> --
> Ben Hutchings
> Who are all these weirdos? - David Bowie, reading IRC for the first time
Ben Hutchings Oct. 13, 2013, 7:59 p.m. UTC | #4
On Tue, 2013-10-08 at 02:23 +0200, Hector Oron wrote:
> Hello,
> 
> 2013/10/6 Ben Hutchings <ben@decadent.org.uk>:
> > The Debian armhf architecture uses the ARM EABI hard-float variant,
> > whereas armel uses the soft-float variant.  Although the kernel
> > doesn't use FP itself, CONFIG_VFP must be enabled to support
> > hard-float userland and will probably be disabled when supporting a
> > soft-float userland.  So set the architecture to armhf by default when
> > CONFIG_AEABI and CONFIG_VFP are both enabled.
> 
> Debian armel userland can be run on any device, so it is suggested to
> better rely on toolchain configuration rather than kernel config
> symbols.
> 
> For arm-gnueabi(hf) toolchain something like:
>   $ gcc -dumpspecs | grep multilib_defaults -A2 | grep -q soft && echo
> "This is armel"
>   $ gcc -dumpspecs | grep multilib_defaults -A2 | grep -q hard && echo
> "This is armhf"
> could be checked instead.
[...]

Is the output of -dumpspecs really so stable that this is going to be
reliable?

Ben.
Héctor Orón Martínez Oct. 24, 2013, 10:59 a.m. UTC | #5
Hello,

2013/10/13 Ben Hutchings <ben@decadent.org.uk>:
> On Tue, 2013-10-08 at 02:23 +0200, Hector Oron wrote:
>> Hello,
>>
>> 2013/10/6 Ben Hutchings <ben@decadent.org.uk>:
>> > The Debian armhf architecture uses the ARM EABI hard-float variant,
>> > whereas armel uses the soft-float variant.  Although the kernel
>> > doesn't use FP itself, CONFIG_VFP must be enabled to support
>> > hard-float userland and will probably be disabled when supporting a
>> > soft-float userland.  So set the architecture to armhf by default when
>> > CONFIG_AEABI and CONFIG_VFP are both enabled.
>>
>> Debian armel userland can be run on any device, so it is suggested to
>> better rely on toolchain configuration rather than kernel config
>> symbols.
>>
>> For arm-gnueabi(hf) toolchain something like:
>>   $ gcc -dumpspecs | grep multilib_defaults -A2 | grep -q soft && echo
>> "This is armel"
>>   $ gcc -dumpspecs | grep multilib_defaults -A2 | grep -q hard && echo
>> "This is armhf"
>> could be checked instead.
> [...]
>
> Is the output of -dumpspecs really so stable that this is going to be
> reliable?

I am not sure about it... but up to date, I have never found a system
that makes it faulty. I would be interesting to check on other
distributions besides Debian.
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index 90e521f..e14c56e 100644
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -43,7 +43,16 @@  create_package() {
 	mips*)
 		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el) ;;
 	arm*)
-		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el) ;;
+		if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
+		    if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
+			debarch=armhf
+		    else
+			debarch=armel
+		    fi
+		else
+		    debarch=arm
+		fi
+		;;
 	*)
 		echo "" >&2
 		echo "** ** **  WARNING  ** ** **" >&2