meson: Use AR via wrapper
diff mbox series

Message ID 20181009192422.20809-1-abrodkin@synopsys.com
State Changes Requested
Headers show
Series
  • meson: Use AR via wrapper
Related show

Commit Message

Alexey Brodkin Oct. 9, 2018, 7:24 p.m. UTC
If building with LTO enabled we need to use GCC wrapper for AR otherwise
archives get created improperly and we see a lot of unresolved symbols
on finla linkage.

In particular this allows to build SystemD with LTO.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Eric Le Bihan <eric.le.bihan.dev@free.fr>
Cc: Mark Corbin <mark.corbin@embecosm.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: Peter Seiderer <ps.report@gmx.net>
---
 package/meson/cross-compilation.conf.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Yann E. MORIN Oct. 9, 2018, 8:34 p.m. UTC | #1
Alexey, All,

On 2018-10-09 22:24 +0300, Alexey Brodkin spake thusly:
> If building with LTO enabled we need to use GCC wrapper for AR otherwise
> archives get created improperly and we see a lot of unresolved symbols
> on finla linkage.
> 
> In particular this allows to build SystemD with LTO.

This is just 'systemd', not SystemD, or any other case-mangling on it
https://www.freedesktop.org/wiki/Software/systemd/ ;-)

There, I'm done with the nit-picking. ;-) Now read on, for the real
review lies below...

> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Cc: Eric Le Bihan <eric.le.bihan.dev@free.fr>
> Cc: Mark Corbin <mark.corbin@embecosm.com>
> Cc: Peter Korsgaard <peter@korsgaard.com>
> Cc: Peter Seiderer <ps.report@gmx.net>
> ---
>  package/meson/cross-compilation.conf.in | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> index 0eec74087b..de4600cc58 100644
> --- a/package/meson/cross-compilation.conf.in
> +++ b/package/meson/cross-compilation.conf.in
> @@ -6,7 +6,7 @@
>  [binaries]
>  c = '@TARGET_CROSS@gcc'
>  cpp = '@TARGET_CROSS@g++'
> -ar = '@TARGET_CROSS@ar'
> +ar = '@TARGET_CROSS@gcc-ar'

I was curioous as to see for how long gcc provided that wrapper. It
turns out that at least 4.9 did.

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

>  strip = '@TARGET_CROSS@strip'
>  pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
>  
> -- 
> 2.16.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Seiderer Oct. 9, 2018, 9:13 p.m. UTC | #2
Hello Alexey,

On Tue, 9 Oct 2018 22:34:06 +0200, "Yann E. MORIN" <yann.morin.1998@free.fr> wrote:

> Alexey, All,
> 
> On 2018-10-09 22:24 +0300, Alexey Brodkin spake thusly:
> > If building with LTO enabled we need to use GCC wrapper for AR otherwise
> > archives get created improperly and we see a lot of unresolved symbols
> > on finla linkage.

From quick review another minor nit: s/finla/final/

Will try to test the patch the next days...

Regards,
Peter

> > 
> > In particular this allows to build SystemD with LTO.
> 
> This is just 'systemd', not SystemD, or any other case-mangling on it
> https://www.freedesktop.org/wiki/Software/systemd/ ;-)
> 
> There, I'm done with the nit-picking. ;-) Now read on, for the real
> review lies below...
> 
> > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> > Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> > Cc: Eric Le Bihan <eric.le.bihan.dev@free.fr>
> > Cc: Mark Corbin <mark.corbin@embecosm.com>
> > Cc: Peter Korsgaard <peter@korsgaard.com>
> > Cc: Peter Seiderer <ps.report@gmx.net>
> > ---
> >  package/meson/cross-compilation.conf.in | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> > index 0eec74087b..de4600cc58 100644
> > --- a/package/meson/cross-compilation.conf.in
> > +++ b/package/meson/cross-compilation.conf.in
> > @@ -6,7 +6,7 @@
> >  [binaries]
> >  c = '@TARGET_CROSS@gcc'
> >  cpp = '@TARGET_CROSS@g++'
> > -ar = '@TARGET_CROSS@ar'
> > +ar = '@TARGET_CROSS@gcc-ar'
> 
> I was curioous as to see for how long gcc provided that wrapper. It
> turns out that at least 4.9 did.
> 
> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> 
> Regards,
> Yann E. MORIN.
> 
> >  strip = '@TARGET_CROSS@strip'
> >  pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
> >  
> > -- 
> > 2.16.2
> > 
> > _______________________________________________
> > buildroot mailing list
> > buildroot@busybox.net
> > http://lists.busybox.net/mailman/listinfo/buildroot
>
Thomas Petazzoni Oct. 10, 2018, 6:43 a.m. UTC | #3
Hello,

On Tue, 9 Oct 2018 22:34:06 +0200, Yann E. MORIN wrote:
> > -ar = '@TARGET_CROSS@ar'
> > +ar = '@TARGET_CROSS@gcc-ar'  
> 
> I was curioous as to see for how long gcc provided that wrapper. It
> turns out that at least 4.9 did.

Actually, we support external toolchains older than gcc 4.9. So no, it
is not good to use gcc-ar unconditionally.

So, it's like I replied on the LTO-enabling patch for systemd, we need
a global Config.in option that tells us if the toolchain supports LTO
or not, and another if the user wants to use LTO.

Best regards,

Thomas

Patch
diff mbox series

diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
index 0eec74087b..de4600cc58 100644
--- a/package/meson/cross-compilation.conf.in
+++ b/package/meson/cross-compilation.conf.in
@@ -6,7 +6,7 @@ 
 [binaries]
 c = '@TARGET_CROSS@gcc'
 cpp = '@TARGET_CROSS@g++'
-ar = '@TARGET_CROSS@ar'
+ar = '@TARGET_CROSS@gcc-ar'
 strip = '@TARGET_CROSS@strip'
 pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'