From: Konstantin Demin Date: Fri, 2 May 2025 10:42:42 +0000 (+0300) Subject: toolchain: gcc: make config consistent with glibc/musl X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57841c83d9c1503a19212766639d17ae5019bb8c;p=thirdparty%2Fopenwrt.git 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 Link: https://github.com/openwrt/openwrt/pull/18646 Signed-off-by: Christian Marangi --- diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk index 0ccf55bd313..a5837493c25 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 78a5576bffb..6a190a14d7d 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 7cb4a73dbce..6b8a66798bb 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 31d6f675abe..83c17c8823b 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