Skip to contentSkip to conversation

toolchain: add common binutils version hidden config options

PATCH Superseded Vicente Olivert Riera 2 participants 10 messages May 27, 2016 – May 31, 2016

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/4 toolchain: add common binutils version hidden config options

This commit adds a number of hidden Config.in options, that will be used to handle dependencies on the binutils version. We mimic the model that was used for the kernel headers dependency mechanism.

These hidden options will be selected by the internal and external toolchain backend logic respectively, in follow-up commits.

---
 toolchain/toolchain-common.in | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
toolchain/toolchain-common.in +39 -0
index 1fe28a9..deede7b 100644
@@ -327,6 +327,45 @@ config BR2_TOOLCHAIN_GCC_AT_LEAST
 	default "4.4"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
 	default "4.3"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
 
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+	bool
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+
+# This order guarantees that the highest version is set, as kconfig
+# stops affecting a value on the first matching default.
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST
+	string
+	default "2.26" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+	default "2.25" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+	default "2.24" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+	default "2.23" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+	default "2.22" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+	default "2.21" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+	default "2.20" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+
 config BR2_TOOLCHAIN_HAS_SYNC_1
 	bool
 	default y
Signature · 1 line
2.7.3
#1 lore raw

PATCH 2/4 toolchain-external: add support for binutils version dependency

This commit wires up the binutils version dependency mechanism in the external toolchain backend. To do so, it:

* Changes the definition of all pre-defined external toolchain profiles to select the appropriate BR2_TOOLCHAIN_BINUTILS_AT_LEAST_* option.

* For custom external toolchains, provides a visible Config.in "choice" to select the binutils version used in the external toolchain.

* Adds a new check_binutils_version function, that verifies that the real binutils version found in the external toolchain matches the one declared in the Buildroot configuration.

---
 toolchain/helpers.mk                               | 30 ++++++++++++
 toolchain/toolchain-external/Config.in             | 57 ++++++++++++++++++++++
 toolchain/toolchain-external/toolchain-external.mk |  2 +
 3 files changed, 89 insertions(+)
toolchain/helpers.mk +30 -0
index d28a2ca..1221ada 100644
@@ -149,6 +149,36 @@ check_kernel_headers_version = \
 	fi
 
 #
+# Check the specific binutils version actually matches the version in
+# the toolchain. We use readelf for that purpose.
+#
+# $1: path to readelf
+# $2: expected readelf version
+#
+# Some details about the sed expression:
+# - 1!d
+#   - delete if not line 1
+#
+# - s/^[^)]+\) ([^[:space:]]+).*/\1/
+#   - eat all until the first ')' character followed by a space
+#   - match as many non-space chars as possible
+#   - eat all the remaining chars on the line
+#   - replace by the matched expression
+#
+check_binutils_version = \
+	expected_version="$(strip $2)" ; \
+	if [ -z "$${expected_version}" ]; then \
+		printf "Internal error, binutils version unknown (no BINUTILS_AT_LEAST_X_Y selected)\n"; \
+		exit 1 ; \
+	fi; \
+	real_version=`$(1) --version | sed -r -e '1!d; s/^[^)]+\) ([^[:space:]]+).*/\1/;'` ; \
+	if [[ ! "$${real_version}" =~ ^$${expected_version}\. ]] ; then \
+		printf "Incorrect selection of binutils version: expected %s.x, got %s\n" \
+			"$${expected_version}" "$${real_version}" ; \
+		exit 1 ; \
+	fi
+
+#
 # Check the specific gcc version actually matches the version in the
 # toolchain
 #
toolchain/toolchain-external/Config.in +57 -0

183 lines not on this page · raw message

toolchain/toolchain-external/toolchain-external.mk +2 -0
index 3d71ef4..952667d 100644
@@ -505,6 +505,8 @@ define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
 	$(call check_kernel_headers_version,\
 		$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC)),\
 		$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \
