automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Add --jobserver/jobserver option for GCC -flto=jobserver


From: H.J. Lu
Subject: Re: [PATCH] Add --jobserver/jobserver option for GCC -flto=jobserver
Date: Wed, 28 Oct 2020 17:02:35 -0700

On Wed, Oct 28, 2020 at 1:10 PM Zack Weinberg <zackw@panix.com> wrote:
>
> On Wed, Oct 28, 2020 at 4:00 PM H.J. Lu <hjl.tools@gmail.com> wrote:
> > On Wed, Oct 28, 2020 at 11:40 AM Nick Bowler <nbowler@draconx.ca> wrote:
> > > On 2020-10-28, Zack Weinberg <zackw@panix.com> wrote:
> > > > On Wed, Oct 28, 2020 at 2:16 PM Nick Bowler <nbowler@draconx.ca> wrote:
> > > >> On 2020-10-28, H.J. Lu <hjl.tools@gmail.com> wrote:
> > > >> > GCC introduced some time ago option -flto=jobserver in order to use 
> > > >> > the
> > > >> > GNU Make jobserver when parallelising LTO builds.  It is actually a
> > > >> > similar "recursive make".  When doing a recursive make, you need to
> > > >> > place a '+' character at the beginning of the recipe line in order to
> > > >> > let GNU Make pass the jobserver file descriptors to the child
> > > >> > processes.
> > > >> >
> > > >> > Add the --jobserver option to add a '+' character to the recipe line 
> > > >> > in
> > > >> > program.am and ltlibrary.am.
> > > > ...
> > > >> Surely this needs to be a configure-time option, perhaps combined
> > > >> with some sort of configure test, since otherwise users won't get
> > > >> this choice, right?  As an automake option the choice made by whomever
> > > >> prepares the distribution will get baked into distributed Makefile.in
> > > >> files...
> > > >
> > > > I was going to say something very similar: there shouldn't be an
> > > > option at all.  The decision of whether or not to put + at the
> > > > beginning of the recipe line should be made _when make is run_, based
> > > > on whether -flto=jobserver actually appears in $(LDFLAGS) or wherever.
> > >
> > > Since this check cannot be done inside a rule, testing LDFLAGS at make
> > > time is probably impractical to do portably.
>
> LTO_PLUS = $(if $(findstring -flto=jobserver,$(LDFLAGS)),+)
>
> I think it's okay if this only works with GNU Make.

How does it work?  How does it get inserted?

> > "make -n" will execute the recipe with the "+" prefix.   But --jobserver
> > is off by default.  People who use --jobserver prefer a working GCC
> > -flto=jobserver over a broken "make -n".
>
> What Nick is saying - and I agree with him - is that it's not okay for
> the package maintainer to make that decision.
>

Some packages place + in Makefiles to support -flto=jobserver.


-- 
H.J.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]