1
0
mirror of https://github.com/openwrt/openwrt.git synced 2025-08-12 22:26:10 +08:00

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>
This commit is contained in:
Konstantin Demin
2025-05-02 13:42:42 +03:00
committed by Christian Marangi
parent 89ee79b77c
commit 57841c83d9
4 changed files with 29 additions and 5 deletions

View File

@ -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

View File

@ -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); \

View File

@ -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

View File

@ -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