From 12825f7af5b6632020f04fd29f1444d3a2d21b7c Mon Sep 17 00:00:00 2001 From: Arnout Vandecappelle Date: Thu, 31 Dec 2015 01:34:13 +0100 Subject: [PATCH] Config.in: add symbols for BR2_HOST_GCC_AT_LEAST_X_Y 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: Arnout Vandecappelle (Essensium/Mind) Signed-off-by: Thomas Petazzoni --- Config.in | 24 +++++++++++++++++++++++ Makefile | 9 +++++++++ docs/manual/adding-packages-directory.txt | 7 +++++++ 3 files changed, 40 insertions(+) diff --git a/Config.in b/Config.in index 9513cc19a2..f6f9b85f8a 100644 --- a/Config.in +++ b/Config.in @@ -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 diff --git a/Makefile b/Makefile index 1d691929f4..80e94a2abb 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/docs/manual/adding-packages-directory.txt b/docs/manual/adding-packages-directory.txt index 139123efb3..c2d9f75e57 100644 --- a/docs/manual/adding-packages-directory.txt +++ b/docs/manual/adding-packages-directory.txt @@ -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+ -- 2.39.2