diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk index 2351c9bc95..1732070a10 100644 --- a/toolchain/toolchain-external/toolchain-external.mk +++ b/toolchain/toolchain-external/toolchain-external.mk @@ -13,14 +13,21 @@ # # * Toolchains generated by Crosstool-NG # * Toolchains generated by Buildroot -# * ARM, MIPS and PowerPC toolchains made available by -# Codesourcery. For the MIPS toolchain, the -muclibc variant isn't -# supported yet, only the default glibc-based variant is. +# * Toolchains provided by Linaro for the ARM and AArch64 +# architectures +# * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, +# MIPS, PowerPC, x86, x86_64 and NIOS 2 architectures. For the MIPS +# toolchain, the -muclibc variant isn't supported yet, only the +# default glibc-based variant is. +# * Analog Devices toolchains for the Blackfin architecture +# * Xilinx toolchains for the Microblaze architecture # # The basic principle is the following # # 1. If the toolchain is not pre-installed, download and extract it -# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). +# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise, +# $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has +# already been installed by the user. # # 2. For all external toolchains, perform some checks on the # conformity between the toolchain configuration described in the @@ -85,22 +92,21 @@ LIB_EXTERNAL_LIBS+=$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) # Details about sysroot directory selection. # -# To find the sysroot directory: +# To find the sysroot directory, we use the trick of looking for the +# 'libc.a' file with the -print-file-name gcc option, and then +# mangling the path to find the base directory of the sysroot. # -# * We first try the -print-sysroot option, available in gcc 4.4.x -# and in some Codesourcery toolchains. +# Note that we do not use the -print-sysroot option, because it is +# only available since gcc 4.4.x, and we still support 4.2.x (for +# AVR32) and 4.3.x. # -# * If this option is not available, we fallback to the value of -# --with-sysroot as visible in CROSS-gcc -v. -# -# When doing those tests, we don't pass any option to gcc that could -# select a multilib variant (such as -march) as we want the "main" -# sysroot, which contains all variants of the C library in the case of -# multilib toolchains. We use the TARGET_CC_NO_SYSROOT variable, which -# is the path of the cross-compiler, without the -# --sysroot=$(STAGING_DIR), since what we want to find is the location -# of the original toolchain sysroot. This "main" sysroot directory is -# stored in SYSROOT_DIR. +# When doing this, we don't pass any option to gcc that could select a +# multilib variant (such as -march) as we want the "main" sysroot, +# which contains all variants of the C library in the case of multilib +# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the +# path of the cross-compiler, without the --sysroot=$(STAGING_DIR), +# since what we want to find is the location of the original toolchain +# sysroot. This "main" sysroot directory is stored in SYSROOT_DIR. # # Then, multilib toolchains are a little bit more complicated, since # they in fact have multiple sysroots, one for each variant supported