From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yann E. MORIN Date: Wed, 07 Apr 2010 00:47:55 +0200 Subject: [Buildroot] [PATCH] toolchain: fix using external toolchains built with buildroot In-Reply-To: <20100406224729.23635.86404.stgit@roazhon.bzh.lan> References: <20100406224729.23635.86404.stgit@roazhon.bzh.lan> Message-ID: <20100406224755.23635.69262.stgit@roazhon.bzh.lan> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net From: Yann E. MORIN The toolchains built with buildroot use specially crafted paths for their sysroot and prefix. Fix that by asking gcc where it finds a file we know by relative path to the sysroot. This has the side effect of greatly simplifying the sysroot detection in every cases tested so far (BR toolchains, CT-NG toolchains, and CodeSourcery toolchains). Fixes bug #851. Thanks Thomas Petazzoni for the hint and some testings. Thanks Grant Edwards for the report and the comments. --- toolchain/external-toolchain/ext-tool.mk | 10 ++-------- 1 files changed, 2 insertions(+), 8 deletions(-) diff --git a/toolchain/external-toolchain/ext-tool.mk b/toolchain/external-toolchain/ext-tool.mk index 80bdae6..b379095 100644 --- a/toolchain/external-toolchain/ext-tool.mk +++ b/toolchain/external-toolchain/ext-tool.mk @@ -205,14 +205,8 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) EXTERNAL_LIBS+=libstdc++.so endif -# This dance is needed because the toolchain may have been relocated, so the -# configured paths may no longer match; fortunately, the sysroot moves along -# the toolchain, so is always at the same place relative to the toolchain's -# current location. -CFG_PREFIX_DIR=$(shell LANG=C $(TARGET_CC) -v 2>&1 | grep ^Configured | tr " " "\n" | grep -- "--prefix=" | cut -f2 -d=) -CFG_SYSROOT_DIR=$(shell LANG=C $(TARGET_CC) -v 2>&1 | grep ^Configured | tr " " "\n" | grep -- "--with-sysroot=" | cut -f2 -d=) -REL_SYSROOT_DIR=$(shell echo "$(CFG_SYSROOT_DIR)" |sed -r -e 's:^$(CFG_PREFIX_DIR)::;') -SYSROOT_DIR=$(TOOLCHAIN_EXTERNAL_PATH)/$(REL_SYSROOT_DIR) +SYSROOT_DIR=$(shell readlink -f $$(LANG=C $(TARGET_CC) -print-file-name=libc.a |sed -r -e 's:usr/lib/libc\.a::;')) +$(info SYSROOT_DIR="$(SYROOT_DIR)") $(STAMP_DIR)/ext-toolchain-installed: @echo "Checking external toolchain settings"