All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCHv2] package/gcc: cleanup arch/cpu combinations
@ 2014-08-19 21:16 Gustavo Zacarias
  2014-08-20 12:24 ` Thomas Petazzoni
  0 siblings, 1 reply; 5+ messages in thread
From: Gustavo Zacarias @ 2014-08-19 21:16 UTC (permalink / raw)
  To: buildroot

Cleanup arch/cpu combination limits, we had super-wide depends and it
doesn't help readability.

Make the bool/depends/select order the same for all entries.

Drop redundant limitations, for example sparc* if sparc wasn't
supported in general.

Power8 requires at least gcc 4.9.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
 package/gcc/Config.in.host | 76 ++++++++++++++++++++++++++++++++++++----------
 1 file changed, 60 insertions(+), 16 deletions(-)

diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index b29bacb..79e924e 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -19,58 +19,102 @@ choice
 	  Select the version of gcc you wish to use.
 
 	config BR2_GCC_VERSION_4_2_2_AVR32_2_1_5
-		depends on BR2_avr32
 		bool "gcc 4.2.2-avr32-2.1.5"
+		# Only supported architecture
+		depends on BR2_avr32
 
 	config BR2_GCC_VERSION_4_4_X
-		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_atom && !BR2_x86_jaguar && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 && !BR2_pj4 && !BR2_powerpc64le
 		bool "gcc 4.4.x"
+		# Unsupported architectures
+		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc \
+			&& !BR2_avr32 && !BR2_powerpc64le
+		# Unsupported ARM cores
+		depends on !BR2_cortex_a5 && !BR2_cortex_a7 && \
+			!BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_fa526 && \
+			!BR2_pj4
 		# ARM EABIhf support appeared in gcc 4.6
 		depends on !BR2_ARM_EABIHF
-		# VFPv4 support appeared in gcc 4.5
+		# ARM VFPv4 support appeared in gcc 4.5
 		depends on !BR2_ARM_FPU_VFPV4 && !BR2_ARM_FPU_VFPV4D16
+		# Unsupported PPC cores
+		depends on !BR2_powerpc_476 && !BR2_powerpc_476fp \
+			&& !BR2_power8
+		# Unsupported x86 cores
+		depends on !BR2_x86_atom && !BR2_x86_corei7 && !BR2_x86_jaguar
 		# musl patches only for gcc 4.7+
 		depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL
 
 	config BR2_GCC_VERSION_4_5_X
-		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_fa526 && !BR2_pj4 && !BR2_powerpc64le
-		select BR2_GCC_NEEDS_MPC
+		bool "gcc 4.5.x"
+		# Unsupported architectures
+		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc \
+			&& !BR2_avr32  && !BR2_powerpc64le
+		# Unsupported ARM cores
+		depends on !BR2_cortex_a7 && !BR2_cortex_a12 && \
+			!BR2_cortex_a15 && !BR2_fa526 && !BR2_pj4
+		# Unsupported PPC cores
+		depends on !BR2_power8
+		# Unsupported SPARC cores
+		depends on !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 \
+			&& !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
+		# Unsupported X86 cores
+		depends on !BR2_x86_corei7 && !BR2_x86_jaguar
 		# ARM EABIhf support appeared in gcc 4.6
 		depends on !BR2_ARM_EABIHF
 		# musl patches only for gcc 4.7+
 		depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL
-		bool "gcc 4.5.x"
+		select BR2_GCC_NEEDS_MPC
 
 	config BR2_GCC_VERSION_4_7_X
-		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a12 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_pj4 && !BR2_powerpc64le
-		select BR2_GCC_NEEDS_MPC
 		bool "gcc 4.7.x"
+		# Unsupported architectures
+		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc \
+			&& !BR2_avr32 && !BR2_bfin && !BR2_powerpc64le
+		# Unsupported ARM cores
+		depends on !BR2_cortex_a12 && !BR2_pj4
+		# Unsupported PPC cores
+		depends on !BR2_power8
+		# Unsupported SPARC cores
+		depends on !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 \
+			&& !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
+		# Unsupported x86 cores
+		depends on !BR2_x86_jaguar
+		select BR2_GCC_NEEDS_MPC
 
 	config BR2_GCC_VERSION_4_8_X
-		depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a12 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_powerpc64le && !BR2_sparc
+		bool "gcc 4.8.x"
+		# Unsupported architectures
+		depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 \
+			&& !BR2_bfin && !BR2_powerpc64le && !BR2_sparc
+		# Unsupported ARM cores
+		depends on !BR2_cortex_a12
+		# Unsupported PPC cores
+		depends on !BR2_power8
 		select BR2_GCC_NEEDS_MPC
 		select BR2_GCC_SUPPORTS_GRAPHITE
-		bool "gcc 4.8.x"
 
 	config BR2_GCC_VERSION_4_8_ARC
+		bool "gcc 4.8-arc"
+		# Only supported architecture
 		depends on BR2_arc
 		select BR2_GCC_NEEDS_MPC
-		bool "gcc 4.8-arc"
 
 	config BR2_GCC_VERSION_4_9_X
-		depends on !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_sparc
+		bool "gcc 4.9.x"
+		# Unsupported architectures
+		depends on !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_sparc
 		# PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
 		select BR2_GCC_NEEDS_MPC
 		select BR2_GCC_SUPPORTS_GRAPHITE
-		bool "gcc 4.9.x"
 
 	config BR2_GCC_VERSION_SNAP
-		depends on !BR2_arc && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_sparc
-		select BR2_GCC_NEEDS_MPC
+		bool "gcc snapshot"
+		# Unsupported architectures
+		depends on !BR2_arc && !BR2_avr32 && !BR2_sparc
 		# musl patches only for gcc 4.7+
 		depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL
+		select BR2_GCC_NEEDS_MPC
 		select BR2_GCC_SUPPORTS_GRAPHITE
-		bool "gcc snapshot"
 endchoice
 
 config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
-- 
1.8.5.5

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

* [Buildroot] [PATCHv2] package/gcc: cleanup arch/cpu combinations
  2014-08-19 21:16 [Buildroot] [PATCHv2] package/gcc: cleanup arch/cpu combinations Gustavo Zacarias
@ 2014-08-20 12:24 ` Thomas Petazzoni
  2014-08-20 12:26   ` Gustavo Zacarias
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2014-08-20 12:24 UTC (permalink / raw)
  To: buildroot

Dear Gustavo Zacarias,

On Tue, 19 Aug 2014 18:16:38 -0300, Gustavo Zacarias wrote:
> Cleanup arch/cpu combination limits, we had super-wide depends and it
> doesn't help readability.
> 
> Make the bool/depends/select order the same for all entries.
> 
> Drop redundant limitations, for example sparc* if sparc wasn't
> supported in general.
> 
> Power8 requires at least gcc 4.9.
> 
> Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

What do you think of a solution like:

  [Buildroot] [PATCH] toolchain/gcc: Introduce BR2_ARCH_HAS_GCC_x_y_PLUS

which Mischa Jonker posted a while ago (but didn't push strong enough
to get it merged) ?

Thanks,

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

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

* [Buildroot] [PATCHv2] package/gcc: cleanup arch/cpu combinations
  2014-08-20 12:24 ` Thomas Petazzoni
