Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] package/gmp: fix target build with host gcc 4.9
@ 2024-03-12 19:09 Brandon Maier via buildroot
  2024-03-15 20:43 ` Arnout Vandecappelle via buildroot
  2024-03-15 23:43 ` [Buildroot] [PATCH v2 " Brandon Maier via buildroot
  0 siblings, 2 replies; 6+ messages in thread
From: Brandon Maier via buildroot @ 2024-03-12 19:09 UTC (permalink / raw)
  To: buildroot; +Cc: Brandon Maier, Thomas Petazzoni

GMP does not build if the host gcc is v4.9 due to the following error

  gen-sieve.c: In function 'setmask':
  gen-sieve.c:99:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
     for (unsigned i = 0; i < 2 * a * b; ++i)
     ^
  gen-sieve.c:99:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code

The gen-sieve utility was added in GMP v6.3.0. It is built using
CC_FOR_BUILD (host compiler) during cross compilation as it generates
build files. Autoconf does not have a macro for add -std=c99 to
CC_FOR_BUILD, so it must be set manually.

Signed-off-by: Brandon Maier <brandon.maier@collins.com>
---
 package/gmp/gmp.mk | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk
index bd401c6a80..85836a8c72 100644
--- a/package/gmp/gmp.mk
+++ b/package/gmp/gmp.mk
@@ -14,6 +14,11 @@ GMP_CPE_ID_VENDOR = gmplib
 GMP_DEPENDENCIES = host-m4
 HOST_GMP_DEPENDENCIES = host-m4
 
+# The compiler for build requires C99 but GCC 4.9 defaults to C89
+ifeq ($(BR2_HOST_GCC_AT_LEAST_5),)
+GMP_CONF_ENV += CC_FOR_BUILD="$(HOSTCC) -std=c99"
+endif
+
 # GMP doesn't support assembly for coldfire or mips r6 ISA yet
 # Disable for ARM v7m since it has different asm constraints
 ifeq ($(BR2_m68k_cf)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6)$(BR2_ARM_CPU_ARMV7M),y)
-- 
2.44.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 1/1] package/gmp: fix target build with host gcc 4.9
  2024-03-12 19:09 [Buildroot] [PATCH 1/1] package/gmp: fix target build with host gcc 4.9 Brandon Maier via buildroot
@ 2024-03-15 20:43 ` Arnout Vandecappelle via buildroot
  2024-03-15 23:37   ` [Buildroot] [External] " Maier, Brandon Collins via buildroot
  2024-03-15 23:43 ` [Buildroot] [PATCH v2 " Brandon Maier via buildroot
  1 sibling, 1 reply; 6+ messages in thread
From: Arnout Vandecappelle via buildroot @ 2024-03-15 20:43 UTC (permalink / raw)
  To: Brandon Maier, buildroot; +Cc: Thomas Petazzoni



On 12/03/2024 20:09, Brandon Maier via buildroot wrote:
> GMP does not build if the host gcc is v4.9 due to the following error

  Oh boy, are you still using host GCC 4.9? Poor man...

> 
>    gen-sieve.c: In function 'setmask':
>    gen-sieve.c:99:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
>       for (unsigned i = 0; i < 2 * a * b; ++i)
>       ^
>    gen-sieve.c:99:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
> 
> The gen-sieve utility was added in GMP v6.3.0. It is built using
> CC_FOR_BUILD (host compiler) during cross compilation as it generates
> build files. Autoconf does not have a macro for add -std=c99 to
> CC_FOR_BUILD, so it must be set manually.
> 
> Signed-off-by: Brandon Maier <brandon.maier@collins.com>
> ---
>   package/gmp/gmp.mk | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk
> index bd401c6a80..85836a8c72 100644
> --- a/package/gmp/gmp.mk
> +++ b/package/gmp/gmp.mk
> @@ -14,6 +14,11 @@ GMP_CPE_ID_VENDOR = gmplib
>   GMP_DEPENDENCIES = host-m4
>   HOST_GMP_DEPENDENCIES = host-m4
>   
> +# The compiler for build requires C99 but GCC 4.9 defaults to C89

  I don't think the comment is really needed.

> +ifeq ($(BR2_HOST_GCC_AT_LEAST_5),)

  In all the other places where we pass -std=c99, we do that unconditionally. So 
I'd do the same here.

> +GMP_CONF_ENV += CC_FOR_BUILD="$(HOSTCC) -std=c99"

  Don't you need something similar for host-gmp as well? All the rest I could 
have fixed up while applying, but I don't have a host gcc 4.9 with which to test 
host-gmp :-)

  Regards,
  Arnout

> +endif
> +
>   # GMP doesn't support assembly for coldfire or mips r6 ISA yet
>   # Disable for ARM v7m since it has different asm constraints
>   ifeq ($(BR2_m68k_cf)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6)$(BR2_ARM_CPU_ARMV7M),y)
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [External] Re: [PATCH 1/1] package/gmp: fix target build with host gcc 4.9
  2024-03-15 20:43 ` Arnout Vandecappelle via buildroot
