From 0729b544b3f943f238042d8169ccb8e2f6c88a95 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 11:57:15 +0100 Subject: Improve external toolchain logic to support IA32 Sourcery CodeBench toolchain The IA32 Sourcery CodeBench toolchain has a relatively special structure, with the following multilib variants: * Intel Pentium 4, 32 bits, the multilib variant is in ./ relative to the main sysroot, with the libraries in the lib/ directory. * Intel Xeon Nocona, 64 bits, the multilib variant is in ./ relative to the main sysroot, with the libraries in the lib64/ directory. * Intel Atom 32 bits, the multilib variant is in atom/ relative to the main sysroot, with the libraries in the lib/ directory. * Intel Core 2 64 bits, the multilib variant is in core2/ relative to the main sysroot, with the libraries in lib64/ directory. So the first two variants are in the same sysroot, only the name of the directory for the libraries is different. Therefore, we introduce a new ARCH_LIB_DIR variable, which contains either 'lib' or 'lib64'. This variable is defined according to the location of the libc.a file for the selected multilib variant, and is then used when copying the libraries to the target and to the staging directory. In addition to this, we no longer use the -print-multi-directory to get the ARCH_SUBDIR, since in the case of the 64 bits variants of this toolchain, it returns just '64' and not a real path. Instead, we simply compute the difference between the arch-specific sysroot and the main sysroot. We also take that opportunity to expand the documentation on the meaning of the different variables. Signed-off-by: Thomas Petazzoni --- toolchain/helpers.mk | 19 +++++++---- toolchain/toolchain-external/ext-tool.mk | 57 ++++++++++++++++++++++++-------- 2 files changed, 56 insertions(+), 20 deletions(-) (limited to 'toolchain') diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 65cc9982d..4c3f2406f 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -10,19 +10,22 @@ # Most toolchains have their libraries either in /lib or /usr/lib # relative to their ARCH_SYSROOT_DIR. Buildroot toolchains, however, # have basic libraries in /lib, and libstdc++/libgcc_s in -# /usr//lib(64). +# /usr//lib(64). Thanks to ARCH_LIB_DIR we also take into +# account toolchains that have the libraries in lib64 and usr/lib64. # # $1: arch specific sysroot directory -# $2: library name -# $3: destination directory of the libary, relative to $(TARGET_DIR) +# $2: library directory ('lib' or 'lib64') from which libraries must be copied +# $3: library name +# $4: destination directory of the libary, relative to $(TARGET_DIR) # copy_toolchain_lib_root = \ ARCH_SYSROOT_DIR="$(strip $1)"; \ - LIB="$(strip $2)"; \ - DESTDIR="$(strip $3)" ; \ + ARCH_LIB_DIR="$(strip $2)" ; \ + LIB="$(strip $3)"; \ + DESTDIR="$(strip $4)" ; \ \ LIBS=`(cd $${ARCH_SYSROOT_DIR}; \ - find -L lib* usr/lib* usr/$(TOOLCHAIN_EXTERNAL_PREFIX)/lib* \ + find -L $${ARCH_LIB_DIR} usr/$${ARCH_LIB_DIR} usr/$(TOOLCHAIN_EXTERNAL_PREFIX)/$${ARCH_LIB_DIR} \ -maxdepth 1 -name "$${LIB}.*" 2>/dev/null \ )` ; \ for FILE in $${LIBS} ; do \ @@ -84,12 +87,14 @@ copy_toolchain_lib_root = \ # $1: main sysroot directory of the toolchain # $2: arch specific sysroot directory of the toolchain # $3: arch specific subdirectory in the sysroot +# $4: directory of libraries ('lib' or 'lib64') # copy_toolchain_sysroot = \ SYSROOT_DIR="$(strip $1)"; \ ARCH_SYSROOT_DIR="$(strip $2)"; \ ARCH_SUBDIR="$(strip $3)"; \ - for i in etc lib sbin usr ; do \ + ARCH_LIB_DIR="$(strip $4)" ; \ + for i in etc $${ARCH_LIB_DIR} sbin usr ; do \ if [ -d $${ARCH_SYSROOT_DIR}/$$i ] ; then \ rsync -au --chmod=Du+w --exclude 'usr/lib/locale' $${ARCH_SYSROOT_DIR}/$$i $(STAGING_DIR)/ ; \ fi ; \ diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index 2ac497378..eb8ed4f6b 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -267,10 +267,8 @@ endif $(STAMP_DIR)/ext-toolchain-checked: @echo "Checking external toolchain settings" $(Q)$(call check_cross_compiler_exists,$(TOOLCHAIN_EXTERNAL_CC)) - $(Q)SYSROOT_DIR=`$(TOOLCHAIN_EXTERNAL_CC) -print-sysroot 2>/dev/null` ; \ - if test -z "$${SYSROOT_DIR}" ; then \ - SYSROOT_DIR=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) -print-file-name=libc.a) |sed -r -e 's:usr/lib/libc\.a::;'` ; \ - fi ; \ + $(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(64)?/libc\.a::'` ; \ if test -z "$${SYSROOT_DIR}" ; then \ @echo "External toolchain doesn't support --sysroot. Cannot use." ; \ exit 1 ; \ @@ -292,27 +290,60 @@ $(STAMP_DIR)/ext-toolchain-checked: # and the variant-specific sysroot, then copy the needed libraries to # the $(TARGET_DIR) and copy the whole sysroot (libraries and headers) # to $(STAGING_DIR). +# +# Variables are defined as follows: +# +# LIBC_A_LOCATION: location of the libc.a file in the default +# multilib variant (allows to find the main +# sysroot directory) +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/usr/lib/libc.a +# +# SYSROOT_DIR: the main sysroot directory, deduced from +# LIBC_A_LOCATION by removing the +# usr/lib[64]/libc.a part of the path. +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/ +# +# ARCH_LIBC_A_LOCATION: location of the libc.a file in the selected +# multilib variant (taking into account the +# CFLAGS). Allows to find the sysroot of the +# selected multilib variant. +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/libc.a +# +# ARCH_SYSROOT_DIR: the sysroot of the selected multilib variant, +# deduced from ARCH_LIBC_A_LOCATION by removing +# usr/lib[64]/libc.a at the end of the path. +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/ +# +# ARCH_LIB_DIR: 'lib' or 'lib64' depending on where libraries are +# stored. Deduced from ARCH_LIBC_A_LOCATION by +# looking at usr/lib??/libc.a. +# Ex: lib +# +# ARCH_SUBDIR: the relative location of the sysroot of the selected +# multilib variant compared to the main sysroot. +# Ex: mips16/soft-float/el + $(STAMP_DIR)/ext-toolchain-installed: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES) - $(Q)SYSROOT_DIR=`$(TOOLCHAIN_EXTERNAL_CC) -print-sysroot 2>/dev/null` ; \ - if test -z "$${SYSROOT_DIR}" ; then \ - SYSROOT_DIR=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) -print-file-name=libc.a) |sed -r -e 's:usr/lib/libc\.a::;'` ; \ - fi ; \ + $(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(64)?/libc\.a::'` ; \ if test -z "$${SYSROOT_DIR}" ; then \ @echo "External toolchain doesn't support --sysroot. Cannot use." ; \ exit 1 ; \ fi ; \ - ARCH_SUBDIR=`$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-multi-directory` ; \ - ARCH_SYSROOT_DIR=$${SYSROOT_DIR}/$${ARCH_SUBDIR} ; \ + ARCH_LIBC_A_LOCATION=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libc.a)` ; \ + ARCH_SYSROOT_DIR=`echo $${ARCH_LIBC_A_LOCATION} | sed -r -e 's:usr/lib(64)?/libc\.a::'` ; \ + ARCH_LIB_DIR=`echo $${ARCH_LIBC_A_LOCATION} | sed -r -e 's:.*/usr/(lib(64)?)/libc.a:\1:'` ; \ + ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \ mkdir -p $(TARGET_DIR)/lib ; \ echo "Copy external toolchain libraries to target..." ; \ for libs in $(LIB_EXTERNAL_LIBS); do \ - $(call copy_toolchain_lib_root,$${ARCH_SYSROOT_DIR},$$libs,/lib); \ + $(call copy_toolchain_lib_root,$${ARCH_SYSROOT_DIR},$${ARCH_LIB_DIR},$$libs,/lib); \ done ; \ for libs in $(USR_LIB_EXTERNAL_LIBS); do \ - $(call copy_toolchain_lib_root,$${ARCH_SYSROOT_DIR},$$libs,/usr/lib); \ + $(call copy_toolchain_lib_root,$${ARCH_SYSROOT_DIR},$${ARCH_LIB_DIR},$$libs,/usr/lib); \ done ; \ echo "Copy external toolchain sysroot to staging..." ; \ - $(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR}) ; \ + $(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR}) ; \ if [ -L $${ARCH_SYSROOT_DIR}/lib64 ] ; then \ $(call create_lib64_symlinks) ; \ fi ; \ -- cgit v1.2.3 From 50ac5f9a573d3918cc5257a30a7c85db7841ac42 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:02:52 +0100 Subject: Support multilib variants in sub-subdirectories When an external toolchain has multiple variants organized in sub-directories, Buildroot only copies the selected sysroot and not all sysroots. In order to make this work, Buildroot creates a symbolic link of the name of the original selected sysroot to the main sysroot to trick the compiler so that it finds its libraries at the expected location. I.e, if the toolchain as the following organization (example take on the ARM CodeSourcery toolchain) : . for ARMv5T armv4 for ARMv4T thumb2 for ARMv7-A/Thumb and ARMv4T is selected, then Buildroot will copy the contents of armv4t/ from the toolchain into its $(STAGING_DIR) and then create a $(STAGING_DIR)/armv4t symbolic link to $(STAGING_DIR). However, our logic to do so only works when there was one directory level for multilib sysroots. But in the MIPS CodeSourcery toolchain there are multiple levels. For example, the MIPS16 soft-float little-endian sysroot variant is in mips16/soft-float/el/ compared to the main sysroot. This patch improves our logic to support this case. The logic is a bit more complicated as we don't want to create a symbolic link to an absolute path, but a symbolic link to a relative path, because we want the host/ directory to be relocatable. Signed-off-by: Thomas Petazzoni --- toolchain/helpers.mk | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'toolchain') diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 4c3f2406f..3f4818f22 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -103,7 +103,14 @@ copy_toolchain_sysroot = \ if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \ cp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \ fi ; \ - ln -s . $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ + mkdir -p `dirname $(STAGING_DIR)/$${ARCH_SUBDIR}` ; \ + relpath="./" ; \ + nbslashs=`echo -n $${ARCH_SUBDIR} | sed 's%[^/]%%g' | wc -c` ; \ + for slash in `seq 1 $${nbslashs}` ; do \ + relpath=$${relpath}"../" ; \ + done ; \ + ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ + echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \ fi ; \ find $(STAGING_DIR) -type d | xargs chmod 755 -- cgit v1.2.3 From b95e436ee0c9e4638dc79766da0d17927c6641ce Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:09:33 +0100 Subject: Expand external toolchain wrapper to custom flags The BR2_TARGET_OPTIMIZATION flags were not used by the external toolchain wrapper, which broke the multilib selection logic of multilib external toolchains. It also simplifies the compilation of external programs since all flags are properly passed automatically by the toolchain wrapper. Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/ext-tool.mk | 8 ++++++++ toolchain/toolchain-external/ext-toolchain-wrapper.c | 3 +++ 2 files changed, 11 insertions(+) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index eb8ed4f6b..dde6f2283 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -150,6 +150,14 @@ TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_) TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"' endif +ifneq ($(BR2_TARGET_OPTIMIZATION),) +TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) +# We create a list like '"-mfoo", "-mbar", "-mbarfoo"' so that each +# flag is a separate argument when used in execv() by the external +# toolchain wrapper. +TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)",)' +endif + ifeq ($(BR2_SOFT_FLOAT),y) TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_SOFTFLOAT=1 diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c index cc404f3e9..719f13bd1 100644 --- a/toolchain/toolchain-external/ext-toolchain-wrapper.c +++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c @@ -40,6 +40,9 @@ static char *predef_args[] = { #ifdef BR_VFPFLOAT "-mfpu=vfp", #endif /* BR_VFPFLOAT */ +#ifdef BR_ADDITIONAL_CFLAGS + BR_ADDITIONAL_CFLAGS +#endif }; static const char *get_basename(const char *name) -- cgit v1.2.3 From 17b8cc930c2a9d092b4ede12c01ea6200818a343 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:11:24 +0100 Subject: external-toolchain: remove 2009q1 ARM Sourcery toolchain We are going to add one more ARM Sourcery toolchain version, so it's time to remove the oldest version. Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/Config.in | 15 --------------- toolchain/toolchain-external/ext-tool.mk | 5 +---- 2 files changed, 1 insertion(+), 19 deletions(-) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index eadfe50cf..f983727e7 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -59,20 +59,6 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3 - ARMv4T, little endian, soft-float, glibc - ARMv7-A, Thumb 2, little endian, soft-float, glibc -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q1 - bool "Sourcery CodeBench ARM 2009q1" - depends on BR2_arm - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_INSTALL_LIBSTDCPP - help - Sourcery CodeBench toolchain for the ARM architecture, from - Mentor Graphics. It uses gcc 4.3.3, binutils 2.19, glibc 2.8 - and gdb 6.8 and kernel headers 2.6.30. It has support for - the following variants: - - ARMv5T, little endian, soft-float, glibc - - ARMv4T, little endian, soft-float, glibc - - ARMv7-A, Thumb 2, little endian, soft-float, glibc - config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201103 bool "Sourcery CodeBench MIPS 2011.03" depends on BR2_mips || BR2_mipsel @@ -262,7 +248,6 @@ config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX config BR2_TOOLCHAIN_EXTERNAL_PREFIX string - default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q1 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201009 diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index dde6f2283..883fbdb75 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -174,10 +174,7 @@ else TOOLCHAIN_EXTERNAL_DEPENDENCIES = $(STAMP_DIR)/ext-toolchain-checked endif -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q1),y) -TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/ -TOOLCHAIN_EXTERNAL_SOURCE=arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3),y) +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/arm/portal/package5383/public/arm-none-linux-gnueabi/ TOOLCHAIN_EXTERNAL_SOURCE=arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1),y) -- cgit v1.2.3 From 102c6b5fa19537985fbd7b24794fa9f77114b9d6 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:18:23 +0100 Subject: external-toolchain: add Sourcery CodeBench ARM 2011.09 Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/Config.in | 15 +++++++++++++++ toolchain/toolchain-external/ext-tool.mk | 3 +++ 2 files changed, 18 insertions(+) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index f983727e7..8e5d53fe9 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -3,6 +3,20 @@ if BR2_TOOLCHAIN_EXTERNAL choice prompt "Toolchain" +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109 + bool "Sourcery CodeBench ARM 2011.09" + depends on BR2_arm + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + help + Sourcery CodeBench toolchain for the ARM architecture, from + Mentor Graphics. It uses gcc 4.6.1, binutils 2.21.53, glibc + 2.13 and gdb 7.2.50, kernel headers 3.0.1. It has support + for the following variants: + - ARMv5TE, little endian, soft-float, glibc + - ARMv4T, little endian, soft-float, glibc + - ARMv7-A, Thumb 2, little endian, soft-float, glibc + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103 bool "Sourcery CodeBench ARM 2011.03" depends on BR2_arm @@ -252,6 +266,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201009 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103 + default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201103 default "powerpc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index 883fbdb75..ab9b0c22e 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -186,6 +186,9 @@ TOOLCHAIN_EXTERNAL_SOURCE=arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gn else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/arm/portal/package8739/public/arm-none-linux-gnueabi/ TOOLCHAIN_EXTERNAL_SOURCE=arm-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y) +TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/ +TOOLCHAIN_EXTERNAL_SOURCE=arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/mips/portal/package7401/public/mips-linux-gnu/ TOOLCHAIN_EXTERNAL_SOURCE=mips-4.4-303-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 -- cgit v1.2.3 From 851508dedda25637767a020f43f75450a477eb4f Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:19:51 +0100 Subject: external-toolchain: bump MIPS 2011.03 from -93 to -110 Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/ext-tool.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index ab9b0c22e..1e8e03e44 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -193,8 +193,8 @@ else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/mips/portal/package7401/public/mips-linux-gnu/ TOOLCHAIN_EXTERNAL_SOURCE=mips-4.4-303-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201103),y) -TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/mips/portal/package9055/public/mips-linux-gnu/ -TOOLCHAIN_EXTERNAL_SOURCE=mips-2011.03-93-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/mips/portal/package9469/public/mips-linux-gnu/ +TOOLCHAIN_EXTERNAL_SOURCE=mips-2011.03-110-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/power/portal/package7703/public/powerpc-linux-gnu/ TOOLCHAIN_EXTERNAL_SOURCE=freescale-2010.09-55-powerpc-linux-gnu-i686-pc-linux-gnu.tar.bz2 -- cgit v1.2.3 From 22e0698eb8e2d8ebd12cf78c03641850e1a24cfb Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:28:34 +0100 Subject: external-toolchain: add Sourcery CodeBench PowerPC 2011.03 Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/Config.in | 19 +++++++++++++++++++ toolchain/toolchain-external/ext-tool.mk | 3 +++ 2 files changed, 22 insertions(+) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index 8e5d53fe9..fea156547 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -119,6 +119,24 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44 - MIPS32 big endian soft float uclibc - MIPS32 little endian soft float uclibc +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 + bool "Sourcery CodeBench PowerPC 2011.03" + depends on BR2_powerpc + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + help + Sourcery CodeBench toolchain for the PowerPC architecture, + from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20.51, + glibc 2.13, gdb 7.2.50 and kernel headers 2.6.38. It has + support for the following variants: + - 603 glibc, 32 bits + - 603 soft float glibc, 32 bits + - e600 altivec glibc, 32 bits + - e500v1 glibc, 32 bits + - e500v2 glibc, 32 bits + - e500mc glibc, 32 bits + - 970 glibc hard-float, 64 bits + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 bool "Sourcery CodeBench PowerPC 2010.09" depends on BR2_powerpc @@ -270,6 +288,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201103 default "powerpc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 + default "powerpc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 default "sh-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201009 default "sh-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103 default "sh-uclinux" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009 diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index 1e8e03e44..409355e44 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -198,6 +198,9 @@ TOOLCHAIN_EXTERNAL_SOURCE=mips-2011.03-110-mips-linux-gnu-i686-pc-linux-gnu.tar. else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/power/portal/package7703/public/powerpc-linux-gnu/ TOOLCHAIN_EXTERNAL_SOURCE=freescale-2010.09-55-powerpc-linux-gnu-i686-pc-linux-gnu.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103),y) +TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/public/gnu_toolchain/powerpc-linux-gnu/ +TOOLCHAIN_EXTERNAL_SOURCE=freescale-2011.03-38-powerpc-linux-gnu-i686-pc-linux-gnu.tar.bz2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201009),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/superh/portal/package7783/public/sh-linux-gnu/ TOOLCHAIN_EXTERNAL_SOURCE=renesas-2010.09-45-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2 -- cgit v1.2.3 From d00bd2a1f79855cb37db57bea18181683b194302 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:34:33 +0100 Subject: external-toolchain: add Sourcery CodeBench x86/x86_64 2011.09 Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/Config.in | 16 ++++++++++++++++ toolchain/toolchain-external/ext-tool.mk | 3 +++ 2 files changed, 19 insertions(+) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index fea156547..a552cc2f2 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -219,6 +219,21 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009 has support for the following variants: - SH2A, uClibc, big endian +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 + bool "Sourcery CodeBench x86/x86_64 2011.09" + depends on BR2_i386 || BR2_x86_64 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + help + Sourcery CodeBench toolchain for the x86/x86_64 + architectures, from Mentor Graphics. It uses gcc 4.6.1, + binutils 2.21.53, glibc 2.13, gdb 7.2.50 and kernel headers + 3.0.1. It has support for the following variants: + - Intel Pentium 4, glibc, 32 bits + - Intel Atom, glibc, 32 bits + - Intel Xeon, glibc, 64 bits + - Intel Core 2, glibc, 64 bits + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201009 bool "Sourcery CodeBench x86/x86_64 2010.09" depends on BR2_i386 || BR2_x86_64 @@ -294,6 +309,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "sh-uclinux" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009 default "sh-uclinux" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201103 default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201009 + default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 && !BR2_BFIN_FDPIC default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 && BR2_BFIN_FDPIC default $(BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX) \ diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index 409355e44..a6a5028b4 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -216,6 +216,9 @@ TOOLCHAIN_EXTERNAL_SOURCE=renesas-2011.03-36-sh-uclinux-i686-pc-linux-gnu.tar.bz else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201009),y) TOOLCHAIN_EXTERNAL_SITE=https://sourcery.mentor.com/sgpp/lite/ia32/portal/package7682/public/i686-pc-linux-gnu/ TOOLCHAIN_EXTERNAL_SOURCE=ia32-2010.09-44-i686-pc-linux-gnu-i386-linux.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109),y) +TOOLCHAIN_EXTERNAL_SITE=https://sourcery.mentor.com/public/gnu_toolchain/i686-pc-linux-gnu/ +TOOLCHAIN_EXTERNAL_SOURCE=ia32-2011.09-24-i686-pc-linux-gnu-i386-linux.tar.bz2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1),y) TOOLCHAIN_EXTERNAL_SITE_1 = http://blackfin.uclinux.org/gf/download/frsrelease/501/8378/ TOOLCHAIN_EXTERNAL_SOURCE_1 = blackfin-toolchain-2010R1-RC4.i386.tar.bz2 -- cgit v1.2.3 From 91d4336cbc22846e5d6fa3c26d74849721163d33 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 12:39:12 +0100 Subject: external-toolchain: Blackfin.uclinux.org 2011R1-RC4 Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/Config.in | 17 +++++++++++++++++ toolchain/toolchain-external/ext-tool.mk | 8 +++++++- 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index a552cc2f2..6fb9ef616 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -249,6 +249,21 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201009 - Intel Xeon, glibc, 64 bits - Intel Core 2, glibc, 64 bits +config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 + bool "Blackfin.uclinux.org 2011R1-RC4" + depends on BR2_bfin + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_LARGEFILE + select BR2_INET_IPV6 + select BR2_INET_RPC + select BR2_USE_WCHAR + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + help + Toolchain for the Blackfin architecture, from + http://blackfin.uclinux.org. + config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 bool "Blackfin.uclinux.org 2010RC1" depends on BR2_bfin @@ -312,6 +327,8 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 && !BR2_BFIN_FDPIC default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 && BR2_BFIN_FDPIC + default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 && !BR2_BFIN_FDPIC + default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 && BR2_BFIN_FDPIC default $(BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX) \ if BR2_TOOLCHAIN_EXTERNAL_CUSTOM diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index a6a5028b4..132aacd8f 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -225,6 +225,12 @@ TOOLCHAIN_EXTERNAL_SOURCE_1 = blackfin-toolchain-2010R1-RC4.i386.tar.bz2 TOOLCHAIN_EXTERNAL_SITE_2 = http://blackfin.uclinux.org/gf/download/frsrelease/501/8386/ TOOLCHAIN_EXTERNAL_SOURCE_2 = blackfin-toolchain-uclibc-full-2010R1-RC4.i386.tar.bz2 TOOLCHAIN_EXTERNAL_SOURCE = $(TOOLCHAIN_EXTERNAL_SOURCE_1) $(TOOLCHAIN_EXTERNAL_SOURCE_2) +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1),y) +TOOLCHAIN_EXTERNAL_SITE_1 = http://blackfin.uclinux.org/gf/download/frsrelease/531/9509/ +TOOLCHAIN_EXTERNAL_SOURCE_1 = blackfin-toolchain-2011R1-RC4.i386.tar.bz2 +TOOLCHAIN_EXTERNAL_SITE_2 = http://blackfin.uclinux.org/gf/download/frsrelease/531/9517/ +TOOLCHAIN_EXTERNAL_SOURCE_2 = blackfin-toolchain-uclibc-full-2011R1-RC4.i386.tar.bz2 +TOOLCHAIN_EXTERNAL_SOURCE = $(TOOLCHAIN_EXTERNAL_SOURCE_1) $(TOOLCHAIN_EXTERNAL_SOURCE_2) else # A value must be set (even if unused), otherwise the # $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) rule would override the main @@ -237,7 +243,7 @@ endif # contain ./opt/uClinux/{bfin-uclinux,bfin-linux-uclibc} directories, # which themselves contain the toolchain. This is why we strip more # components than usual. -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1),y) +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1)$(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1),y) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE_1): $(call DOWNLOAD,$(TOOLCHAIN_EXTERNAL_SITE_1),$(TOOLCHAIN_EXTERNAL_SOURCE_1)) -- cgit v1.2.3 From c5c1064e494a4524622d366ea20c230afc575692 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 15:38:22 +0100 Subject: external-toolchain: details on selecting the multilib variants Each multilib variant need to be selected using a special combination of flags, requiring specific choices of the Buildroot options. This commit documents those configuration choices to make it easier to use the various multilib variants. Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/Config.in | 123 +++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index 6fb9ef616..d3b591d6d 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -14,8 +14,15 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109 2.13 and gdb 7.2.50, kernel headers 3.0.1. It has support for the following variants: - ARMv5TE, little endian, soft-float, glibc + Select ARM926T, ARM10T, XScale or another ARMv5 core + Select BR2_SOFT_FLOAT - ARMv4T, little endian, soft-float, glibc + Select ARM720T, ARM920T, ARM922T or another ARMv4 core + Select BR2_SOFT_FLOAT - ARMv7-A, Thumb 2, little endian, soft-float, glibc + Select Cortex-A8, Cortex-A9 or another ARMv7-A core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mthumb config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103 bool "Sourcery CodeBench ARM 2011.03" @@ -28,8 +35,15 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103 2.13 and gdb 7.2.50, kernel headers 2.6.38. It has support for the following variants: - ARMv5TE, little endian, soft-float, glibc + Select ARM926T, ARM10T, XScale or another ARMv5 core + Select BR2_SOFT_FLOAT - ARMv4T, little endian, soft-float, glibc + Select ARM720T, ARM920T, ARM922T or another ARMv4 core + Select BR2_SOFT_FLOAT - ARMv7-A, Thumb 2, little endian, soft-float, glibc + Select Cortex-A8, Cortex-A9 or another ARMv7-A core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mthumb config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201009 bool "Sourcery CodeBench ARM 2010.09" @@ -42,8 +56,15 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201009 2.11 and gdb 7.2.50, kernel headers 2.6.35.2. It has support for the following variants: - ARMv5TE, little endian, soft-float, glibc + Select ARM926T, ARM10T, XScale or another ARMv5 core + Select BR2_SOFT_FLOAT - ARMv4T, little endian, soft-float, glibc + Select ARM720T, ARM920T, ARM922T or another ARMv4 core + Select BR2_SOFT_FLOAT - ARMv7-A, Thumb 2, little endian, soft-float, glibc + Select Cortex-A8, Cortex-A9 or another ARMv7-A core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mthumb config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1 bool "Sourcery CodeBench ARM 2010q1" @@ -56,8 +77,15 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1 2.11, gdb 7.0.50 and kernel headers 2.6.32. It has support for the following variants: - ARMv5T, little endian, soft-float, glibc + Select ARM926T, ARM10T, XScale or another ARMv5 core + Select BR2_SOFT_FLOAT - ARMv4T, little endian, soft-float, glibc + Select ARM720T, ARM920T, ARM922T or another ARMv4 core + Select BR2_SOFT_FLOAT - ARMv7-A, Thumb 2, little endian, soft-float, glibc + Select Cortex-A8, Cortex-A9 or another ARMv7-A core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mthumb config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3 bool "Sourcery CodeBench ARM 2009q3" @@ -70,8 +98,15 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3 2.10 and gdb 6.8 and kernel headers 2.6.30. It has support for the following variants: - ARMv5T, little endian, soft-float, glibc + Select ARM926T, ARM10T, XScale or another ARMv5 core + Select BR2_SOFT_FLOAT - ARMv4T, little endian, soft-float, glibc + Select ARM720T, ARM920T, ARM922T or another ARMv4 core + Select BR2_SOFT_FLOAT - ARMv7-A, Thumb 2, little endian, soft-float, glibc + Select Cortex-A8, Cortex-A9 or another ARMv7-A core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mthumb config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201103 bool "Sourcery CodeBench MIPS 2011.03" @@ -84,17 +119,43 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201103 2.13, uClibc 0.9.30 and gdb 7.2.50, kernel headers 2.6.38. It has support for the following variants: - MIPS32 O32 big endian glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT - MIPS32 O32 little endian glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL - MIPS32 big endian soft float glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT - MIPS32 little endian soft float glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL - MIPS32 big endian microMIPS glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 - MIPS32 little endian microMIPS glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL -mips16 - MIPS32 big endian soft float microMIPS glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 - MIPS32 little endian soft float microMIPS glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL -mips16 - MIPS32 big endian uclibc + Not usable in Buildroot yet. - MIPS32 little endian uclibc + Not usable in Buildroot yet. - MIPS32 big endian soft float uclibc + Not usable in Buildroot yet. - MIPS32 little endian soft float uclibc + Not usable in Buildroot yet. config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44 bool "Sourcery CodeBench MIPS 4.4" @@ -107,17 +168,43 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44 2.11, uClibc 0.9.30 and gdb 7.0, kernel headers 2.6.32. It has support for the following variants: - MIPS32 O32 big endian glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT - MIPS32 O32 little endian glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL - MIPS32 big endian soft float glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT - MIPS32 little endian soft float glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL - MIPS32 big endian microMIPS glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 - MIPS32 little endian microMIPS glibc + Select a MIPS generic core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL -mips16 - MIPS32 big endian soft float microMIPS glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 - MIPS32 little endian soft float microMIPS glibc + Select a MIPS generic core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -EL -mips16 - MIPS32 big endian uclibc + Not usable in Buildroot yet. - MIPS32 little endian uclibc + Not usable in Buildroot yet. - MIPS32 big endian soft float uclibc + Not usable in Buildroot yet. - MIPS32 little endian soft float uclibc + Not usable in Buildroot yet. config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 bool "Sourcery CodeBench PowerPC 2011.03" @@ -130,12 +217,21 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 glibc 2.13, gdb 7.2.50 and kernel headers 2.6.38. It has support for the following variants: - 603 glibc, 32 bits + Select a generic PowerPC core + Disable BR2_SOFT_FLOAT - 603 soft float glibc, 32 bits + Select a generic PowerPC core + Enable BR2_SOFT_FLOAT - e600 altivec glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te600 - e500v1 glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te500v1 - e500v2 glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te500v2 - e500mc glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te500mc - 970 glibc hard-float, 64 bits + Set BR2_TARGET_OPTIMIZATION to -m64 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 bool "Sourcery CodeBench PowerPC 2010.09" @@ -148,12 +244,21 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 glibc 2.11, gdb 7.2.50 and kernel headers 2.6.35.2. It has support for the following variants: - 603 glibc, 32 bits + Select a generic PowerPC core + Disable BR2_SOFT_FLOAT - 603 soft float glibc, 32 bits + Select a generic PowerPC core + Enable BR2_SOFT_FLOAT - e600 altivec glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te600 - e500v1 glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te500v1 - e500v2 glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te500v2 - e500mc glibc, 32 bits + Set BR2_TARGET_OPTIMIZATION to -te500mc - 970 glibc hard-float, 64 bits + Set BR2_TARGET_OPTIMIZATION to -m64 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103 bool "Sourcery CodeBench SH 2011.03" @@ -166,9 +271,13 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103 glibc 2.13, uClibc 0.9.30, gdb 7.2.50 and kernel headers 2.6.38. It has support for the following variants: - SH4A, glibc, little endian + Default. - SH4A, glibc, big endian + Add -mb to BR2_TARGET_OPTIMIZATION - SH4A, uClibc, little endian + Not usable in Buildroot yet. - SH4A, uClibc, big endian + Not usable in Buildroot yet. config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201009 bool "Sourcery CodeBench SH 2010.09" @@ -181,9 +290,13 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201009 glibc 2.11, uClibc 0.9.30, gdb 7.2.50 and kernel headers 2.6.35.2. It has support for the following variants: - SH4A, glibc, little endian + Default. - SH4A, glibc, big endian + Add -mb to BR2_TARGET_OPTIMIZATION - SH4A, uClibc, little endian + Not usable in Buildroot yet. - SH4A, uClibc, big endian + Not usable in Buildroot yet. config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201103 bool "Sourcery CodeBench SH 2011.03" @@ -230,9 +343,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 binutils 2.21.53, glibc 2.13, gdb 7.2.50 and kernel headers 3.0.1. It has support for the following variants: - Intel Pentium 4, glibc, 32 bits + Default, nothing special to do. - Intel Atom, glibc, 32 bits + Select an Atom core - Intel Xeon, glibc, 64 bits + Set BR2_TARGET_OPTIMIZATION to -m64 - Intel Core 2, glibc, 64 bits + Select a Core 2 core + Set BR2_TARGET_OPTIMIZATION to -m64 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201009 bool "Sourcery CodeBench x86/x86_64 2010.09" @@ -245,9 +363,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201009 binutils 2.20, glibc 2.11, gdb 7.2.50 and kernel headers 2.6.35.2. It has support for the following variants: - Intel Pentium 4, glibc, 32 bits + Default, nothing special to do. - Intel Atom, glibc, 32 bits + Select an Atom core - Intel Xeon, glibc, 64 bits + Set BR2_TARGET_OPTIMIZATION to -m64 - Intel Core 2, glibc, 64 bits + Select a Core 2 core + Set BR2_TARGET_OPTIMIZATION to -m64 config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 bool "Blackfin.uclinux.org 2011R1-RC4" -- cgit v1.2.3 From 3367d5ce770ac409e7b3f5bba2c7ed1a819b3ef7 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 16:13:58 +0100 Subject: external-toolchain: run checks even on extracted toolchains When the mechanism that allows Buildroot to download external toolchains automatically was added, all the sanity checks on the external toolchains were not performed. This commit re-enables those checks that we already do on external toolchains that are not downloaded/extracted by Buildroot. This makes the toolchain checks more consistent accross various configurations. Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/ext-tool.mk | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index 132aacd8f..8132caa4f 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -170,8 +170,6 @@ endif ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) TOOLCHAIN_EXTERNAL_DEPENDENCIES = $(TOOLCHAIN_EXTERNAL_DIR)/.extracted -else -TOOLCHAIN_EXTERNAL_DEPENDENCIES = $(STAMP_DIR)/ext-toolchain-checked endif ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3),y) @@ -284,7 +282,7 @@ endif # location, check that it supports sysroot, and then verify that it # matches the configuration provided in Buildroot: ABI, C++ support, # type of C library and all C library features. -$(STAMP_DIR)/ext-toolchain-checked: +$(STAMP_DIR)/ext-toolchain-checked: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES) @echo "Checking external toolchain settings" $(Q)$(call check_cross_compiler_exists,$(TOOLCHAIN_EXTERNAL_CC)) $(Q)LIBC_A_LOCATION=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) -print-file-name=libc.a)` ; \ @@ -343,7 +341,7 @@ $(STAMP_DIR)/ext-toolchain-checked: # multilib variant compared to the main sysroot. # Ex: mips16/soft-float/el -$(STAMP_DIR)/ext-toolchain-installed: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES) +$(STAMP_DIR)/ext-toolchain-installed: $(STAMP_DIR)/ext-toolchain-checked $(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(64)?/libc\.a::'` ; \ if test -z "$${SYSROOT_DIR}" ; then \ -- cgit v1.2.3 From 090d486441e6ee1898a6a27f8827076464cf2110 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 16:15:43 +0100 Subject: external-toolchain: adjust check for uClibc static toolchains The current check for uClibc toolchain was verifying that a ld-uClibc.so dynamic loader was present. However, with static-only uClibc toolchains, this does not work. Instead, we check for an uClibc-specific header file in the sysroot. Signed-off-by: Thomas Petazzoni --- toolchain/helpers.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'toolchain') diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 3f4818f22..6e7f1f4c9 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -196,7 +196,7 @@ check_uclibc_feature = \ # check_uclibc = \ SYSROOT_DIR="$(strip $1)"; \ - if ! test -f $${SYSROOT_DIR}/lib/ld*-uClibc.so.* ; then \ + if ! test -f $${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; then \ echo "Incorrect selection of the C library"; \ exit -1; \ fi; \ -- cgit v1.2.3 From 2ec3e6db46e35ee90bc8eef0d5aedb2891764e8a Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sun, 15 Jan 2012 20:02:11 +0100 Subject: external-toolchain: fix description of PowerPC 2010.09 from Mentor Graphics Signed-off-by: Thomas Petazzoni --- toolchain/toolchain-external/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'toolchain') diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index d3b591d6d..f3f49e93a 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -240,7 +240,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 select BR2_INSTALL_LIBSTDCPP help Sourcery CodeBench toolchain for the PowerPC architecture, - from Sourcery CodeBench. It uses gcc 4.5.1, binutils 2.20, + from Mentor Graphics. It uses gcc 4.5.1, binutils 2.20, glibc 2.11, gdb 7.2.50 and kernel headers 2.6.35.2. It has support for the following variants: - 603 glibc, 32 bits -- cgit v1.2.3 From e6e60becb008dd389c51d2d75cbfd63551300dae Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 28 Jan 2012 17:12:02 +0100 Subject: external-toolchain: add support for Linaro 2012.01 Linaro has just released a new pre-built toolchain, available as a tarball, which is a pure toolchain (only the C library is included). This makes this new Linaro 2012.01 toolchain usable in Buildroot, so let's integrate the support for it. In addition to simply adding the new external toolchain at the usual locations, this patch allows need to adapt a few things to support Linaro toolchains. Most toolchains store their libraries in the "lib/" or "usr/lib" directories relative to the toolchain. Buildroot toolchains on the other hand, store the libraries in the "usr//lib" directory. And the Linaro toolchain has choosen to use the "lib/" directory. Therefore, this patch adjust: * The logic to search a particular library when that library needs to be copied to the target directory * The logic to deduce the sysroot directory from the libc.a file location in the toolchain: removing "(usr/?)lib(64?)" is no longer sufficient, we need to take into account the "lib//" case. Since the Linaro toolchain generates code for Cortex-A processors only, the selection of this toolchain is limited to Cortex-A8 and Cortex-A9. Signed-off-by: Thomas Petazzoni --- toolchain/helpers.mk | 31 +++++++++++++++++++++++++------ toolchain/toolchain-external/Config.in | 15 +++++++++++++++ toolchain/toolchain-external/ext-tool.mk | 11 +++++++---- 3 files changed, 47 insertions(+), 10 deletions(-) (limited to 'toolchain') diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 6e7f1f4c9..bb1ea9040 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -7,11 +7,30 @@ # directory to the target directory. Also optionaly strips the # library. # -# Most toolchains have their libraries either in /lib or /usr/lib -# relative to their ARCH_SYSROOT_DIR. Buildroot toolchains, however, -# have basic libraries in /lib, and libstdc++/libgcc_s in -# /usr//lib(64). Thanks to ARCH_LIB_DIR we also take into -# account toolchains that have the libraries in lib64 and usr/lib64. +# Most toolchains (CodeSourcery ones) have their libraries either in +# /lib or /usr/lib relative to their ARCH_SYSROOT_DIR, so we search +# libraries in: +# +# $${ARCH_LIB_DIR} +# usr/$${ARCH_LIB_DIR} +# +# Buildroot toolchains, however, have basic libraries in /lib, and +# libstdc++/libgcc_s in /usr//lib(64), so we also need to +# search libraries in: +# +# usr/$(TOOLCHAIN_EXTERNAL_PREFIX)/$${ARCH_LIB_DIR} +# +# Finally, Linaro toolchains have the libraries in lib//, +# so we need to search libraries in: +# +# $${ARCH_LIB_DIR}/$(TOOLCHAIN_EXTERNAL_PREFIX) +# +# Thanks to ARCH_LIB_DIR we also take into account toolchains that +# have the libraries in lib64 and usr/lib64. +# +# Please be very careful to check the major toolchain sources: +# Buildroot, Crosstool-NG, CodeSourcery and Linaro before doing any +# modification on the below logic. # # $1: arch specific sysroot directory # $2: library directory ('lib' or 'lib64') from which libraries must be copied @@ -25,7 +44,7 @@ copy_toolchain_lib_root = \ DESTDIR="$(strip $4)" ; \ \ LIBS=`(cd $${ARCH_SYSROOT_DIR}; \ - find -L $${ARCH_LIB_DIR} usr/$${ARCH_LIB_DIR} usr/$(TOOLCHAIN_EXTERNAL_PREFIX)/$${ARCH_LIB_DIR} \ + find -L $${ARCH_LIB_DIR} usr/$${ARCH_LIB_DIR} usr/$(TOOLCHAIN_EXTERNAL_PREFIX)/$${ARCH_LIB_DIR} $${ARCH_LIB_DIR}/$(TOOLCHAIN_EXTERNAL_PREFIX) \ -maxdepth 1 -name "$${LIB}.*" 2>/dev/null \ )` ; \ for FILE in $${LIBS} ; do \ diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index f3f49e93a..9db5cb64e 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -3,6 +3,20 @@ if BR2_TOOLCHAIN_EXTERNAL choice prompt "Toolchain" +config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_01 + bool "Linaro 2012.01" + depends on BR2_arm + depends on BR2_cortex_a8 || BR2_cortex_a9 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + help + Linaro toolchain for the ARM architecture. It uses Linaro + GCC 2012.01 (based on gcc 4.6), Linaro GDB 2011.12, eglibc + 2.13. It generates code that runs on all Cortex-A profile + devices, but tuned for the Cortex-A9. The code generated is + Thumb 2, with the softfp calling convention, and uses the + VFPv3-D16 FPU instructions. + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109 bool "Sourcery CodeBench ARM 2011.09" depends on BR2_arm @@ -433,6 +447,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX config BR2_TOOLCHAIN_EXTERNAL_PREFIX string + default "arm-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_01 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2009Q3 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1 default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201009 diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index 8132caa4f..a638381d1 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -187,6 +187,9 @@ TOOLCHAIN_EXTERNAL_SOURCE=arm-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gn else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/ TOOLCHAIN_EXTERNAL_SOURCE=arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_01),y) +TOOLCHAIN_EXTERNAL_SITE=http://launchpad.net/linaro-toolchain-binaries/trunk/2012.01/+download/ +TOOLCHAIN_EXTERNAL_SOURCE=gcc-linaro-arm-linux-gnueabi-2012.01-20120125_linux.tar.bz2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44),y) TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/sgpp/lite/mips/portal/package7401/public/mips-linux-gnu/ TOOLCHAIN_EXTERNAL_SOURCE=mips-4.4-303-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 @@ -286,7 +289,7 @@ $(STAMP_DIR)/ext-toolchain-checked: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES) @echo "Checking external toolchain settings" $(Q)$(call check_cross_compiler_exists,$(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(64)?/libc\.a::'` ; \ + SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:usr/lib(64)?/(.*/)?libc\.a::'` ; \ if test -z "$${SYSROOT_DIR}" ; then \ @echo "External toolchain doesn't support --sysroot. Cannot use." ; \ exit 1 ; \ @@ -343,14 +346,14 @@ $(STAMP_DIR)/ext-toolchain-checked: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES) $(STAMP_DIR)/ext-toolchain-installed: $(STAMP_DIR)/ext-toolchain-checked $(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(64)?/libc\.a::'` ; \ + SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:usr/lib(64)?/(.*/)?libc\.a::'` ; \ if test -z "$${SYSROOT_DIR}" ; then \ @echo "External toolchain doesn't support --sysroot. Cannot use." ; \ exit 1 ; \ fi ; \ ARCH_LIBC_A_LOCATION=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libc.a)` ; \ - ARCH_SYSROOT_DIR=`echo $${ARCH_LIBC_A_LOCATION} | sed -r -e 's:usr/lib(64)?/libc\.a::'` ; \ - ARCH_LIB_DIR=`echo $${ARCH_LIBC_A_LOCATION} | sed -r -e 's:.*/usr/(lib(64)?)/libc.a:\1:'` ; \ + ARCH_SYSROOT_DIR=`echo $${ARCH_LIBC_A_LOCATION} | sed -r -e 's:usr/lib(64)?/(.*/)?libc\.a::'` ; \ + ARCH_LIB_DIR=`echo $${ARCH_LIBC_A_LOCATION} | sed -r -e 's:.*/usr/(lib(64)?)/(.*/)?libc.a:\1:'` ; \ ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \ mkdir -p $(TARGET_DIR)/lib ; \ echo "Copy external toolchain libraries to target..." ; \ -- cgit v1.2.3