diff mbox

[1/1,V3] toolchain: control vendor part in GNU_TARGET_NAME

Message ID 884EA965490E3C4D8E66AEF41E9802500939A1@ezex10.ezchip.com
State Superseded
Headers show

Commit Message

Noam Camus March 4, 2014, 4:51 a.m. UTC
This option allows to customize the "vendor" part of the
toolchain tuple, where the toolchain tuple has the form
<cpu>-<vendor>-<kernel>-<os>. Use this option in situations
where gcc might make different decisions based on the vendor
part of the tuple.

Signed-off-by: Noam Camus <noamc@ezchip.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in                     |   12 +++++++++++-
 toolchain/toolchain-buildroot/Config.in |   17 +++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletions(-)

--
1.7.1

Comments

Yann E. MORIN March 4, 2014, 6:52 p.m. UTC | #1
Noam, All,

On 2014-03-04 04:51 +0000, Noam Camus spake thusly:
> This option allows to customize the "vendor" part of the
> toolchain tuple, where the toolchain tuple has the form
> <cpu>-<vendor>-<kernel>-<os>. Use this option in situations
> where gcc might make different decisions based on the vendor
> part of the tuple.
> 
> Signed-off-by: Noam Camus <noamc@ezchip.com>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

I don't think Thomas provided a SoB line so far. You can't add such a
line for someone else, unless they explicitly stated so. A SoB-line is
binding:
    http://elinux.org/Developer_Certificate_Of_Origin

> diff --git a/package/Makefile.in b/package/Makefile.in
> index 454f614..121fe74 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -20,8 +20,18 @@ endif
>  MAKE1:=$(HOSTMAKE) -j1
>  MAKE:=$(HOSTMAKE) $(if $(PARALLEL_JOBS),-j$(PARALLEL_JOBS))
> 
> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_VENDOR),)
> +VENDOR:=buildroot
> +else
> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_VENDOR),unknown)
> +$(error The value 'unknown' is not allowed. It might be confused with native toolchain)

... with the native ...

[--SNIP--]
> diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
> index 07db50b..34f78ae 100644
> --- a/toolchain/toolchain-buildroot/Config.in
> +++ b/toolchain/toolchain-buildroot/Config.in
> @@ -70,6 +70,23 @@ config BR2_TOOLCHAIN_BUILDROOT_LIBC
>         default "glibc"  if BR2_TOOLCHAIN_BUILDROOT_EGLIBC
>         default "glibc"  if BR2_TOOLCHAIN_BUILDROOT_GLIBC

Your patch is space-mangled: the leading tabs have been replaced with
spaces. Can you try to use 'git send-email' to send the mails? This is
known to work correctly most of the case, whereas some user-friendly
mailers (lie the ones from MS) have issues properly sending patches.

> +config BR2_TOOLCHAIN_BUILDROOT_VENDOR
> +       string "custom toolchain vendor name"
> +       default "buildroot"
> +       help
> +

Superfluous empty line.

> +         This option allows to customize the "vendor" part of the
> +         toolchain tuple, where the toolchain tuple has the form
> +         <cpu>-<vendor>-<kernel>-<os>. The default value, "buildroot",
> +         is fine for most cases, except in very specific situations
> +         where gcc might make different decisions based on the vendor
> +         part of the tuple. The value "unknown" is not allowed, as the
> +         cross-compiling toolchain might then be confused with the
> +         native toolchain when the target and host architecture are
> +         identical.
> +
> +         If you're not sure, just leave the default "buildroot" value.

Add something like:

    Leaving this empty will also use the default "buildroot" value.

Otherwise, looks good.

Regards,
Yann E. MORIN.
Arnout Vandecappelle March 5, 2014, 5:43 p.m. UTC | #2
On 04/03/14 05:51, Noam Camus wrote:
> This option allows to customize the "vendor" part of the
> toolchain tuple, where the toolchain tuple has the form
> <cpu>-<vendor>-<kernel>-<os>. Use this option in situations
> where gcc might make different decisions based on the vendor
> part of the tuple.
> 
> Signed-off-by: Noam Camus <noamc@ezchip.com>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  package/Makefile.in                     |   12 +++++++++++-
>  toolchain/toolchain-buildroot/Config.in |   17 +++++++++++++++++
>  2 files changed, 28 insertions(+), 1 deletions(-)
> 
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 454f614..121fe74 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -20,8 +20,18 @@ endif
>  MAKE1:=$(HOSTMAKE) -j1
>  MAKE:=$(HOSTMAKE) $(if $(PARALLEL_JOBS),-j$(PARALLEL_JOBS))
> 
> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_VENDOR),)
> +VENDOR:=buildroot
> +else
> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_VENDOR),unknown)
> +$(error The value 'unknown' is not allowed. It might be confused with native toolchain)
> +else
> +VENDOR:=$(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_VENDOR))
> +endif
> +endif

 I don't think it's a good idea to treat the case that vendor is empty