@ 2024-03-15 23:37   ` Maier, Brandon Collins via buildroot
  0 siblings, 0 replies; 6+ messages in thread
From: Maier, Brandon Collins via buildroot @ 2024-03-15 23:37 UTC (permalink / raw)
  To: Arnout Vandecappelle, buildroot@buildroot.org; +Cc: Thomas Petazzoni

Hi Arnout,

> -----Original Message-----
> From: Arnout Vandecappelle <arnout@mind.be>
> Sent: Friday, March 15, 2024 3:44 PM
> To: Maier, Brandon Collins <Brandon.Maier@collins.com>;
> buildroot@buildroot.org
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Subject: [External] Re: [Buildroot] [PATCH 1/1] package/gmp: fix target build with
> host gcc 4.9
>
>
>
> On 12/03/2024 20:09, Brandon Maier via buildroot wrote:
> > GMP does not build if the host gcc is v4.9 due to the following error
>
>   Oh boy, are you still using host GCC 4.9? Poor man...

Yeah, it's not great

>
> >
> >    gen-sieve.c: In function 'setmask':
> >    gen-sieve.c:99:3: error: 'for' loop initial declarations are only allowed in C99 or
> C11 mode
> >       for (unsigned i = 0; i < 2 * a * b; ++i)
> >       ^
> >    gen-sieve.c:99:3: note: use option -std=c99, -std=gnu99, -std=c11 or -
> std=gnu11 to compile your code
> >
> > The gen-sieve utility was added in GMP v6.3.0. It is built using
> > CC_FOR_BUILD (host compiler) during cross compilation as it generates
> > build files. Autoconf does not have a macro for add -std=c99 to
> > CC_FOR_BUILD, so it must be set manually.
> >
> > Signed-off-by: Brandon Maier <brandon.maier@collins.com>
> > ---
> >   package/gmp/gmp.mk | 5 +++++
> >   1 file changed, 5 insertions(+)
> >
> > diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk
> > index bd401c6a80..85836a8c72 100644
> > --- a/package/gmp/gmp.mk
> > +++ b/package/gmp/gmp.mk
> > @@ -14,6 +14,11 @@ GMP_CPE_ID_VENDOR = gmplib
> >   GMP_DEPENDENCIES = host-m4
> >   HOST_GMP_DEPENDENCIES = host-m4
> >
> > +# The compiler for build requires C99 but GCC 4.9 defaults to C89
>
>   I don't think the comment is really needed.
>
> > +ifeq ($(BR2_HOST_GCC_AT_LEAST_5),)
>
>   In all the other places where we pass -std=c99, we do that unconditionally. So
> I'd do the same here.
>
> > +GMP_CONF_ENV += CC_FOR_BUILD="$(HOSTCC) -std=c99"
>
>   Don't you need something similar for host-gmp as well? All the rest I could
> have fixed up while applying, but I don't have a host gcc 4.9 with which to test
> host-gmp :-)

The issue only occurs when cross-compiling because Autoconf does not set -std=c99 for the host compiler. When host compiling, Autoconf uses the same compiler for target as host, and target it does correctly enable -std=c99 using AC_PROG_CC_C99. As far as I could find, there is no AC_PROG_CC_C99 equivalent for the host compiler.

That's my understanding anyway, I have very little experience dealing with Autotools.

Agree with the other comments, I can resend with those fixed.

Thanks,
Brandon
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH v2 1/1] package/gmp: fix target build with host gcc 4.9
  2024-03-12 19:09 [Buildroot] [PATCH 1/1] package/gmp: fix target build with host gcc 4.9 Brandon Maier via buildroot
  2024-03-15 20:43 ` Arnout Vandecappelle via buildroot
