• Jiri Olsa's avatar
    perf tools: Force fixdep compilation at the start of the build · abb26210
    Jiri Olsa authored
    The fixdep tool needs to be built before everything else, because it fixes
    every object dependency file.
    
    We handle this currently by making all objects to depend on fixdep, which is
    error prone and is easily forgotten when new object is added.
    
    Instead of this, this patch force fixdep tool to be built as the first target
    in the separate make session. This way we don't need to handle extra fixdep
    dependencies and we are certain there's no fixdep race with any parallel make
    job.
    
    Committer notes:
    
    Testing it:
    
    Before:
    
      $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make -k O=/tmp/build/perf -C tools/perf install-bin
      make: Entering directory '/home/acme/git/linux/tools/perf'
        BUILD:   Doing 'make -j4' parallel build
    
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      ...                          gtk2: [ on  ]
      ...                      libaudit: [ on  ]
      ...                        libbfd: [ on  ]
      ...                        libelf: [ on  ]
      ...                       libnuma: [ on  ]
      ...        numa_num_possible_cpus: [ on  ]
      ...                       libperl: [ on  ]
      ...                     libpython: [ on  ]
      ...                      libslang: [ on  ]
      ...                     libcrypto: [ on  ]
      ...                     libunwind: [ on  ]
      ...            libdw-dwarf-unwind: [ on  ]
      ...                          zlib: [ on  ]
      ...                          lzma: [ on  ]
      ...                     get_cpuid: [ on  ]
      ...                           bpf: [ on  ]
    
        GEN      /tmp/build/perf/common-cmds.h
        HOSTCC   /tmp/build/perf/fixdep.o
        HOSTLD   /tmp/build/perf/fixdep-in.o
        LINK     /tmp/build/perf/fixdep
        MKDIR    /tmp/build/perf/pmu-events/
        HOSTCC   /tmp/build/perf/pmu-events/json.o
        MKDIR    /tmp/build/perf/pmu-events/
        HOSTCC   /tmp/build/perf/pmu-events/jsmn.o
        HOSTCC   /tmp/build/perf/pmu-events/jevents.o
        HOSTLD   /tmp/build/perf/pmu-events/jevents-in.o
        PERF_VERSION = 4.9.rc8.g868cd5
        CC       /tmp/build/perf/perf-read-vdso32
      <SNIP>
    
    After:
    
      $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make -k O=/tmp/build/perf -C tools/perf install-bin
      make: Entering directory '/home/acme/git/linux/tools/perf'
        BUILD:   Doing 'make -j4' parallel build
        HOSTCC   /tmp/build/perf/fixdep.o
        HOSTLD   /tmp/build/perf/fixdep-in.o
        LINK     /tmp/build/perf/fixdep
    
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      ...                          gtk2: [ on  ]
      ...                      libaudit: [ on  ]
      ...                        libbfd: [ on  ]
      ...                        libelf: [ on  ]
      ...                       libnuma: [ on  ]
      ...        numa_num_possible_cpus: [ on  ]
      ...                       libperl: [ on  ]
      ...                     libpython: [ on  ]
      ...                      libslang: [ on  ]
      ...                     libcrypto: [ on  ]
      ...                     libunwind: [ on  ]
      ...            libdw-dwarf-unwind: [ on  ]
      ...                          zlib: [ on  ]
      ...                          lzma: [ on  ]
      ...                     get_cpuid: [ on  ]
      ...                           bpf: [ on  ]
    
        GEN      /tmp/build/perf/common-cmds.h
        MKDIR    /tmp/build/perf/fd/
        CC       /tmp/build/perf/fd/array.o
        LD       /tmp/build/perf/fd/libapi-in.o
        MKDIR    /tmp/build/perf/fs/
        CC       /tmp/build/perf/event-parse.o
        CC       /tmp/build/perf/fs/fs.o
        PERF_VERSION = 4.9.rc8.g57a92f
        CC       /tmp/build/perf/event-plugin.o
        MKDIR    /tmp/build/perf/fs/
        CC       /tmp/build/perf/fs/tracing_path.o
      <SNIP>
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1481030331-31944-3-git-send-email-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    abb26210
Makefile.perf 32.5 KB