From ae5914acdf354f8f15fe34a8aa942cf2d9450452 Mon Sep 17 00:00:00 2001
From: jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Wed, 18 Jan 2012 03:08:09 +0000
Subject: [buildroot] use ext-toolchain.sh to integrate external toolchains Use
 ext-toolchain.sh to wrap external toolchain commands, abort build if certain
 features such as CONFIG_SOFT_FLOAT or CONFIG_IPV6 are enabled but not
 supported by the toolchain.

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29766 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 toolchain/Makefile         |  2 +-
 toolchain/wrapper/Makefile | 62 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 toolchain/wrapper/Makefile

(limited to 'toolchain')

diff --git a/toolchain/Makefile b/toolchain/Makefile
index 0443924c5..3a9cd0b2f 100644
--- a/toolchain/Makefile
+++ b/toolchain/Makefile
@@ -28,7 +28,7 @@
 curdir:=toolchain
 
 # subdirectories to descend into
-$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_INSIGHT),insight) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),,kernel-headers binutils gcc/minimal gcc/initial gcc/final $(LIBC) $(if $(CONFIG_GLIBC_PORTS),glibc-ports))
+$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_INSIGHT),insight) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),wrapper,kernel-headers binutils gcc/minimal gcc/initial gcc/final $(LIBC) $(if $(CONFIG_GLIBC_PORTS),glibc-ports))
 $(curdir)/builddirs-compile:=$($(curdir)/builddirs-prepare)
 $(curdir)/builddirs-install:=$($(curdir)/builddirs-compile)
 
diff --git a/toolchain/wrapper/Makefile b/toolchain/wrapper/Makefile
new file mode 100644
index 000000000..417ed8cd3
--- /dev/null
+++ b/toolchain/wrapper/Makefile
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=wrapper
+PKG_VERSION:=1
+
+include $(INCLUDE_DIR)/toolchain-build.mk
+
+
+# 1: args
+define toolchain_util
+$(strip $(SCRIPT_DIR)/ext-toolchain.sh --toolchain $(CONFIG_TOOLCHAIN_ROOT) \
+	--cflags $(CONFIG_TARGET_OPTIMIZATION) \
+	--cflags "-muclibc $(if $(CONFIG_SOFT_FLOAT),-msoft-float)" \
+	--cflags "$(patsubst ./%,-I$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_INC_PATH)))" \
+	--cflags "$(patsubst ./%,-L$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_LIB_PATH)))" \
+	$(1))
+endef
+
+# 1: config symbol
+# 2: feature
+define toolchain_test
+$$(if $$($(1)), \
+	@echo -n "Testing external toolchain for $(2) support ... "; \
+	if $(call toolchain_util,--test "$(2)"); then \
+		echo "ok"; exit 0; \
+	else \
+		echo "failed"; \
+		echo "ERROR: $(1) is enabled but the external toolchain does not support it"; \
+		exit 1; \
+	fi)
+endef
+
+
+define Host/Prepare
+	$(call toolchain_test,CONFIG_SOFT_FLOAT,softfloat)
+	$(call toolchain_test,CONFIG_IPV6,ipv6)
+	$(call toolchain_test,CONFIG_NLS,wchar)
+	$(call toolchain_test,CONFIG_PACKAGE_libpthread,threads)
+endef
+
+define Host/Configure
+endef
+
+define Host/Compile
+endef
+
+define Host/Install
+	$(call toolchain_util,--wrap "$(TOOLCHAIN_DIR)/bin")
+endef
+
+define Host/Clean
+	rm -rf $(TOOLCHAIN_DIR)/bin
+endef
+
+$(eval $(call HostBuild))
-- 
cgit v1.2.3