lkml.org 
[lkml]   [2013]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] perf tools: Speed up the final link

    (Sent with proper subject line.)

    =================>
    libtraceevent.a and liblk.a rules have always-missed dependencies,
    which causes python.so to be relinked at every build attempt - even
    if none of the affected code changes.

    This slows down re-builds unnecessarily, by adding more than a second
    to the build time:

    comet:~/tip/tools/perf> time make

    ...

    SUBDIR /fast/mingo/tip/tools/lib/lk/
    make[1]: `liblk.a' is up to date.
    SUBDIR /fast/mingo/tip/tools/lib/traceevent/
    LINK perf
    GEN python/perf.so

    real 0m1.701s
    user 0m1.338s
    sys 0m0.301s

    Add the (trivial) dependencies to not force a re-link.

    This speeds up an empty re-build enormously:

    comet:~/tip/tools/perf> time make

    ...

    real 0m0.207s
    user 0m0.134s
    sys 0m0.028s

    [ This adds some coupling between the build dependencies of
    libtraceevent and liblk - but until those stay relatively
    simple this should not be an issue. ]

    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    tools/perf/Makefile | 10 +++++++---
    1 file changed, 7 insertions(+), 3 deletions(-)

    Index: tip/tools/perf/Makefile
    ===================================================================
    --- tip.orig/tools/perf/Makefile
    +++ tip/tools/perf/Makefile
    @@ -669,15 +669,19 @@ $(LIB_FILE): $(LIB_OBJS)
    $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)

    # libtraceevent.a
    -$(LIBTRACEEVENT):
    +TE_SOURCES = $(wildcard $(TRACE_EVENT_DIR)*.[ch])
    +
    +$(LIBTRACEEVENT): $(TE_SOURCES)
    $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) libtraceevent.a

    $(LIBTRACEEVENT)-clean:
    $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) clean

    +LIBLK_SOURCES = $(wildcard $(LK_PATH)*.[ch])
    +
    # if subdir is set, we've been called from above so target has been built
    # already
    -$(LIBLK):
    +$(LIBLK): $(LIBLK_SOURCES)
    ifeq ($(subdir),)
    $(QUIET_SUBDIR0)$(LK_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) liblk.a
    endif
    @@ -824,7 +828,7 @@ else
    GIT-HEAD-PHONY =
    endif

    -.PHONY: all install clean strip $(LIBTRACEEVENT) $(LIBLK)
    +.PHONY: all install clean strip
    .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
    .PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope .FORCE-PERF-CFLAGS



    \
     
     \ /
      Last update: 2013-10-01 17:41    [W:3.027 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site