From e74e4dbd29f86f25da1285c574b8587e1626a585 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sat, 30 Jun 2012 18:12:15 +0000
Subject: [PATCH] toolchain: keep the initial gcc around for later uclibc
 rebuilds

testing uclibc changes is tricky because the final gcc tends to miscompile
uclibc code or barf up internal compiler errors.
install binutils into $(TOOLCHAIN_DIR)/initial (without changing the configure
prefix) and copy it from there to $(TOOLCHAIN_DIR)/ so that the initial gcc
can be put into $(PATH) for the uclibc build, even if the final gcc
is already installed.

SVN-Revision: 32553
---
 toolchain/binutils/Makefile    | 6 +++++-
 toolchain/gcc/initial/Makefile | 5 ++++-
 toolchain/uClibc/Makefile      | 2 +-
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile
index 0022202d4b..9d12721dec 100644
--- a/toolchain/binutils/Makefile
+++ b/toolchain/binutils/Makefile
@@ -79,7 +79,11 @@ define Host/Compile
 endef
 
 define Host/Install
-	$(MAKE) -C $(HOST_BUILD_DIR) install
+	mkdir -p $(TOOLCHAIN_DIR)/initial
+	$(MAKE) -C $(HOST_BUILD_DIR) \
+		prefix=$(TOOLCHAIN_DIR)/initial \
+		install
+	$(CP) $(TOOLCHAIN_DIR)/initial/. $(TOOLCHAIN_DIR)/
 	$(CP) $(TOOLCHAIN_DIR)/bin/$(REAL_GNU_TARGET_NAME)-readelf $(REAL_STAGING_DIR_HOST)/bin/readelf
 endef
 
diff --git a/toolchain/gcc/initial/Makefile b/toolchain/gcc/initial/Makefile
index f3f78b0b2f..3d8ab61cdf 100644
--- a/toolchain/gcc/initial/Makefile
+++ b/toolchain/gcc/initial/Makefile
@@ -19,14 +19,17 @@ endef
 
 define Host/Install
 	$(GCC_MAKE) -C $(GCC_BUILD_DIR) \
+		prefix="$(TOOLCHAIN_DIR)/initial" \
 		install-gcc \
 		$(if $(GCC_BUILD_TARGET_LIBGCC),install-target-libgcc)
 
 	# XXX: glibc insists on linking against libgcc_eh
-	( cd $(TOOLCHAIN_DIR)/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION) ; \
+	( cd $(TOOLCHAIN_DIR)/initial/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION) ; \
 		[ -e libgcc_eh.a ] || ln -sf libgcc.a libgcc_eh.a ; \
 		cp libgcc.a libgcc_initial.a; \
 	)
+
+	$(CP) $(TOOLCHAIN_DIR)/initial/. $(TOOLCHAIN_DIR)/
 endef
 
 $(eval $(call HostBuild))
diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile
index 6e7e9ddd8b..315e0446ca 100644
--- a/toolchain/uClibc/Makefile
+++ b/toolchain/uClibc/Makefile
@@ -93,7 +93,7 @@ CPU_CFLAGS = \
 	--std=gnu99 -ffunction-sections -fdata-sections \
 	$(TARGET_CFLAGS)
 
-UCLIBC_MAKE = PATH='$(TARGET_PATH)' $(MAKE) -C $(HOST_BUILD_DIR) \
+UCLIBC_MAKE = PATH='$(TOOLCHAIN_DIR)/initial/bin:$(TARGET_PATH)' $(MAKE) -C $(HOST_BUILD_DIR) \
 	$(TARGET_CONFIGURE_OPTS) \
 	DEVEL_PREFIX=/ \
 	RUNTIME_PREFIX=/ \
-- 
GitLab