Em Mon, Dec 17, 2018 at 04:39:12PM +0300, Konstantin Khlebnikov escreveu:
> On 17.12.2018 14:47, Konstantin Khlebnikov wrote:
> > tools/perf/Makefile conflicts with option '-j'.
> > The rest options must be passed as is.
> > 
> > Signed-off-by: Konstantin Khlebnikov <[email protected]>
> > ---
> >   tools/perf/Makefile |    2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/perf/Makefile b/tools/perf/Makefile
> > index 7902a5681fc8..989c3d2f847b 100644
> > --- a/tools/perf/Makefile
> > +++ b/tools/perf/Makefile
> > @@ -16,7 +16,7 @@
> >   #
> >   # We don't want to pass along options like -j:
> >   #
> > -unexport MAKEFLAGS
> > +MAKEFLAGS := $(filter --j% -j,$(MAKEFLAGS))
> >   #
> >   # Do a parallel build with multiple jobs, based on the number of CPUs 
> > online
> > 
> 
> Oops, this breaks static build because if LDFLAGS=-static is in command line 
> then
> all assignments in makefile are ignored while Makefile.config have a lot of 
> that.

Please next time use 'git blame' and read the cset where the behaviour
you think is wrong was introduced, then CC the involved persons.

In this case, this is the cset where that line was introduced:

commit 684f434cc05a122938b75e055d7d799f1dd58d55
Author: Ingo Molnar <[email protected]>
Date:   Fri Oct 4 11:11:32 2013 +0200

    tools/perf/build: Exclude MAKEFLAGS from nested invocation
    
    In case the user specifies MAKEFLAGS as an environment variable,
    or uses 'make -jN' explicitly, the options can conflict and result in:
    
        BUILD: Doing 'make -j8' parallel build
        make[1]: warning: -jN forced in submake: disabling jobserver mode.
        GEN common-cmds.h
        make[1]: *** write jobserver: Bad file descriptor.  Stop.
    
    Make sure we invoke the main makefile in a pristine state.
    
    Users who want to do something non-standard can use the:
    
      make -f Makefile.perf
    
    method to invoke the makefile.
    
    Cc: Arnaldo Carvalho de Melo <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: David Ahern <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Link: http://lkml.kernel.org/n/[email protected]
    Signed-off-by: Ingo Molnar <[email protected]>

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 6f6f13a13bb6..74f52d8f9631 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -1,3 +1,10 @@
+#
+# This is a simple wrapper Makefile that calls the main Makefile.perf
+# with a -j option to do parallel builds
+#
+# If you want to invoke the perf build in some non-standard way then
+# you can use the 'make -f Makefile.perf' method to invoke it.
+#
 
 #
 # Clear out the built-in rules GNU make defines by default (such as .o 
targets),
@@ -5,6 +12,11 @@
 #
 .SUFFIXES:
 
+#
+# We don't want to pass along options like -j:
+#
+unexport MAKEFLAGS
+
 #
 # Do a parallel build with multiple jobs, based on the number of CPUs online
 # in this system: 'make -j8' on a 8-CPU system, etc.
@@ -18,14 +30,12 @@ ifeq ($(JOBS),)
   endif
 endif
 
-export JOBS
-
 define print_msg
   @printf '    BUILD: Doing '\''make \033[33m-j'$(JOBS)'\033[m'\'' parallel 
build\n'
 endef
 
 define make
-  @$(MAKE) -f Makefile.perf --no-print-directory -j$(JOBS) $@
+  @$(MAKE) -f Makefile.perf --no-print-directory -j$(JOBS) O=$(O) $@
 endef
 
 #

Reply via email to