specially. Anyway, it will never be empty or unknown, because it always
includes quotes - it should be qstripped first.

 Therefore, this is better (also note the fixed spacing and := ):

VENDOR = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_VENDOR))
ifeq ($(VENDOR),)
$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR is not allowed to be empty)
endif
ifeq ($(VENDOR),unknown)
$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR cannot be 'unknown'. \
        It might be confused with the native toolchain)
endif


 I would also prefer to name the internal variable TARGET_VENDOR, similar
to TARGET_OS.

> +
>  # Compute GNU_TARGET_NAME
> -GNU_TARGET_NAME=$(ARCH)-buildroot-$(TARGET_OS)-$(LIBC)$(ABI)
> +GNU_TARGET_NAME=$(ARCH)-$(VENDOR)-$(TARGET_OS)-$(LIBC)$(ABI)
> 
>  # Blackfin FLAT needs uclinux
>  ifeq ($(BR2_bfin)$(BR2_BINFMT_FLAT),yy)
> diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
> index 07db50b..34f78ae 100644
> --- a/toolchain/toolchain-buildroot/Config.in
> +++ b/toolchain/toolchain-buildroot/Config.in
> @@ -70,6 +70,23 @@ config BR2_TOOLCHAIN_BUILDROOT_LIBC
>         default "glibc"  if BR2_TOOLCHAIN_BUILDROOT_EGLIBC
>         default "glibc"  if BR2_TOOLCHAIN_BUILDROOT_GLIBC
> 
> +config BR2_TOOLCHAIN_BUILDROOT_VENDOR
> +       string "custom toolchain vendor name"
> +       default "buildroot"
> +       help
> +
> +         This option allows to customize the "vendor" part of the
> +         toolchain tuple, where the toolchain tuple has the form
> +         <cpu>-<vendor>-<kernel>-<os>. The default value, "buildroot",

 It's more like <arch>-<vendor>-<os>-<libc>

> +         is fine for most cases, except in very specific situations
> +         where gcc might make different decisions based on the vendor
> +         part of the tuple. The value "unknown" is not allowed, as the
> +         cross-compiling toolchain might then be confused with the
> +         native toolchain when the target and host architecture are
> +         identical.
> +
> +         If you're not sure, just leave the default "buildroot" value.

 With my comment above, Yann's comment about rewriting this is no longer
correct of course.


 Regards,
 Arnout

> +
>  source "package/uclibc/Config.in"
>  source "package/glibc/Config.in"
>  source "package/binutils/Config.in.host"
> --
> 1.7.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
diff mbox

Patch

diff --git a/package/Makefile.in b/package/Makefile.in
index 454f614..121fe74 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -20,8 +20,18 @@  endif
 MAKE1:=$(HOSTMAKE) -j1
 MAKE:=$(HOSTMAKE) $(if $(PARALLEL_JOBS),-j$(PARALLEL_JOBS))

+ifeq ($(BR2_TOOLCHAIN_BUILDROOT_VENDOR),)
+VENDOR:=buildroot
+else
+ifeq ($(BR2_TOOLCHAIN_BUILDROOT_VENDOR),unknown)
+$(error The value 'unknown' is not allowed. It might be confused with native toolchain)
+else
+VENDOR:=$(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_VENDOR))
+endif
+endif
+
 # Compute GNU_TARGET_NAME
-GNU_TARGET_NAME=$(ARCH)-buildroot-$(TARGET_OS)-$(LIBC)$(ABI)
+GNU_TARGET_NAME=$(ARCH)-$(VENDOR)-$(TARGET_OS)-$(LIBC)$(ABI)

 # Blackfin FLAT needs uclinux
 ifeq ($(BR2_bfin)$(BR2_BINFMT_FLAT),yy)
diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
index 07db50b..34f78ae 100644
--- a/toolchain/toolchain-buildroot/Config.in
+++ b/toolchain/toolchain-buildroot/Config.in
@@ -70,6 +70,23 @@  config BR2_TOOLCHAIN_BUILDROOT_LIBC
        default "glibc"  if BR2_TOOLCHAIN_BUILDROOT_EGLIBC
        default "glibc"  if BR2_TOOLCHAIN_BUILDROOT_GLIBC

+config BR2_TOOLCHAIN_BUILDROOT_VENDOR
+       string "custom toolchain vendor name"
+       default "buildroot"
+       help
+
+         This option allows to customize the "vendor" part of the
+         toolchain tuple, where the toolchain tuple has the form
+         <cpu>-<vendor>-<kernel>-<os>. The default value, "buildroot",
+         is fine for most cases, except in very specific situations
+         where gcc might make different decisions based on the vendor
+         part of the tuple. The value "unknown" is not allowed, as the
+         cross-compiling toolchain might then be confused with the
+         native toolchain when the target and host architecture are
+         identical.
+
+         If you're not sure, just leave the default "buildroot" value.
+
 source "package/uclibc/Config.in"
 source "package/glibc/Config.in"
 source "package/binutils/Config.in.host"