summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Demin2025-05-02 10:42:42 +0000
committerChristian Marangi2025-05-02 15:27:33 +0000
commit57841c83d9c1503a19212766639d17ae5019bb8c (patch)
tree19340728a876096e1e273c09ec6a6a578a77a916
parent89ee79b77cd36db8071c9ae884394bb8bbbd836c (diff)
downloadopenwrt-57841c83d9c1503a19212766639d17ae5019bb8c.tar.gz
toolchain: gcc: make config consistent with glibc/musl
I've observed configuration drift for GCC between musl and glibc (especially it's final stage): # musl lt_cv_prog_compiler_static_works=yes lt_cv_prog_compiler_static_works_CXX=yes lt_cv_sys_max_cmd_len=1572864 # glibc lt_cv_prog_compiler_static_works=no lt_cv_prog_compiler_static_works_CXX=no lt_cv_sys_max_cmd_len=512 These changes should prevent this issue in future: export lt_cv_prog_compiler_static_works=yes export lt_cv_prog_compiler_static_works_CXX=yes export lt_cv_sys_max_cmd_len=1572864 Also: - provide custom autotools/libtool variables via properly named variable ("GCC_CONFIGURE_VARS"), - move variables from "GCC_MAKE" to "GCC_CONFIGURE_VARS" (at this moment only "gcc_cv_libc_provides_ssp=yes" for musl), - propagate it's usage for both "./configure" and "make". Signed-off-by: Konstantin Demin <rockdrilla@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18646 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-rw-r--r--toolchain/gcc/common.mk8
-rw-r--r--toolchain/gcc/final/Makefile14
-rw-r--r--toolchain/gcc/initial/Makefile2
-rw-r--r--toolchain/gcc/minimal/Makefile10
4 files changed, 29 insertions, 5 deletions
diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk
index 0ccf55bd31..a5837493c2 100644
--- a/toolchain/gcc/common.mk
+++ b/toolchain/gcc/common.mk
@@ -89,6 +89,13 @@ else
GRAPHITE_CONFIGURE:= --without-isl --without-cloog
endif
+## sane and common defaults for different libc implementations
+export lt_cv_prog_compiler_static_works=yes
+export lt_cv_prog_compiler_static_works_CXX=yes
+export lt_cv_sys_max_cmd_len=1572864
+
+GCC_CONFIGURE_VARS :=
+
GCC_CONFIGURE:= \
SHELL="$(BASH)" \
$(HOST_SOURCE_DIR)/configure \
@@ -222,6 +229,7 @@ endif
define Host/Configure
(cd $(GCC_BUILD_DIR) && rm -f config.cache; \
+ $(if $(strip $(GCC_CONFIGURE_VARS)),export $(GCC_CONFIGURE_VARS)); \
$(GCC_CONFIGURE) \
);
endef
diff --git a/toolchain/gcc/final/Makefile b/toolchain/gcc/final/Makefile
index 78a5576bff..6a190a14d7 100644
--- a/toolchain/gcc/final/Makefile
+++ b/toolchain/gcc/final/Makefile
@@ -17,7 +17,7 @@ ifndef CONFIG_USE_GLIBC
endif
ifdef CONFIG_USE_MUSL
- GCC_MAKE += gcc_cv_libc_provides_ssp=yes
+ GCC_CONFIGURE_VARS += gcc_cv_libc_provides_ssp=yes
endif
ifneq ($(CONFIG_SJLJ_EXCEPTIONS),)
@@ -39,6 +39,7 @@ define Host/Configure
$(CleanupToolchain)
mkdir -p $(GCC_BUILD_DIR)
(cd $(GCC_BUILD_DIR) && rm -f config.cache; \
+ $(if $(strip $(GCC_CONFIGURE_VARS)),export $(GCC_CONFIGURE_VARS)); \
$(GCC_CONFIGURE) \
);
endef
@@ -53,7 +54,10 @@ endif
define Host/Compile
$(FixGogccCrt)
- +$(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) all
+
+ $(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) \
+ $(GCC_CONFIGURE_VARS) \
+ all
endef
define SetupExtraArch
@@ -71,7 +75,11 @@ endef
define Host/Install
$(CleanupToolchain)
- +$(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) install
+
+ +$(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) \
+ $(GCC_CONFIGURE_VARS) \
+ install
+
# Set up the symlinks to enable lying about target name.
set -e; \
(cd $(TOOLCHAIN_DIR); \
diff --git a/toolchain/gcc/initial/Makefile b/toolchain/gcc/initial/Makefile
index 7cb4a73dbc..6b8a66798b 100644
--- a/toolchain/gcc/initial/Makefile
+++ b/toolchain/gcc/initial/Makefile
@@ -12,6 +12,7 @@ GCC_CONFIGURE += \
define Host/Compile
+$(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) \
+ $(GCC_CONFIGURE_VARS) \
all-build-libiberty \
all-gcc \
all-target-libgcc
@@ -19,6 +20,7 @@ endef
define Host/Install
+$(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) \
+ $(GCC_CONFIGURE_VARS) \
install-gcc \
install-target-libgcc
diff --git a/toolchain/gcc/minimal/Makefile b/toolchain/gcc/minimal/Makefile
index 31d6f675ab..83c17c8823 100644
--- a/toolchain/gcc/minimal/Makefile
+++ b/toolchain/gcc/minimal/Makefile
@@ -13,11 +13,17 @@ GCC_CONFIGURE += \
--disable-threads
define Host/Compile
- +$(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) all-gcc all-target-libgcc
+ +$(GCC_MAKE) $(HOST_JOBS) -C $(GCC_BUILD_DIR) \
+ $(GCC_CONFIGURE_VARS) \
+ all-gcc \
+ all-target-libgcc
endef
define Host/Install
- $(GCC_MAKE) -C $(GCC_BUILD_DIR) install-gcc install-target-libgcc
+ $(GCC_MAKE) -C $(GCC_BUILD_DIR) \
+ $(GCC_CONFIGURE_VARS) \
+ install-gcc \
+ install-target-libgcc
endef
define Host/Clean