Skip to contentSkip to conversation

toolchain: control vendor part in GNU_TARGET_NAME

PATCH Superseded Noam Camus 3 participants 3 messages Mar 4, 2014 – Mar 5, 2014 1 message not in the archive

v3 of 7 Superseded Latest is v7 →

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

Noam Camus

author
#1 lore raw

PATCH v3 1/1 toolchain: control vendor part in GNU_TARGET_NAME

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.

---
 package/Makefile.in                     |   12 +++++++++++-
 toolchain/toolchain-buildroot/Config.in |   17 +++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletions(-)
package/Makefile.in +11 -1
index 454f614..121fe74 100644
@@ -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)
toolchain/toolchain-buildroot/Config.in +17 -0
index 07db50b..34f78ae 100644
@@ -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"

--
1.7.1

#2 lore raw

PATCH v3 1/1 toolchain: control vendor part in GNU_TARGET_NAME

Noam, All,

On 2014-03-04 04:51 +0000, Noam Camus spake thusly:

Quoted 8 lines

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.

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

package/Makefile.in endif · line 27

Quoted 13 lines
package/Makefile.in +5 -0
index 454f614..121fe74 100644
@@ -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--]

toolchain/toolchain-buildroot/Config.in config BR2_TOOLCHAIN_BUILDROOT_LIBC · line 71

Quoted 7 lines
toolchain/toolchain-buildroot/Config.in +0 -0
index 07db50b..34f78ae 100644
@@ -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.

toolchain/toolchain-buildroot/Config.in config BR2_TOOLCHAIN_BUILDROOT_LIBC · line 77

Quoted 5 lines
toolchain/toolchain-buildroot/Config.in +5 -0
+config BR2_TOOLCHAIN_BUILDROOT_VENDOR
+       string "custom toolchain vendor name"
+       default "buildroot"
+       help
+

Superfluous empty line.

toolchain/toolchain-buildroot/Config.in config BR2_TOOLCHAIN_BUILDROOT_LIBC · line 88

Quoted 11 lines
toolchain/toolchain-buildroot/Config.in +11 -0
+         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.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH v3 1/1 toolchain: control vendor part in GNU_TARGET_NAME

In reply to Noam Camus
Quoted 20 lines · Noam Camus

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.

---
 package/Makefile.in                     |   12 +++++++++++-
 toolchain/toolchain-buildroot/Config.in |   17 +++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletions(-)
package/Makefile.in +0 -0
index 454f614..121fe74 100644
@@ -20,8 +20,18 @@ endif
 MAKE1:=$(HOSTMAKE) -j1
 MAKE:=$(HOSTMAKE) $(if $(PARALLEL_JOBS),-j$(PARALLEL_JOBS))

package/Makefile.in endif · line 31

Quoted 10 lines
package/Makefile.in +9 -0
 
+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.

Quoted 13 lines
package/Makefile.in +2 -1
+
 # 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)
toolchain/toolchain-buildroot/Config.in +0 -0
index 07db50b..34f78ae 100644
@@ -70,6 +70,23 @@ config BR2_TOOLCHAIN_BUILDROOT_LIBC
        default "glibc"  if BR2_TOOLCHAIN_BUILDROOT_EGLIBC

toolchain/toolchain-buildroot/Config.in config BR2_TOOLCHAIN_BUILDROOT_LIBC · line 80

Quoted 10 lines
toolchain/toolchain-buildroot/Config.in +8 -0
        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>

toolchain/toolchain-buildroot/Config.in config BR2_TOOLCHAIN_BUILDROOT_LIBC · line 88

Quoted 8 lines
toolchain/toolchain-buildroot/Config.in +8 -0
+         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

Quoted 12 lines
toolchain/toolchain-buildroot/Config.in +1 -1
+
 source "package/uclibc/Config.in"
 source "package/glibc/Config.in"
 source "package/binutils/Config.in.host"
--

1.7.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F