qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/2] trace: avoid unnecessary recompilation if n


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH 2/2] trace: avoid unnecessary recompilation if nothing changed
Date: Tue, 28 Sep 2010 10:58:38 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Markus Armbruster <address@hidden> writes:

> Blue Swirl <address@hidden> writes:
>
>> Add logic to detect changes in generated files. If the old
>> and new files are identical, don't touch the generated file.
>> This avoids a lot of churn since many files depend on trace.h.
>>
>> Signed-off-by: Blue Swirl <address@hidden>
>> ---
>>  Makefile |   18 ++++++++++++++++--
>>  1 files changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index ff39025..085e8ed 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -107,10 +107,24 @@ ui/vnc.o: QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
>>  bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS)
>>
>>  trace.h: $(SRC_PATH)/trace-events config-host.mak
>> -    $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -h
>> < $< > $@,"  GEN   $@")
>> +    $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -h
>> < $< > address@hidden,"  GEN   $@")
>> +    @if test -f $@; then \
>> +      if ! cmp -s $@ address@hidden; then \
>> +        mv address@hidden $@; \
>> +      fi; \
>> +     else \
>> +      mv address@hidden $@; \
>> +     fi
>
> Why the conditional?  cmp -s fails fine when argument files don't exist.
>
> Note that common versions of make including GNU Make do not stat a
> rule's target to check whether the rule changed it.  Instead, they
> assume it changed, and remake everything depending on it.

That was from memory.  And my example makefile to illustrate the problem
was flawed.  So your patch might work reliably after all.  The common
make voodoo incantation for this is a stamp file, though, as Paolo
pointed out.

[...]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]