From 149935592c2d0122ff8f510236c69b72528b8403 Mon Sep 17 00:00:00 2001
From: Mike Baker <mbm@openwrt.org>
Date: Thu, 10 Aug 2006 19:25:26 +0000
Subject: [PATCH] add secret option to use host's toolchain when native
 compiling

SVN-Revision: 4553
---
 openwrt/Config.in                   |  2 +-
 openwrt/package/base-files/Makefile |  3 +++
 openwrt/rules.mk                    |  9 ++++++---
 openwrt/toolchain/Config.in         |  7 +++++++
 openwrt/toolchain/Makefile          | 15 +++++++++++----
 5 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/openwrt/Config.in b/openwrt/Config.in
index caa79447993..d1d66ff0db2 100644
--- a/openwrt/Config.in
+++ b/openwrt/Config.in
@@ -16,7 +16,7 @@ menuconfig DEVEL
 	bool "Advanced configuration options (for developers)"
 	default n
 	select BUILDOPTS
-	select TOOLCHAINOPTS
+	select TOOLCHAINOPTS if !NATIVE_TOOLCHAIN
 
 config BROKEN
 	bool "Show broken platforms / packages" if DEVEL
diff --git a/openwrt/package/base-files/Makefile b/openwrt/package/base-files/Makefile
index e41e1fd7987..dce07fe5074 100644
--- a/openwrt/package/base-files/Makefile
+++ b/openwrt/package/base-files/Makefile
@@ -86,6 +86,7 @@ define Package/libgcc
   SECTION:=libs
   CATEGORY:=Libraries
   DEFAULT:=y
+  DEPENDS:=@!NATIVE_TOOLCHAIN
   TITLE:=GCC support library
   VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE)
   DESCRIPTION:=$(TITLE)
@@ -94,6 +95,7 @@ endef
 define Package/libpthread
   $(call Package/base-files$(TARGET))
   DEFAULT:=n
+  DEPENDS:=@!NATIVE_TOOLCHAIN
   VERSION:=$(UCLIBC_VERSION)-$(PKG_RELEASE)
   TITLE:=POSIX thread library
   DESCRIPTION:=POSIX thread library
@@ -103,6 +105,7 @@ endef
 define Package/uclibc
   $(call Package/base-files$(TARGET))
   VERSION:=$(UCLIBC_VERSION)-$(PKG_RELEASE)
+  DEPENDS:=@!NATIVE_TOOLCHAIN
   TITLE:=C library
   DESCRIPTION:=C library for embedded systems
 endef
diff --git a/openwrt/rules.mk b/openwrt/rules.mk
index a8d3647b6dd..3645b064f7b 100644
--- a/openwrt/rules.mk
+++ b/openwrt/rules.mk
@@ -33,9 +33,12 @@ STAMP_DIR:=$(BUILD_DIR)/stamp
 TARGET_DIR:=$(BUILD_DIR)/root
 IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/ipkg
 
-REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux-uclibc
-GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
-TARGET_CROSS:=$(OPTIMIZE_FOR_CPU)-linux-uclibc-
+ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
+  REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux-uclibc
+  GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
+  TARGET_CROSS:=$(OPTIMIZE_FOR_CPU)-linux-uclibc-
+endif
+
 IMAGE:=$(BUILD_DIR)/root_fs_$(ARCH)
 
 TARGET_PATH:=$(STAGING_DIR)/usr/bin:$(STAGING_DIR)/bin:$(PATH)
diff --git a/openwrt/toolchain/Config.in b/openwrt/toolchain/Config.in
index 37af938b3b7..b5258ddce98 100644
--- a/openwrt/toolchain/Config.in
+++ b/openwrt/toolchain/Config.in
@@ -1,7 +1,14 @@
 #
+config NATIVE_TOOLCHAIN
+	bool
+	prompt "Use host's toolchain" if DEVEL && BROKEN
+	default n
+	help
+		If enabled, OpenWrt will compile using your existing toolchain instead of compiling one
 
 menuconfig TOOLCHAINOPTS
 	bool "Toolchain Options" if DEVEL
+	depends !NATIVE_TOOLCHAIN
 
 source "toolchain/binutils/Config.in"
 source "toolchain/gcc/Config.in"
diff --git a/openwrt/toolchain/Makefile b/openwrt/toolchain/Makefile
index 92069acb985..fb54bddf908 100644
--- a/openwrt/toolchain/Makefile
+++ b/openwrt/toolchain/Makefile
@@ -7,7 +7,12 @@
 # Main makefile for the toolchain
 #
 include $(TOPDIR)/rules.mk
-TARGETS-y:=sed kernel-headers sstrip binutils gcc uClibc ipkg-utils libnotimpl ext2fs squashfs jffs2 lzma
+TARGETS-y:=sed kernel-headers sstrip
+ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
+  TARGETS-y+=binutils gcc uClibc
+endif
+TARGETS-y+=ipkg-utils libnotimpl ext2fs squashfs jffs2 lzma
+
 TARGETS-$(CONFIG_GDB) += gdb
 
 TARGETS_DOWNLOAD:=$(patsubst %,%-download,$(TARGETS-y))
@@ -21,9 +26,11 @@ clean: $(TARGETS_CLEAN)
 
 kernel-headers-prepare: sed-install
 uClibc-prepare: kernel-headers-prepare sstrip-install
-binutils-prepare: uClibc-prepare
-gcc-prepare: binutils-install
-uClibc-compile: gcc-compile
+ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
+  binutils-prepare: uClibc-prepare
+  gcc-prepare: binutils-install
+  uClibc-compile: gcc-compile
+endif
 gcc-install: uClibc-install
 squashfs-compile: lzma-install
 
-- 
GitLab