scripts/ext-toolchain: implement external GCC version detection

Some package may needs to enable compatibility option based on the GCC
version.

Currently the GCC version is set based on the default value and doesn't
actually reflect the real value provided by the external toolchain if
used.

Fix this by correctly detecting the GCC version in the external
toolchain and set the correct value in CONFIG_GCC_VERSION.

A new option is added in menuconfig to manually set the GCC version if
needed.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
Christian Marangi
2023-10-19 14:19:09 +02:00
parent c0e30b17eb
commit 28420cd67b
3 changed files with 31 additions and 0 deletions

View File

@@ -27,6 +27,7 @@ CFLAGS=""
TOOLCHAIN="."
LIBC_TYPE=""
GCC_VERSION=""
# Library specs
@@ -199,6 +200,19 @@ find_bins() {
return 1
}
find_gcc_version() {
if [ -f $TOOLCHAIN/info.mk ]; then
GCC_VERSION=$(grep GCC_VERSION $TOOLCHAIN/info.mk | sed 's/GCC_VERSION=//')
return 0
fi
echo "Warning! Can't find info.mk, trying to detect with alternative way."
# Very fragile detection
GCC_VERSION=$(find $TOOLCHAIN/bin | grep -oE "gcc-[0-9]+\.[0-9]+\.[0-9]+$" | \
head -1 | sed 's/gcc-//')
}
wrap_bin_cc() {
local out="$1"
@@ -383,6 +397,13 @@ print_config() {
return 1
fi
if [ -n "$GCC_VERSION" ]; then
echo "CONFIG_EXTERNAL_GCC_VERSION=\"$GCC_VERSION\"" >> "$config"
else
echo "Can't detect GCC version. Aborting!" >&2
return 1
fi
local lib
for lib in C RT PTHREAD GCC STDCPP SSP GFORTRAN GOMP; do
local file
@@ -564,6 +585,7 @@ while [ -n "$1" ]; do
--config)
if probe_cc; then
probe_libc
find_gcc_version
print_config "$1"
exit $?
fi