When using an external toolchain, the SetToolchainInfo function is missing a qstrip call on GCC_VERSION, which results in quotes making it to the toolchain info.mk file. This leads to a failure to build the libgcc ipk package because the quotes make it to its version and filename. For some reason, it only fails on the first make invocation, but succeeds on subsequent ones on my setup. Fix this issue by adding the qstrip, making it consistent with the internal toolchain approach. Signed-off-by: Ondrej Cierny <o.cierny@gmail.com> Link: https://github.com/openwrt/openwrt/pull/19192 Signed-off-by: Robert Marko <robimarko@gmail.com>
72 lines
1.8 KiB
Makefile
72 lines
1.8 KiB
Makefile
#
|
|
# 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=$(call qstrip,$(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))
|