Re: git: fb5f03a87cf4 - main - Mk/bsd.lto.mk: add global LTO support for ports

From: Piotr Kubaj <pkubaj_at_anongoth.pl>
Date: Tue, 05 Oct 2021 16:27:15 UTC
On 21-10-04 15:30:56, Mathieu Arnold wrote:
> On Thu, Sep 30, 2021 at 06:34:20PM +0000, Piotr Kubaj wrote:
> > The branch main has been updated by pkubaj:
> > 
> > URL: https://cgit.FreeBSD.org/ports/commit/?id=fb5f03a87cf432751fae1f0ae7f29c9d4fc65917
> > 
> > commit fb5f03a87cf432751fae1f0ae7f29c9d4fc65917
> > Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
> > AuthorDate: 2021-09-30 18:27:50 +0000
> > Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
> > CommitDate: 2021-09-30 18:27:50 +0000
> > 
> >     Mk/bsd.lto.mk: add global LTO support for ports
> >     
> >     It's well known that LTO provides both performance and size benefits for
> >     binaries.
> >     
> >     Add preliminary, opt-in support for global LTO enforcement to ports. Ports that
> >     provide LTO option on their own and the ones that don't work with LTO will need
> >     to set LTO_UNSAFE in the future.
> >     
> >     PR:     258536
> 
> Not to be picky about approval and all, but this was added to the
> framework, and the framework is maintained by portmgr.  When you want to
> add something to it, you must consult with portmgr before anything gets
> committed.
> 
> In that case, we would have told you not to do it this way, but to make
> this a Mk/Uses/lto.mk.
> 
> So please, turn this into a USES=lto.

I did consult, but no one replied.

IMO adding it to USES is not a good idea, since USES are supposed to be used per port and my idea was to force LTO for all ports, same way that SSP already does.

> 
> > ---
> >  Mk/bsd.lto.mk  | 10 ++++++++++
> >  Mk/bsd.port.mk |  4 ++++
> >  2 files changed, 14 insertions(+)
> > 
> > diff --git a/Mk/bsd.lto.mk b/Mk/bsd.lto.mk
> > new file mode 100644
> > index 000000000000..c2a079ea28bb
> > --- /dev/null
> > +++ b/Mk/bsd.lto.mk
> > @@ -0,0 +1,10 @@
> > +# LTO Support
> > +
> > +LTO_Include_MAINTAINER=	pkubaj@FreeBSD.org
> > +
> > +.if !defined(LTO_UNSAFE)
> > +# Overridable as a user may want to use -flto
> > +LTO_CFLAGS?=	-flto=thin
> > +CFLAGS+=	${LTO_CFLAGS}
> > +CXXFLAGS+=	${LTO_CFLAGS}
> > +.endif
> > diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
> > index 337d3f6be6a6..493b15a59fff 100644
> > --- a/Mk/bsd.port.mk
> > +++ b/Mk/bsd.port.mk
> > @@ -1799,6 +1799,10 @@ INSTALL_TARGET:=	${INSTALL_TARGET:S/^install-strip$/install/g}
> >  .endif
> >  .endif
> >  
> > +.if defined(USE_LTO)
> > +.include "${PORTSDIR}/Mk/bsd.lto.mk"
> > +.endif
> > +
> >  .if !defined(WITHOUT_SSP)
> >  .include "${PORTSDIR}/Mk/bsd.ssp.mk"
> >  .endif
> > 
> 
> -- 
> Mathieu Arnold