toolchain/wrapper: fill and reference info.mk in staging_dir ext toolchain
authorChristian Marangi <ansuelsmth@gmail.com>
Sat, 20 Apr 2024 16:29:23 +0000 (18:29 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Sun, 21 Apr 2024 15:59:17 +0000 (17:59 +0200)
Currently when external toolchain is used, a info.mk is created (with
to-be-filled values) but is never actually filled with real values and
is never actually used in rules.mk.

This info.mk is used down the code with special packages like libgcc to
reference info like gcc version and package special library.

To mimic what is done with internal toolchain, add the include in
rules.mk for info.mk also for external library and in fix
toolchain/wrapper to fill the staging_dir info.mk.

The logic is to check if the external toolchain provide an info.mk and
if it doesn't we at least fill the GCC_VERSION with the value set in the
.config file.

With this special library like libgcc correctly reference and have set the
GCC_VERSION variable.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
rules.mk
toolchain/wrapper/Makefile

index 6f05047f26d92907895f8de43ed3ab1c8ec5ee69..84586ac26b77915dd2f55d969670b2ce7f3cbd62 100644 (file)
--- a/rules.mk
+++ b/rules.mk
@@ -194,6 +194,7 @@ ifndef DUMP
     endif
   else
     ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
+      -include $(TOOLCHAIN_DIR)/info.mk
       TARGET_CROSS:=$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX))
       TOOLCHAIN_ROOT_DIR:=$(call qstrip,$(CONFIG_TOOLCHAIN_ROOT))
       TOOLCHAIN_BIN_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_BIN_PATH)))
index 3398e407c9f2b2042ee55390caeba374e73d53e6..e1f8389b1f31edc0f70440b9b64c036493381108 100644 (file)
@@ -38,6 +38,14 @@ $$(if $$($(1)), \
 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)
@@ -53,10 +61,12 @@ 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))