summaryrefslogtreecommitdiffstats
path: root/toolchain/wrapper/Makefile
blob: e1f8389b1f31edc0f70440b9b64c036493381108 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#
# 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 "$(if $(call qstrip,$(CONFIG_TOOLCHAIN_LIBC)),-m$(call qstrip,$(CONFIG_TOOLCHAIN_LIBC))) $(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/SetToolchainInfo
	if [ -f $(CONFIG_TOOLCHAIN_ROOT)/info.mk ]; then \
		$(CP) $(CONFIG_TOOLCHAIN_ROOT)/info.mk $(TOOLCHAIN_DIR)/; \
	else \
		$(SED) 's,GCC_VERSION=.*,GCC_VERSION=$(CONFIG_GCC_VERSION),' $(TOOLCHAIN_DIR)/info.mk; \
	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")
	$(call Host/SetToolchainInfo)
endef

define Host/Clean
	rm -rf $(TOOLCHAIN_DIR)/bin
	rm -rf $(TOOLCHAIN_DIR)/info.mk
endef

$(eval $(call HostBuild))