@ 2024-03-15 23:43 ` Brandon Maier via buildroot
  2024-03-24 15:44   ` Arnout Vandecappelle via buildroot
  2024-03-25  9:04   ` Peter Korsgaard
  1 sibling, 2 replies; 6+ messages in thread
From: Brandon Maier via buildroot @ 2024-03-15 23:43 UTC (permalink / raw)
  To: buildroot; +Cc: Brandon Maier

GMP does not build if the host gcc is v4.9 due to the following error

  gen-sieve.c: In function 'setmask':
  gen-sieve.c:99:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
     for (unsigned i = 0; i < 2 * a * b; ++i)
     ^
  gen-sieve.c:99:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code

The gen-sieve utility was added in GMP v6.3.0. It is built using
CC_FOR_BUILD (host compiler) during cross compilation as it generates
build files. Autoconf does not have a macro for add -std=c99 to
CC_FOR_BUILD, so it must be set manually.

Signed-off-by: Brandon Maier <brandon.maier@collins.com>
---
v1: https://patchwork.ozlabs.org/project/buildroot/patch/20240312190954.71227-1-brandon.maier@collins.com/

v2:
- remove unnecessary comment and ifdef check
---
 package/gmp/gmp.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk
index bd401c6a80..7e8da9025c 100644
--- a/package/gmp/gmp.mk
+++ b/package/gmp/gmp.mk
@@ -14,6 +14,8 @@ GMP_CPE_ID_VENDOR = gmplib
 GMP_DEPENDENCIES = host-m4
 HOST_GMP_DEPENDENCIES = host-m4
 
+GMP_CONF_ENV += CC_FOR_BUILD="$(HOSTCC) -std=c99"
+
 # GMP doesn't support assembly for coldfire or mips r6 ISA yet
 # Disable for ARM v7m since it has different asm constraints
 ifeq ($(BR2_m68k_cf)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6)$(BR2_ARM_CPU_ARMV7M),y)
-- 
2.44.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH v2 1/1] package/gmp: fix target build with host gcc 4.9
  2024-03-15 23:43 ` [Buildroot] [PATCH v2 " Brandon Maier via buildroot
@ 2024-03-24 15:44   ` Arnout Vandecappelle via buildroot
  2024-03-25  9:04   ` Peter Korsgaard
  1 sibling, 0 replies; 6+ messages in thread
From: Arnout Vandecappelle via buildroot @ 2024-03-24 15:44 UTC (permalink / raw)
  To: Brandon Maier, buildroot

  Hi Brandon,

On 16/03/2024 00:43, Brandon Maier wrote:
> GMP does not build if the host gcc is v4.9 due to the following error
> 
>    gen-sieve.c: In function 'setmask':
>    gen-sieve.c:99:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
>       for (unsigned i = 0; i < 2 * a * b; ++i)
>       ^
>    gen-sieve.c:99:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
> 
> The gen-sieve utility was added in GMP v6.3.0. It is built using
> CC_FOR_BUILD (host compiler) during cross compilation as it generates
> build files. Autoconf does not have a macro for add -std=c99 to
> CC_FOR_BUILD, so it must be set manually.

  I've added the explanation you gave why this is not needed for the target.

  Applied to master, thanks.

  Regards,
  Arnout

> 
> Signed-off-by: Brandon Maier <brandon.maier@collins.com>
> ---
> v1: https://patchwork.ozlabs.org/project/buildroot/patch/20240312190954.71227-1-brandon.maier@collins.com/
> 
> v2:
> - remove unnecessary comment and ifdef check
> ---
>   package/gmp/gmp.mk | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk
> index bd401c6a80..7e8da9025c 100644
> --- a/package/gmp/gmp.mk
> +++ b/package/gmp/gmp.mk
> @@ -14,6 +14,8 @@ GMP_CPE_ID_VENDOR = gmplib
>   GMP_DEPENDENCIES = host-m4
>   HOST_GMP_DEPENDENCIES = host-m4
>   
> +GMP_CONF_ENV += CC_FOR_BUILD="$(HOSTCC) -std=c99"
> +
>   # GMP doesn't support assembly for coldfire or mips r6 ISA yet
>   # Disable for ARM v7m since it has different asm constraints
>   ifeq ($(BR2_m68k_cf)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6)$(BR2_ARM_CPU_ARMV7M),y)
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH v2 1/1] package/gmp: fix target build with host gcc 4.9
  2024-03-15 23:43 ` [Buildroot] [PATCH v2 " Brandon Maier via buildroot
  2024-03-24 15:44   ` Arnout Vandecappelle via buildroot
@ 2024-03-25  9:04   ` Peter Korsgaard
  1 sibling, 0 replies; 6+ messages in thread
From: Peter Korsgaard @ 2024-03-25  9:04 UTC (permalink / raw)
  To: Brandon Maier via buildroot; +Cc: Brandon Maier

>>>>> "Brandon" == Brandon Maier via buildroot <buildroot@buildroot.org> writes:

 > GMP does not build if the host gcc is v4.9 due to the following error
 >   gen-sieve.c: In function 'setmask':
 >   gen-sieve.c:99:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
 >      for (unsigned i = 0; i < 2 * a * b; ++i)
 >      ^
 >   gen-sieve.c:99:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code

 > The gen-sieve utility was added in GMP v6.3.0. It is built using
 > CC_FOR_BUILD (host compiler) during cross compilation as it generates
 > build files. Autoconf does not have a macro for add -std=c99 to
 > CC_FOR_BUILD, so it must be set manually.

 > Signed-off-by: Brandon Maier <brandon.maier@collins.com>
 > ---
 > v1: https://patchwork.ozlabs.org/project/buildroot/patch/20240312190954.71227-1-brandon.maier@collins.com/

 > v2:
 > - remove unnecessary comment and ifdef check

Committed to 2024.02.x and 2023.11.x, thanks.

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2024-03-25  9:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-12 19:09 [Buildroot] [PATCH 1/1] package/gmp: fix target build with host gcc 4.9 Brandon Maier via buildroot
2024-03-15 20:43 ` Arnout Vandecappelle via buildroot
2024-03-15 23:37   ` [Buildroot] [External] " Maier, Brandon Collins via buildroot
2024-03-15 23:43 ` [Buildroot] [PATCH v2 " Brandon Maier via buildroot
2024-03-24 15:44   ` Arnout Vandecappelle via buildroot
2024-03-25  9:04   ` Peter Korsgaard

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