Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3] gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace
@ 2014-09-01  6:32 Alexey Brodkin
  2014-09-01  7:25 ` Thomas Petazzoni
  0 siblings, 1 reply; 3+ messages in thread
From: Alexey Brodkin @ 2014-09-01  6:32 UTC (permalink / raw)
  To: buildroot

From: Alexey Brodkin <Alexey.Brodkin@synopsys.com>

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

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

Cc: Anton Kolesov <akolesov@synopsys.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: Gustavo Zacarias <gustavo@zacarias.com.ar>
---

Compared to v2 use GCC_COMMON_xxx variables to escape changes in globally
visible variables TARGET_C{XX}FLAGS.

---
 package/gcc/gcc.mk | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index b344a14..6016c57 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -107,16 +107,22 @@ HOST_GCC_COMMON_CONF_OPT = \
 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_OPT += --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_OPT += --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)"
+
 # gcc 4.6.x quadmath requires wchar
 ifneq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)
 HOST_GCC_COMMON_CONF_OPT += --disable-libquadmath
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Buildroot] [PATCH v3] gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace
  2014-09-01  6:32 [Buildroot] [PATCH v3] gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace Alexey Brodkin
@ 2014-09-01  7:25 ` Thomas Petazzoni
  2014-09-01  7:53   ` Alexey Brodkin
  0 siblings, 1 reply; 3+ messages in thread
From: Thomas Petazzoni @ 2014-09-01  7:25 UTC (permalink / raw)
  To: buildroot

Dear Alexey Brodkin,

On Mon,  1 Sep 2014 10:32:45 +0400, Alexey Brodkin wrote:

>  # 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_OPT += --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))

Is there any reason to use := instead of = here? We normally use =
except when it's really necessary to use :=.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Buildroot] [PATCH v3] gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace
  2014-09-01  7:25 ` Thomas Petazzoni
@ 2014-09-01  7:53   ` Alexey Brodkin
  0 siblings, 0 replies; 3+ messages in thread
From: Alexey Brodkin @ 2014-09-01  7:53 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On Mon, 2014-09-01 at 09:25 +0200, Thomas Petazzoni wrote:
> Dear Alexey Brodkin,
> 
> On Mon,  1 Sep 2014 10:32:45 +0400, Alexey Brodkin wrote:
> 
> >  # 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_OPT += --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))
> 
> Is there any reason to use := instead of = here? We normally use =
> except when it's really necessary to use :=.

Nope I think I just copy-pasted it here - which is not the best thing I
could have done. Looks like in this particular case there's no need to
use ":=" and "=" will work well.

So will fix this tiny "misspelling" shortly in v4.

-Alexey

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-09-01  7:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-01  6:32 [Buildroot] [PATCH v3] gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace Alexey Brodkin
2014-09-01  7:25 ` Thomas Petazzoni
2014-09-01  7:53   ` Alexey Brodkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox