Bug 695

Summary: Build using reconfigured external toolchain fails
Product: buildroot Reporter: Maksim Rayskiy <maksim.rayskiy>
Component: OtherAssignee: unassigned
Status: RESOLVED DUPLICATE    
Severity: major CC: buildroot
Priority: P5    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Host: x86 Target: arm926t
Build:

Description Maksim Rayskiy 2009-11-06 18:40:46 UTC
When building using external binary toolchain make verifies configuration and supported options through a set of checks in toolchain/external-toolchain/ext-tool.mk. The file uses
SYSROOT_DIR=$(shell LANG=C $(TARGET_CC) -v 2>&1 | grep ^Configured | tr " " "\n" | grep -- "--with-sysroot" | cut -f2 -d=)
to determine sysroot folder.

Normally, <cross>-gcc -v would report something like

Using built-in specs.
Target: arm-linux-uclibcgnueabi
Configured with: /home/developer/jackal/toolchain_build_arm/gcc-4.4.1/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-linux-uclibcgnueabi --enable-languages=c,c++ --with-sysroot=/home/developer/jackal/build_arm/staging_dir --with-build-time-tools=/home/developer/jackal/build_arm/staging_dir/usr/arm-linux-uclibcgnueabi/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-libssp --disable-tls --enable-shared --with-gmp=/home/developer/jackal/toolchain_build_arm/gmp --with-mpfr=/home/developer/jackal/toolchain_build_arm/mpfr --disable-nls --enable-threads --disable-multilib --disable-decimal-float --with-abi=aapcs-linux --with-arch=armv5te --with-tune=arm9tdmi 
Thread model: posix
gcc version 4.4.1 (GCC)

and macro properly extracts sysroot folder value. In my case, 
SYSROOT_DIR=/home/developer/jackal/build_arm/staging_dir

However, if the toolchain was reconfigured after initial build, gcc report is different

Using built-in specs.
Target: arm-linux-uclibcgnueabi
Configured with: /home/developer/jackal/toolchain_build_arm/gcc-4.4.1/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-linux-uclibcgnueabi --enable-languages=c,c++ --with-sysroot=/home/developer/jackal/build_arm/staging_dir --with-build-time-tools=/home/developer/jackal/build_arm/staging_dir/usr/arm-linux-uclibcgnueabi/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-libssp --disable-tls --enable-shared --with-gmp=/home/developer/jackal/toolchain_build_arm/gmp --with-mpfr=/home/developer/jackal/toolchain_build_arm/mpfr --disable-nls --enable-threads --disable-multilib --disable-decimal-float --with-abi=aapcs-linux --with-arch=armv5te --with-tune=arm9tdmi : (reconfigured) /home/developer/jackal/toolchain_build_arm/gcc-4.4.1/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-linux-uclibcgnueabi --enable-languages=c,c++ --with-sysroot=/home/developer/jackal/build_arm/staging_dir --with-build-time-tools=/home/developer/jackal/build_arm/staging_dir/usr/arm-linux-uclibcgnueabi/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-libssp --disable-tls --enable-shared --with-gmp=/home/developer/jackal/toolchain_build_arm/gmp --with-mpfr=/home/developer/jackal/toolchain_build_arm/mpfr --disable-nls --enable-threads --disable-multilib --disable-decimal-float --with-abi=aapcs-linux --with-arch=armv5te --with-tune=arm9tdmi
Thread model: posix
gcc version 4.4.1 (GCC)

In such case, 
SYSROOT_DIR=/home/developer/jackal/build_arm/staging_dir /home/developer/jackal/build_arm/staging_dir
and make fails immediately after that.

I would suggest modifying SYSROOT_DIR definition to extract only the latest sysroot option:

SYSROOT_DIR=$(shell LANG=C $(TARGET_CC) -v 2>&1 | grep ^Configured | tr " " "\n" | grep -- "--with-sysroot" | tail -n 1 | cut -f2 -d=)
Comment 1 Thomas Petazzoni 2010-02-21 18:13:11 UTC

*** This bug has been marked as a duplicate of bug 693 ***