diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2012-01-18 03:08:09 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2012-01-18 03:08:09 +0000 |
commit | 5b7668ca44e6d6e2bcf175e7f64093bd1b71db19 (patch) | |
tree | 23e57437ccb4c4e0b33797263116e22680f5960b | |
parent | 7a563f122fd80c56d4c2ef645493a33dec10baa3 (diff) | |
download | upstream-5b7668ca44e6d6e2bcf175e7f64093bd1b71db19.tar.gz upstream-5b7668ca44e6d6e2bcf175e7f64093bd1b71db19.tar.bz2 upstream-5b7668ca44e6d6e2bcf175e7f64093bd1b71db19.zip |
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.
SVN-Revision: 29766
-rw-r--r-- | rules.mk | 2 | ||||
-rw-r--r-- | toolchain/Makefile | 2 | ||||
-rw-r--r-- | toolchain/wrapper/Makefile | 62 |
3 files changed, 64 insertions, 2 deletions
@@ -148,7 +148,7 @@ ifndef DUMP ifneq ($(TOOLCHAIN_LIB_DIRS),) TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS)) endif - TOOLCHAIN_DIR:=$(TOOLCHAIN_ROOT_DIR) + TARGET_PATH:=$(TOOLCHAIN_DIR)/bin:$(TARGET_PATH) endif endif endif diff --git a/toolchain/Makefile b/toolchain/Makefile index 0443924c53..3a9cd0b2f8 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 0000000000..417ed8cd37 --- /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)) |