Paolo Bonzini <pbonz...@redhat.com> writes: > On 05/08/2015 19:29, Victor Kaplansky wrote: >> The old rules.mak loads dependency .d files using include directive >> with file glob pattern "*.d". This breaks the build when build tree has >> remanent *.d files from another build. >> >> This patch fixes this by >> - loading precise list of .d files made from *.o and *.mo. >> - specifying explicit list of required dependency info files for >> *.hex autogenerated sources. >> >> Note that Makefile still includes some .d in rood directory by including >> "*.d". >> >> Signed-off-by: Victor Kaplansky <vict...@redhat.com> >> --- >> hw/i386/Makefile.objs | 2 ++ >> rules.mak | 2 +- >> 2 files changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs >> index bd4f147..311d364 100644 >> --- a/hw/i386/Makefile.objs >> +++ b/hw/i386/Makefile.objs >> @@ -10,6 +10,8 @@ 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.d hw/i386/q35-acpi-dsdt.d >> + > > Having to include the files manually is ugly though. > > The failed builds are ugly too, but I'm not sure which is worse... :( > Failed builds happen rarely
Not for me. > and there are other cases where you should > just "make distclean" your way out of a failure. ccache saves. > On the other hand, > more complicated makefiles have to be maintained always. Globbing in makefiles is rarely a good idea. Including *.d is as questionable as linking *.o would be.