+	$(call check_binutils_version,$(TOOLCHAIN_EXTERNAL_READELF),\
+		$(call qstrip,$(BR2_TOOLCHAIN_BINUTILS_AT_LEAST))); \
 	$(call check_gcc_version,$(TOOLCHAIN_EXTERNAL_CC),\
 		$(call qstrip,$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \
 	if test "$(BR2_arm)" = "y" ; then \
Signature · 1 line
2.7.3
#2 lore raw

PATCH 2/4 toolchain-external: add support for binutils version dependency

Vicente, All,

On 2016-05-27 13:25 +0100, Vicente Olivert Riera spake thusly:

Quoted 6 lines

This commit wires up the binutils version dependency mechanism in the external toolchain backend. To do so, it:

* Changes the definition of all pre-defined external toolchain profiles to select the appropriate BR2_TOOLCHAIN_BINUTILS_AT_LEAST_* option.

Quoted 8 lines

* For custom external toolchains, provides a visible Config.in "choice" to select the binutils version used in the external toolchain.

* Adds a new check_binutils_version function, that verifies that the real binutils version found in the external toolchain matches the one declared in the Buildroot configuration.

Regards,
Yann E. MORIN.

Quoted 271 lines
---
 toolchain/helpers.mk                               | 30 ++++++++++++
 toolchain/toolchain-external/Config.in             | 57 ++++++++++++++++++++++
 toolchain/toolchain-external/toolchain-external.mk |  2 +
 3 files changed, 89 insertions(+)
toolchain/helpers.mk +30 -0
index d28a2ca..1221ada 100644
@@ -149,6 +149,36 @@ check_kernel_headers_version = \
 	fi
 
 #
+# Check the specific binutils version actually matches the version in
+# the toolchain. We use readelf for that purpose.
+#
+# $1: path to readelf
+# $2: expected readelf version
+#
+# Some details about the sed expression:
+# - 1!d
+#   - delete if not line 1
+#
+# - s/^[^)]+\) ([^[:space:]]+).*/\1/
+#   - eat all until the first ')' character followed by a space
+#   - match as many non-space chars as possible
+#   - eat all the remaining chars on the line
+#   - replace by the matched expression
+#
+check_binutils_version = \
+	expected_version="$(strip $2)" ; \
+	if [ -z "$${expected_version}" ]; then \
+		printf "Internal error, binutils version unknown (no BINUTILS_AT_LEAST_X_Y selected)\n"; \
+		exit 1 ; \
+	fi; \
+	real_version=`$(1) --version | sed -r -e '1!d; s/^[^)]+\) ([^[:space:]]+).*/\1/;'` ; \
+	if [[ ! "$${real_version}" =~ ^$${expected_version}\. ]] ; then \
+		printf "Incorrect selection of binutils version: expected %s.x, got %s\n" \
+			"$${expected_version}" "$${real_version}" ; \
+		exit 1 ; \
+	fi
+
+#
 # Check the specific gcc version actually matches the version in the
 # toolchain
 #
toolchain/toolchain-external/Config.in +57 -0
index ce2d91e..316a6af 100644
@@ -26,6 +26,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
 	select BR2_INSTALL_LIBSTDCPP
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 	help
 	  Linaro toolchain for the ARM architecture. It uses Linaro
 	  GCC 2014.09 (based on gcc 4.9), Linaro GDB 2013.10 (based on
@@ -48,6 +49,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
 	select BR2_INSTALL_LIBSTDCPP
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 	help
 	  Linaro toolchain for the ARM architecture. It uses Linaro
 	  GCC 2016.02 (based on gcc 5.3), Linaro GDB 2016.02 (based on
@@ -70,6 +72,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
 	select BR2_INSTALL_LIBSTDCPP
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 	help
 	  Linaro toolchain for the ARM big endian architecture. It
 	  uses Linaro GCC 2014.09 (based on gcc 4.9), Linaro GDB
@@ -92,6 +95,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
 	select BR2_INSTALL_LIBSTDCPP
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 	help
 	  Linaro toolchain for the ARM big endian architecture. It
 	  uses Linaro GCC 2016.02 (based on gcc 5.3), Linaro GDB
@@ -113,6 +117,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 	help
 	  Sourcery CodeBench toolchain for the ARM architecture, from
 	  Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc
@@ -147,6 +152,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A
 	select BR2_INSTALL_LIBSTDCPP
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
 	# kernel headers: 2.6.31
 	help
 	  Texas Instruments Arago 2011.09 toolchain, with gcc 4.5.3,
@@ -170,6 +176,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE
 	select BR2_INSTALL_LIBSTDCPP
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
 	# kernel headers: 2.6.31
 	help
 	  Texas Instruments Arago ARMv5 2011.09 toolchain, with gcc
@@ -190,6 +197,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 	help
 	  Sourcery CodeBench toolchain for the MIPS architecture, from
 	  Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc
@@ -278,6 +286,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 	help
 	  Codescape IMG GNU Linux Toolchain 2015.10 for the MIPS
 	  architecture, from Imagination Technologies. It uses gcc
@@ -340,6 +349,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 	help
 	  Codescape MTI GNU Linux Toolchain 2015.10 for the MIPS
 	  architecture, from Imagination Technologies. It uses gcc
@@ -413,6 +423,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 	select BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405 # based-on binutils-2.25.1
 	help
 	  Sourcery CodeBench toolchain for the Nios-II architecture,
@@ -430,6 +441,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
 	help
 	  Sourcery CodeBench toolchain for the SuperH architecture,
 	  from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51,
@@ -456,6 +468,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 	help
 	  Sourcery CodeBench toolchain for the amd64 (x86_64)
 	  architectures, from Mentor Graphics. It uses gcc 5.2,
@@ -481,6 +494,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
 	help
 	  Sourcery CodeBench toolchain for the x86/x86_64
 	  architectures, from Mentor Graphics. It uses gcc 4.7.2,
@@ -510,6 +524,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
 	help
 	  Toolchain for the Blackfin architecture, from
 	  http://blackfin.uclinux.org.
@@ -525,6 +540,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
 	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 	help
 	  Toolchain for the AArch64 architecture, from
 	  http://www.linaro.org/engineering/armv8/
@@ -540,6 +556,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
 	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 	help
 	  Toolchain for the AArch64 architecture, from
 	  http://www.linaro.org/engineering/armv8/
@@ -555,6 +572,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
 	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 	help
 	  Sourcery CodeBench toolchain for the AArch64 architecture,
 	  from Mentor Graphics. It uses gcc 4.9.1, binutils
@@ -578,6 +596,7 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 	help
 	  Toolchain based on the Musl C library, provided by the
 	  musl-cross project. It uses gcc 5.3, binutils 2.25.1 and
@@ -606,6 +625,7 @@ config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
 	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
 	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
 	help
 	  Toolchain for the ARC cores, from
 	  https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases
@@ -708,6 +728,43 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL
 if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
 
 choice
+	bool "External toolchain binutils version"
+	default BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_20
+	help
+	  Set to the binutils version that is used by your external
+	  toolchain.
+
+config BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_26
+	bool "2.26.x"
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+
+config BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_25
+	bool "2.25.x"
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+
+config BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_24
+	bool "2.24.x"
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+
+config BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_23
+	bool "2.23.x"
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+
+config BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_22
+	bool "2.22.x"
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+
+config BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_21
+	bool "2.21.x"
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+
+config BR2_TOOLCHAIN_EXTERNAL_BINUTILS_2_20
+	bool "2.20.x"
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+
+endchoice
+
+choice
 	bool "External toolchain gcc version"
 	default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
 	help
toolchain/toolchain-external/toolchain-external.mk +2 -0
index 3d71ef4..952667d 100644
@@ -505,6 +505,8 @@ define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
 	$(call check_kernel_headers_version,\
 		$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC)),\
 		$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \
+	$(call check_binutils_version,$(TOOLCHAIN_EXTERNAL_READELF),\
+		$(call qstrip,$(BR2_TOOLCHAIN_BINUTILS_AT_LEAST))); \
 	$(call check_gcc_version,$(TOOLCHAIN_EXTERNAL_CC),\
 		$(call qstrip,$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \
 	if test "$(BR2_arm)" = "y" ; then \
Signature · 1 line
2.7.3
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 3/4 binutils: select the appropriate BR2_TOOLCHAIN_BINUTILS_AT_LEAST_X_Y

In reply to Vicente Olivert Riera
---
 package/binutils/Config.in.host | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
package/binutils/Config.in.host +15 -2
index efdc840..09d1602 100644
@@ -2,25 +2,38 @@ comment "Binutils Options"
 
 choice
 	prompt "Binutils Version"
-	depends on !BR2_arc
 	default BR2_BINUTILS_VERSION_2_25_X
 	help
 	  Select the version of binutils you wish to use.
 
 	config BR2_BINUTILS_VERSION_2_24_X
+		bool "binutils 2.24"
+		# ARC support is not upstream yet
+		depends on !BR2_arc
 		# supported, but broken on Nios-II and powerpc64le
 		depends on !BR2_nios2 && !BR2_powerpc64le
 		# Unsupported for MIPS R6
 		depends on !BR2_mips_32r6 && !BR2_mips_64r6
 		# Unsupported ARM cores
 		depends on !BR2_cortex_a17
-		bool "binutils 2.24"
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 
 	config BR2_BINUTILS_VERSION_2_25_X
 		bool "binutils 2.25.1"
+		# ARC support is not upstream yet
+		depends on !BR2_arc
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 
 	config BR2_BINUTILS_VERSION_2_26_X
 		bool "binutils 2.26"
+		# ARC support is not upstream yet
+		depends on !BR2_arc
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+
+	config BR2_BINUTILS_VERSION_ARC
+		bool "arc-2016.03"
+		depends on BR2_arc
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
 
 endchoice
 
Signature · 1 line
2.7.3
#4 lore raw

PATCH 3/4 binutils: select the appropriate BR2_TOOLCHAIN_BINUTILS_AT_LEAST_X_Y

Vicente, All,

On 2016-05-27 13:25 +0100, Vicente Olivert Riera spake thusly:

Quoted 37 lines
---
 package/binutils/Config.in.host | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
package/binutils/Config.in.host +7 -2
index efdc840..09d1602 100644
@@ -2,25 +2,38 @@ comment "Binutils Options"
 
 choice
 	prompt "Binutils Version"
-	depends on !BR2_arc
 	default BR2_BINUTILS_VERSION_2_25_X
 	help
 	  Select the version of binutils you wish to use.
 
 	config BR2_BINUTILS_VERSION_2_24_X
+		bool "binutils 2.24"
+		# ARC support is not upstream yet
+		depends on !BR2_arc
 		# supported, but broken on Nios-II and powerpc64le
 		depends on !BR2_nios2 && !BR2_powerpc64le
 		# Unsupported for MIPS R6
 		depends on !BR2_mips_32r6 && !BR2_mips_64r6
 		# Unsupported ARM cores
 		depends on !BR2_cortex_a17
-		bool "binutils 2.24"
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
 
 	config BR2_BINUTILS_VERSION_2_25_X
 		bool "binutils 2.25.1"
+		# ARC support is not upstream yet
+		depends on !BR2_arc
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
 

package/binutils/Config.in.host comment "Binutils Options" · line 36

Quoted 10 lines
package/binutils/Config.in.host +8 -0
 	config BR2_BINUTILS_VERSION_2_26_X
 		bool "binutils 2.26"
+		# ARC support is not upstream yet
+		depends on !BR2_arc
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+
+	config BR2_BINUTILS_VERSION_ARC
+		bool "arc-2016.03"
+		depends on BR2_arc
+		select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26

This patch does two things;

- add the binutils-at-least options
- change the way we handle the ARC stuff

It should be split in two patches.

Regards,
Yann E. MORIN.

Quoted 5 lines
package/binutils/Config.in.host +0 -0
 endchoice
 
Signature · 1 line
2.7.3
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.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH 3/4 binutils: select the appropriate BR2_TOOLCHAIN_BINUTILS_AT_LEAST_X_Y

Hello Yann,

On 27/05/16 18:48, Yann E. MORIN wrote:
[...]

Quoted 7 lines

This patch does two things;

- add the binutils-at-least options
- change the way we handle the ARC stuff

It should be split in two patches.

no problem.

Regards,

Vincent.

Quoted 9 lines

Regards,
Yann E. MORIN.

Quoted 5 lines

endchoice

Signature · 1 line
2.7.3
#6 lore raw

PATCH 4/4 docs: add documentation for BR2_TOOLCHAIN_BINUTILS_AT_LEAST

In reply to Vicente Olivert Riera
---
 docs/manual/adding-packages-directory.txt | 6 ++++++
 1 file changed, 6 insertions(+)
docs/manual/adding-packages-directory.txt +6 -0
index 5537032..f3baa9b 100644
@@ -294,6 +294,12 @@ use in the comment.
 ** Comment string: +headers >= X.Y+ and/or `headers <= X.Y` (replace
    +X.Y+ with the proper version)
 
+* Binutils version
+** Dependency symbol: +BR2_TOOLCHAIN_BINUTILS_AT_LEAST_X_Y+, (replace
+   +X_Y+ with the proper version, see +toolchain/toolchain-common.in+)
+** Comment string: +binutils >= X.Y+ and/or `binutils <= X.Y` (replace
+   +X.Y+ with the proper version)
+
 * GCC version
 ** Dependency symbol: +BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y+, (replace
    +X_Y+ with the proper version, see +toolchain/toolchain-common.in+)
Signature · 1 line
2.7.3
#7 lore raw

PATCH 4/4 docs: add documentation for BR2_TOOLCHAIN_BINUTILS_AT_LEAST

Vicente, All,

On 2016-05-27 13:25 +0100, Vicente Olivert Riera spake thusly:

Quoted 1 line

Regards,
Yann E. MORIN.

Quoted 24 lines
---
 docs/manual/adding-packages-directory.txt | 6 ++++++
 1 file changed, 6 insertions(+)
docs/manual/adding-packages-directory.txt +6 -0
index 5537032..f3baa9b 100644
@@ -294,6 +294,12 @@ use in the comment.
 ** Comment string: +headers >= X.Y+ and/or `headers <= X.Y` (replace
    +X.Y+ with the proper version)
 
+* Binutils version
+** Dependency symbol: +BR2_TOOLCHAIN_BINUTILS_AT_LEAST_X_Y+, (replace
+   +X_Y+ with the proper version, see +toolchain/toolchain-common.in+)
+** Comment string: +binutils >= X.Y+ and/or `binutils <= X.Y` (replace
+   +X.Y+ with the proper version)
+
 * GCC version
 ** Dependency symbol: +BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y+, (replace
    +X_Y+ with the proper version, see +toolchain/toolchain-common.in+)
Signature · 1 line
2.7.3
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.  |
'------------------------------^-------^------------------^--------------------'
#8 lore raw

PATCH 1/4 toolchain: add common binutils version hidden config options

In reply to Vicente Olivert Riera

Vicente, All,

On 2016-05-27 13:25 +0100, Vicente Olivert Riera spake thusly:

Quoted 6 lines

This commit adds a number of hidden Config.in options, that will be used to handle dependencies on the binutils version. We mimic the model that was used for the kernel headers dependency mechanism.

These hidden options will be selected by the internal and external toolchain backend logic respectively, in follow-up commits.

I'm not arguing whether the patches are good or not, but I'd like to understand why we need those options.

As far as I can see, none of your patches make any package depend on any of those new options.

Would you care to explain (in the commit log) why these are needed, please?

Are you planning on making any existing package use them? If not, are you planning to send new packages that will use them?

Thanks! ;-)

Quoted 10 lines
---
 toolchain/toolchain-common.in | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
toolchain/toolchain-common.in +0 -0
index 1fe28a9..deede7b 100644

toolchain/toolchain-common.in config BR2_TOOLCHAIN_GCC_AT_LEAST · line 331

Quoted 5 lines
toolchain/toolchain-common.in +2 -0
@@ -327,6 +327,45 @@ config BR2_TOOLCHAIN_GCC_AT_LEAST
 	default "4.4"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
 	default "4.3"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
 
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+	bool

Any specific reason, except it is a "round" number and more than 6-year old, to pick 2.20 as the oldest we know of?

Quoted 25 lines
toolchain/toolchain-common.in +25 -0
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+
+# This order guarantees that the highest version is set, as kconfig

toolchain/toolchain-common.in config BR2_TOOLCHAIN_GCC_AT_LEAST · line 367

Quoted 10 lines
toolchain/toolchain-common.in +10 -0
+# stops affecting a value on the first matching default.
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST
+	string
+	default "2.26" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+	default "2.25" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+	default "2.24" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+	default "2.23" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+	default "2.22" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+	default "2.21" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+	default "2.20" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20

Otherwise:

    Reviewed-by: "Yann E. MORIN" <[email protected]>

Regards,
Yann E. MORIN.

Quoted 6 lines
toolchain/toolchain-common.in +0 -0
 config BR2_TOOLCHAIN_HAS_SYNC_1
 	bool
 	default y
Signature · 1 line
2.7.3
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.  |
'------------------------------^-------^------------------^--------------------'
#9 lore raw

PATCH 1/4 toolchain: add common binutils version hidden config options

Hello Yann,

first of all, thank you for your review.

Below are some inline comments.

Quoted 10 lines · Yann E. MORIN

Vicente, All,

On 2016-05-27 13:25 +0100, Vicente Olivert Riera spake thusly:

Quoted 6 lines

This commit adds a number of hidden Config.in options, that will be used to handle dependencies on the binutils version. We mimic the model that was used for the kernel headers dependency mechanism.

These hidden options will be selected by the internal and external toolchain backend logic respectively, in follow-up commits.

Quoted 8 lines

I'm not arguing whether the patches are good or not, but I'd like to understand why we need those options.

As far as I can see, none of your patches make any package depend on any of those new options.

Would you care to explain (in the commit log) why these are needed, please?

I'll do it.

Quoted 2 lines

Are you planning on making any existing package use them? If not, are you planning to send new packages that will use them?

Yes, to make valgrind dependant on certain version of binutils for MIPS. Although all packages will benefit of these new options if necessary.

Quoted 15 lines

Thanks! ;-)

Quoted 13 lines
---
 toolchain/toolchain-common.in | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
toolchain/toolchain-common.in +0 -0
index 1fe28a9..deede7b 100644
@@ -327,6 +327,45 @@ config BR2_TOOLCHAIN_GCC_AT_LEAST
 	default "4.4"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
 	default "4.3"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
 
Quoted 5 lines

toolchain/toolchain-common.in config BR2_TOOLCHAIN_GCC_AT_LEAST · line 331

Quoted 2 lines
toolchain/toolchain-common.in +2 -0
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+	bool

Any specific reason, except it is a "round" number and more than 6-year old, to pick 2.20 as the oldest we know of?

Because we have one toolchain that uses binutils-2.20:
BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A

Regards,

Vincent.

Quoted 50 lines
Quoted 25 lines
toolchain/toolchain-common.in +25 -0
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+	bool
+	select BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+
+# This order guarantees that the highest version is set, as kconfig

toolchain/toolchain-common.in config BR2_TOOLCHAIN_GCC_AT_LEAST · line 367

Quoted 10 lines
toolchain/toolchain-common.in +10 -0
+# stops affecting a value on the first matching default.
+config BR2_TOOLCHAIN_BINUTILS_AT_LEAST
+	string
+	default "2.26" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_26
+	default "2.25" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_25
+	default "2.24" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_24
+	default "2.23" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_23
+	default "2.22" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_22
+	default "2.21" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_21
+	default "2.20" if BR2_TOOLCHAIN_BINUTILS_AT_LEAST_2_20

Otherwise:

    Reviewed-by: "Yann E. MORIN" <[email protected]>

Regards,
Yann E. MORIN.

Quoted 6 lines
toolchain/toolchain-common.in +0 -0
 config BR2_TOOLCHAIN_HAS_SYNC_1
 	bool
 	default y
Signature · 1 line
2.7.3