On Wed, Aug 05, 2015 at 11:50:54AM +0200, Paolo Bonzini wrote: > > > On 04/08/2015 18:21, Victor Kaplansky wrote: > > Rebuilding QEMU after switching versions from git can cause make failure > > if IASL is enabled. This is caused by including stale *.d info from > > previous build. > > > > To prevent this in the future we generate dependency info for generated > > ACPI sources in *.dep instead regular *.d and include them explicitly. > > This will allow us not to break future builds when one of such generated > > sources is removed - by removing explicit include of removed dependency. > > > > By itself this doesn't fix broken builds from the past and this will be > > done by the following patch. > > Does this happen the same way if you are removing a .c file? If not, > can the same solution be used for .c and .dsl files? > > Paolo
The problem is with .hex, not with .dsl files. It will happen with .c or .h file as well if .c/.h file is generated. > > Signed-off-by: Victor Kaplansky <vict...@redhat.com> > > --- > > hw/i386/Makefile.objs | 4 +++- > > rules.mak | 1 + > > 2 files changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs > > index bd4f147..bcc7083 100644 > > --- a/hw/i386/Makefile.objs > > +++ b/hw/i386/Makefile.objs > > @@ -10,13 +10,15 @@ obj-y += acpi-build.o > > hw/i386/acpi-build.o: hw/i386/acpi-build.c \ > > hw/i386/acpi-dsdt.hex hw/i386/q35-acpi-dsdt.hex > > > > +-include hw/i386/acpi-dsdt.dep hw/i386/q35-acpi-dsdt.dep > > + > > iasl-option=$(shell if test -z "`$(1) $(2) 2>&1 > /dev/null`" \ > > ; then echo "$(2)"; else echo "$(3)"; fi ;) > > > > ifdef IASL > > #IASL Present. Generate hex files from .dsl > > hw/i386/%.hex: $(SRC_PATH)/hw/i386/%.dsl > > $(SRC_PATH)/scripts/acpi_extract_preprocess.py > > $(SRC_PATH)/scripts/acpi_extract.py > > - $(call quiet-command, $(CPP) -x c -P $(QEMU_DGFLAGS) $(QEMU_INCLUDES) > > $< -o $*.dsl.i.orig, " CPP $(TARGET_DIR)$*.dsl.i.orig") > > + $(call quiet-command, $(CPP) -x c -P $(QEMU_DGFLAGS_GEN) > > $(QEMU_INCLUDES) $< -o $*.dsl.i.orig, " CPP $(TARGET_DIR)$*.dsl.i.orig") > > $(call quiet-command, $(PYTHON) > > $(SRC_PATH)/scripts/acpi_extract_preprocess.py $*.dsl.i.orig > $*.dsl.i, " > > ACPI_PREPROCESS $(TARGET_DIR)$*.dsl.i") > > $(call quiet-command, $(IASL) $(call iasl-option,$(IASL),-Pn,) -vs -l > > -tc -p $* $*.dsl.i $(if $(V), , > /dev/null) 2>&1 ," IASL > > $(TARGET_DIR)$*.dsl.i") > > $(call quiet-command, $(PYTHON) $(SRC_PATH)/scripts/acpi_extract.py > > $*.lst > $*.off, " ACPI_EXTRACT $(TARGET_DIR)$*.off") > > diff --git a/rules.mak b/rules.mak > > index aec27f8..6019a46 100644 > > --- a/rules.mak > > +++ b/rules.mak > > @@ -18,6 +18,7 @@ QEMU_CXXFLAGS = -D__STDC_LIMIT_MACROS $(filter-out > > -Wstrict-prototypes -Wmissing > > > > # Flags for dependency generation > > QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(*D)/$(*F).d > > +QEMU_DGFLAGS_GEN += -MMD -MP -MT $@ -MF $(*D)/$(*F).dep > > > > # Same as -I$(SRC_PATH) -I., but for the nested source/object directories > > QEMU_INCLUDES += -I$(<D) -I$(@D) > > --