aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toolchain/helpers.mk18
-rw-r--r--toolchain/toolchain-external/toolchain-external.mk1
2 files changed, 19 insertions, 0 deletions
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
index 95120cd97b..a8944ce0f6 100644
--- a/toolchain/helpers.mk
+++ b/toolchain/helpers.mk
@@ -324,3 +324,21 @@ check_cross_compiler_exists = \
echo "Cannot execute cross-compiler '$${__CROSS_CC}'" ; \
exit 1 ; \
fi
+
+#
+# Check for toolchains known not to work with Buildroot. For now, we
+# only check for Angstrom toolchains, by looking at the vendor part of
+# the host tuple.
+#
+# $1: cross-gcc path
+#
+check_unusable_toolchain = \
+ __CROSS_CC=$(strip $1) ; \
+ vendor=`$${__CROSS_CC} -dumpmachine | cut -f2 -d'-'` ; \
+ if test "$${vendor}" = "angstrom" ; then \
+ echo "Angstrom toolchains are not pure toolchains: they contain" ; \
+ echo "many other libraries than just the C library, which makes" ; \
+ echo "them unsuitable as external toolchains for build systems" ; \
+ echo "such as Buildroot." ; \
+ exit 1 ; \
+ fi
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index b5b1ce78a2..d41cc7cfcb 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -371,6 +371,7 @@ endif
# type of C library and all C library features.
define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
$(Q)$(call check_cross_compiler_exists,$(TOOLCHAIN_EXTERNAL_CC))
+ $(Q)$(call check_unusable_toolchain,$(TOOLCHAIN_EXTERNAL_CC))
$(Q)LIBC_A_LOCATION=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) -print-file-name=libc.a)` ; \
SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:(usr/)?lib(32|64)?/(.*/)?libc\.a::'` ; \
if test -z "$${SYSROOT_DIR}" ; then \