• I
    tools/perf/build: Fix O=/some/dir perf.o type of targets · 1f7c645a
    Ingo Molnar 提交于
    If someone specifies a single target, mixed with O=, the following way:
    
        hubble:~/tip/tools/perf> make O=/tmp/perf util/stat.o
        BUILD: Doing 'make -j8' parallel build
        gcc  -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security -Wformat-y2k [...]
    
    The build might even fail, if a target depends on other targets:
    
        hubble:~/tip/tools/perf> make O=/tmp/perf perf.o
        ...
        perf.c: In function ‘handle_options’:
        perf.c:155:21: error: ‘PERF_HTML_PATH’ undeclared (first use in this function)
    
    The correct way to invoke such targets is:
    
        hubble:~/tip/tools/perf> make O=/tmp/perf /tmp/perf/perf.o
        BUILD: Doing 'make -j8' parallel build
        GEN /tmp/perf/common-cmds.h
        CC /tmp/perf/perf.o
    
    But that's unnecessary typing and it's also easy to mistakenly build into the
    source directory.
    
    To fix this remove the generic suffix rules and add redirection to $(OUTPUT)
    for the most popular .o targets.
    
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lkml.kernel.org/n/tip-mk0oiukmhgSbrll6chrPkkqr@git.kernel.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
    1f7c645a
Makefile.perf 28.0 KB