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
This commit is contained in:
parent
7a563f122f
commit
5b7668ca44
3 changed files with 64 additions and 2 deletions
2
rules.mk
2
rules.mk
|
@ -148,7 +148,7 @@ ifndef DUMP
|
||||||
ifneq ($(TOOLCHAIN_LIB_DIRS),)
|
ifneq ($(TOOLCHAIN_LIB_DIRS),)
|
||||||
TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS))
|
TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS))
|
||||||
endif
|
endif
|
||||||
TOOLCHAIN_DIR:=$(TOOLCHAIN_ROOT_DIR)
|
TARGET_PATH:=$(TOOLCHAIN_DIR)/bin:$(TARGET_PATH)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
curdir:=toolchain
|
curdir:=toolchain
|
||||||
|
|
||||||
# subdirectories to descend into
|
# 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-compile:=$($(curdir)/builddirs-prepare)
|
||||||
$(curdir)/builddirs-install:=$($(curdir)/builddirs-compile)
|
$(curdir)/builddirs-install:=$($(curdir)/builddirs-compile)
|
||||||
|
|
||||||
|
|
62
toolchain/wrapper/Makefile
Normal file
62
toolchain/wrapper/Makefile
Normal file
|
@ -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))
|
Loading…
Reference in a new issue