Config.in: add symbols for BR2_HOST_GCC_AT_LEAST_X_Y
PATCH 1/1 Config.in: add symbols for BR2_HOST_GCC_AT_LEAST_X_Y
From: Arnout Vandecappelle <[email protected]>
Some host packages need a recent gcc version. Add symbols to Config.in to specify the HOSTCC version. The values are passed through the environment, and this environment is generated in a new support script.
Also update the documentation to mention the new symbols.
[Thomas: simplify by using only make logic instead of an external shell script.]
---
v4: Further simplification by Arnout: no post-processing is needed for
4.X versions if we keep the space in "4 9". Also use extended regex to simplify the sed script a little.
v3: Alternative version by Thomas that removes the external shell
script.
v2: Use a single environment variable and select statements (Yann)
This makes the shell script ridiculously simple. I've tried to move it to the Makefile, but then all the additional quoting etc. makes it complicated again.
--- Config.in | 24 ++++++++++++++++++++++++ Makefile | 9 +++++++++ docs/manual/adding-packages-directory.txt | 7 +++++++ 3 files changed, 40 insertions(+)
Config.in +24 -0
@@ -18,6 +18,30 @@ config BR2_EXTERNAL string option env="BR2_EXTERNAL" +# Hidden config symbols for packages to check system gcc version +config BR2_HOST_GCC_VERSION + string + option env="HOST_GCC_VERSION" + +config BR2_HOST_GCC_AT_LEAST_4_7 + bool + default y if BR2_HOST_GCC_VERSION = "4 7" + +config BR2_HOST_GCC_AT_LEAST_4_8 + bool + default y if BR2_HOST_GCC_VERSION = "4 8" + select BR2_HOST_GCC_AT_LEAST_4_7 + +config BR2_HOST_GCC_AT_LEAST_4_9 + bool + default y if BR2_HOST_GCC_VERSION = "4 9" + select BR2_HOST_GCC_AT_LEAST_4_8 + +config BR2_HOST_GCC_AT_LEAST_5 + bool + default y if BR2_HOST_GCC_VERSION = "5" + select BR2_HOST_GCC_AT_LEAST_4_9 + # Hidden boolean selected by packages in need of Java in order to build # (example: xbmc) config BR2_NEEDS_HOST_JAVA
Makefile +9 -0
@@ -293,6 +293,14 @@ HOSTRANLIB := $(shell which $(HOSTRANLIB) || type -p $(HOSTRANLIB) || echo ranli export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTLD export HOSTCC_NOCCACHE HOSTCXX_NOCCACHE +HOSTCC_VERSION := $(shell $(HOSTCC_NOCCACHE) --version | \ + sed -n -r 's/^.* ([0-9]*)\.([0-9]*)\.([0-9]*)[ ]*.*/\1 \2/p') + +# For gcc >= 5.x, we only need the major version. +ifneq ($(firstword $(HOSTCC_VERSION)),4) +HOSTCC_VERSION := $(firstword $(HOSTCC_VERSION)) +endif + # Make sure pkg-config doesn't look outside the buildroot tree HOST_PKG_CONFIG_PATH := $(PKG_CONFIG_PATH) unexport PKG_CONFIG_PATH
@@ -724,6 +732,7 @@ COMMON_CONFIG_ENV = \ KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \ BR2_CONFIG=$(BR2_CONFIG) \ BR2_EXTERNAL=$(BR2_EXTERNAL) \ + HOST_GCC_VERSION="$(HOSTCC_VERSION)" \ SKIP_LEGACY= xconfig: $(BUILD_DIR)/buildroot-config/qconf outputmakefile
docs/manual/adding-packages-directory.txt +7 -0
@@ -283,6 +283,13 @@ use in the comment. ** Comment string: +gcc >= X.Y+ and/or `gcc <= X.Y` (replace +X.Y+ with the proper version) +* Host GCC version +** Dependency symbol: +BR2_HOST_GCC_AT_LEAST_X_Y+, (replace + +X_Y+ with the proper version, see +Config.in+) +** Comment string: no comment to be added +** Note that it is usually not the package itself that has a minimum + host GCC version, but rather a host-package on which it depends. + * C library ** Dependency symbol: +BR2_TOOLCHAIN_USES_GLIBC+, +BR2_TOOLCHAIN_USES_MUSL+, +BR2_TOOLCHAIN_USES_UCLIBC+
Signature · 1 line
2.6.4
PATCH 1/1 Config.in: add symbols for BR2_HOST_GCC_AT_LEAST_X_Y
Sorry, forgot to add -v4.
Regards,
Arnout
Quoted 23 lines · Arnout Vandecappelle (Essensium/Mind)
From: Arnout Vandecappelle <[email protected]>
Some host packages need a recent gcc version. Add symbols to Config.in to specify the HOSTCC version. The values are passed through the environment, and this environment is generated in a new support script.
Also update the documentation to mention the new symbols.
[Thomas: simplify by using only make logic instead of an external shell script.]
Signed-off-by Thomas Petazzoni <[email protected]>---
v4: Further simplification by Arnout: no post-processing is needed for
4.X versions if we keep the space in "4 9". Also use extended regex to simplify the sed script a little.
v3: Alternative version by Thomas that removes the external shell
script.
v2: Use a single environment variable and select statements (Yann)
This makes the shell script ridiculously simple. I've tried to move it to theMakefile, but then all the additional quoting etc. makes it complicated again.
[snip]
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: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH 1/1 Config.in: add symbols for BR2_HOST_GCC_AT_LEAST_X_Y
In reply to Arnout Vandecappelle (Essensium/Mind)Dear Arnout Vandecappelle (Essensium/Mind),
Quoted 23 lines · Arnout Vandecappelle (Essensium/Mind)
From: Arnout Vandecappelle <[email protected]>
Some host packages need a recent gcc version. Add symbols to Config.in to specify the HOSTCC version. The values are passed through the environment, and this environment is generated in a new support script.
Also update the documentation to mention the new symbols.
[Thomas: simplify by using only make logic instead of an external shell script.]
Signed-off-by Thomas Petazzoni <[email protected]>---
v4: Further simplification by Arnout: no post-processing is needed for
4.X versions if we keep the space in "4 9". Also use extended regex to simplify the sed script a little.
v3: Alternative version by Thomas that removes the external shell
script.
v2: Use a single environment variable and select statements (Yann)
This makes the shell script ridiculously simple. I've tried to move it to theMakefile, but then all the additional quoting etc. makes it complicated again.
Quoted 5 lines
--- Config.in | 24 ++++++++++++++++++++++++ Makefile | 9 +++++++++ docs/manual/adding-packages-directory.txt | 7 +++++++ 3 files changed, 40 insertions(+)
I had also thought about keeping the space in the value, but found the "subst" wasn't too bad. But well, I agree that your solution further simplifies the thing.
I'm glad we've been able to move from a somewhat complicated and convoluted solution (a shell script that generates a list of environment variables) to a solution that is in fact completely trivial.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 Config.in: add symbols for BR2_HOST_GCC_AT_LEAST_X_Y
Quoted 33 lines · Thomas Petazzoni
Dear Arnout Vandecappelle (Essensium/Mind),
Quoted 23 lines · Arnout Vandecappelle (Essensium/Mind)
From: Arnout Vandecappelle <[email protected]>
Some host packages need a recent gcc version. Add symbols to Config.in to specify the HOSTCC version. The values are passed through the environment, and this environment is generated in a new support script.
Also update the documentation to mention the new symbols.
[Thomas: simplify by using only make logic instead of an external shell script.]
Signed-off-by Thomas Petazzoni <[email protected]>---
v4: Further simplification by Arnout: no post-processing is needed for
4.X versions if we keep the space in "4 9". Also use extended regex to simplify the sed script a little.
v3: Alternative version by Thomas that removes the external shell
script.
v2: Use a single environment variable and select statements (Yann)
This makes the shell script ridiculously simple. I've tried to move it to theMakefile, but then all the additional quoting etc. makes it complicated again.Quoted 5 lines
--- Config.in | 24 ++++++++++++++++++++++++ Makefile | 9 +++++++++ docs/manual/adding-packages-directory.txt | 7 +++++++ 3 files changed, 40 insertions(+)
Quoted 7 lines
I had also thought about keeping the space in the value, but found the "subst" wasn't too bad. But well, I agree that your solution further simplifies the thing.
I'm glad we've been able to move from a somewhat complicated and convoluted solution (a shell script that generates a list of environment variables) to a solution that is in fact completely trivial.
And that we don't have to generate Kconfig files :-)
Regards,
Arnout
Signature · 6 lines
Arnout Vandecappelle arnout dot vandecappelle at essensium dot com Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile) Essensium, Mind division . . . . . . . . . . . . . . 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: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF