Message ID | 20210722040535.3683543-1-stilor@att.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Makefile: ignore long options | expand |
Patch ping... On 7/21/21 9:05 PM, Alexey Neyman wrote: > When searching for options like -n in MAKEFLAGS, current code may result > in a false positive match when make is invoked with long options like > --no-print-directory. This has been observed with certain versions of > host make (e.g. 3.82) while building the Qemu package in buildroot. > > Filter out such long options before searching for one-character options. > > Signed-off-by: Alexey Neyman <stilor@att.net> > --- > Makefile | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/Makefile b/Makefile > index 6c36330eef..401c623a65 100644 > --- a/Makefile > +++ b/Makefile > @@ -129,9 +129,11 @@ endif > # 4. Rules to bridge to other makefiles > > ifneq ($(NINJA),) > -MAKE.n = $(findstring n,$(firstword $(MAKEFLAGS))) > -MAKE.k = $(findstring k,$(firstword $(MAKEFLAGS))) > -MAKE.q = $(findstring q,$(firstword $(MAKEFLAGS))) > +# Filter out long options to avoid flags like --no-print-directory which > +# may result in false positive match for MAKE.n > +MAKE.n = $(findstring n,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > +MAKE.k = $(findstring k,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > +MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq) > NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \ > $(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
On Sat, 24 Jul 2021 at 07:16, Alexey Neyman <stilor@att.net> wrote: > > Patch ping... Ccing Paolo as author of this bit of code... > On 7/21/21 9:05 PM, Alexey Neyman wrote: > > When searching for options like -n in MAKEFLAGS, current code may result > > in a false positive match when make is invoked with long options like > > --no-print-directory. This has been observed with certain versions of > > host make (e.g. 3.82) while building the Qemu package in buildroot. > > > > Filter out such long options before searching for one-character options. > > > > Signed-off-by: Alexey Neyman <stilor@att.net> > > --- > > Makefile | 8 +++++--- > > 1 file changed, 5 insertions(+), 3 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 6c36330eef..401c623a65 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -129,9 +129,11 @@ endif > > # 4. Rules to bridge to other makefiles > > > > ifneq ($(NINJA),) > > -MAKE.n = $(findstring n,$(firstword $(MAKEFLAGS))) > > -MAKE.k = $(findstring k,$(firstword $(MAKEFLAGS))) > > -MAKE.q = $(findstring q,$(firstword $(MAKEFLAGS))) > > +# Filter out long options to avoid flags like --no-print-directory which > > +# may result in false positive match for MAKE.n > > +MAKE.n = $(findstring n,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > > +MAKE.k = $(findstring k,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > > +MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > > MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq) > > NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \ > > $(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \ > -- PMM
diff --git a/Makefile b/Makefile index 6c36330eef..401c623a65 100644 --- a/Makefile +++ b/Makefile @@ -129,9 +129,11 @@ endif # 4. Rules to bridge to other makefiles ifneq ($(NINJA),) -MAKE.n = $(findstring n,$(firstword $(MAKEFLAGS))) -MAKE.k = $(findstring k,$(firstword $(MAKEFLAGS))) -MAKE.q = $(findstring q,$(firstword $(MAKEFLAGS))) +# Filter out long options to avoid flags like --no-print-directory which +# may result in false positive match for MAKE.n +MAKE.n = $(findstring n,$(firstword $(filter-out --%,$(MAKEFLAGS)))) +MAKE.k = $(findstring k,$(firstword $(filter-out --%,$(MAKEFLAGS)))) +MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS)))) MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq) NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \ $(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
When searching for options like -n in MAKEFLAGS, current code may result in a false positive match when make is invoked with long options like --no-print-directory. This has been observed with certain versions of host make (e.g. 3.82) while building the Qemu package in buildroot. Filter out such long options before searching for one-character options. Signed-off-by: Alexey Neyman <stilor@att.net> --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)