@ 2014-08-20 12:26   ` Gustavo Zacarias
  2014-08-20 13:42     ` Thomas Petazzoni
  0 siblings, 1 reply; 5+ messages in thread
From: Gustavo Zacarias @ 2014-08-20 12:26 UTC (permalink / raw)
  To: buildroot

On 08/20/2014 09:24 AM, Thomas Petazzoni wrote:
> What do you think of a solution like:
> 
>   [Buildroot] [PATCH] toolchain/gcc: Introduce BR2_ARCH_HAS_GCC_x_y_PLUS
> 
> which Mischa Jonker posted a while ago (but didn't push strong enough
> to get it merged) ?

Hi.
I thought about that but it really doesn't help in this scenario in a
complete way, since a given gcc may be broken (like 4.9.x was for ppc
e500) even though it includes support because of bitrot or bugs, like
some sparc targets, or blackfin for that matter.
Regards.

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

* [Buildroot] [PATCHv2] package/gcc: cleanup arch/cpu combinations
  2014-08-20 12:26   ` Gustavo Zacarias
@ 2014-08-20 13:42     ` Thomas Petazzoni
  2014-08-20 13:49       ` Gustavo Zacarias
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2014-08-20 13:42 UTC (permalink / raw)
  To: buildroot

Dear Gustavo Zacarias,

On Wed, 20 Aug 2014 09:26:48 -0300, Gustavo Zacarias wrote:

> I thought about that but it really doesn't help in this scenario in a
> complete way, since a given gcc may be broken (like 4.9.x was for ppc
> e500) even though it includes support because of bitrot or bugs, like
> some sparc targets, or blackfin for that matter.

Right, but I believe it's two different (but related) matters:

 * On one hand, Mischa's approach is good to specify starting from
   which gcc version this or that architecture or architecture variant
   was supported. It allows to encode the "theory".

 * On the other hand, additional 'depends on' can be added
   exceptionally to prevent certain gcc versions from being selected,
   when they are supposed to work in theory, but in practice do not
   work due to bugs (that are likely to be fixed in the next point
   release).

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

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

* [Buildroot] [PATCHv2] package/gcc: cleanup arch/cpu combinations
  2014-08-20 13:42     ` Thomas Petazzoni
@ 2014-08-20 13:49       ` Gustavo Zacarias
  0 siblings, 0 replies; 5+ messages in thread
From: Gustavo Zacarias @ 2014-08-20 13:49 UTC (permalink / raw)
  To: buildroot

On 08/20/2014 10:42 AM, Thomas Petazzoni wrote:

> Right, but I believe it's two different (but related) matters:
> 
>  * On one hand, Mischa's approach is good to specify starting from
>    which gcc version this or that architecture or architecture variant
>    was supported. It allows to encode the "theory".
> 
>  * On the other hand, additional 'depends on' can be added
>    exceptionally to prevent certain gcc versions from being selected,
>    when they are supposed to work in theory, but in practice do not
>    work due to bugs (that are likely to be fixed in the next point
>    release).

True.
My basic aim here was to make things more legible when i was putting a
limit on power8 since it was too cluttered already with a single depends
being 300 characters wide - hardly legible and very prone to
mistakes/redundancy.
I think we can commit this and "upgrade it" so to speak when Mischa's
patchset is in to clean it up more.
Regards.

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

end of thread, other threads:[~2014-08-20 13:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-19 21:16 [Buildroot] [PATCHv2] package/gcc: cleanup arch/cpu combinations Gustavo Zacarias
2014-08-20 12:24 ` Thomas Petazzoni
2014-08-20 12:26   ` Gustavo Zacarias
2014-08-20 13:42     ` Thomas Petazzoni
2014-08-20 13:49       ` Gustavo Zacarias

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.