gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace
PATCH v5 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace
The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom CFLAGS_FOR_TARGET or CXXFLAGS_FOR_TARGET values that may be passed.
These are some situations when it is required to pass custom flags on buildong
of libgcc:
* Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810)
* Particular CPU requires specific instructions for HW support
* Deep optimizations
---
Compared to v3 use "=" instead of ":=" which is not actually required here. Compared to v4 simply rebased on top of today's master
--- package/gcc/gcc.mk | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
package/gcc/gcc.mk +9 -3
@@ -100,16 +100,22 @@ HOST_GCC_COMMON_CONF_OPTS = \ HOST_GCC_COMMON_CONF_ENV = \ MAKEINFO=missing +GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) +GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810 # Workaround until it's fixed in 4.5.4 or later ifeq ($(ARCH),powerpc) ifeq ($(findstring x4.5.,x$(GCC_VERSION)),x4.5.) -HOST_GCC_COMMON_CONF_OPTS += --disable-target-optspace +GCC_COMMON_TARGET_CFLAGS = $(filter-out -Os,$(GCC_COMMON_TARGET_CFLAGS)) +GCC_COMMON_TARGET_CXXFLAGS = $(filter-out -Os,$(GCC_COMMON_TARGET_CXXFLAGS)) endif -else -HOST_GCC_COMMON_CONF_OPTS += --enable-target-optspace endif +# Propagate options used for target software building to GCC target libs +HOST_GCC_COMMON_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)" +HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)" + # libitm needs sparc V9+ ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) HOST_GCC_COMMON_CONF_OPTS += --disable-libitm
Signature · 1 line
2.1.0
PATCH v5 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace
Hi Thomas,
Quoted 18 lines · Alexey Brodkin
The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom
CFLAGS_FOR_TARGETorCXXFLAGS_FOR_TARGETvalues that may be passed.These are some situations when it is required to pass custom flags on buildong
of libgcc:
* Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810)
* Particular CPU requires specific instructions for HW support
* Deep optimizationsSigned-off-by Alexey Brodkin <[email protected]>Cc Anton Kolesov <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Peter Korsgaard <[email protected]>Cc Gustavo Zacarias <[email protected]>
Quoted 4 lines
---
Compared to v3 use "=" instead of ":=" which is not actually required here. Compared to v4 simply rebased on top of today's master
---
I just got a reminder about my pending Buildroot patches.
I'm still interested in that patch. We had a long discussion of that change in the past and keeping in mind importance of the item (libgcc) it indeed requires careful testing etc.
But maybe if we're OK with the change patch introduces we may try to apply it and see how many problems autobuilder will produce with it.
-Alexey
Thomas Petazzoni
AppliedPATCH v5 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace
In reply to Alexey BrodkinDear Alexey Brodkin,
Quoted 18 lines · Alexey Brodkin
The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom
CFLAGS_FOR_TARGETorCXXFLAGS_FOR_TARGETvalues that may be passed.These are some situations when it is required to pass custom flags on buildong
of libgcc:
* Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810)
* Particular CPU requires specific instructions for HW support
* Deep optimizationsSigned-off-by Alexey Brodkin <[email protected]>Cc Anton Kolesov <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Peter Korsgaard <[email protected]>Cc Gustavo Zacarias <[email protected]>
Quoted 6 lines
---
Compared to v3 use "=" instead of ":=" which is not actually required here. Compared to v4 simply rebased on top of today's master--- package/gcc/gcc.mk | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
Applied, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com