> Do we actually need to omit -MD here? IIUC, it just means that the .d file will > get redundantly generated when building the final executable. I would much prefer > to build everything with the same options unless there's a good reason not to, > e.g. this patch doesn't feed -MD into the LIBKVM_STRING_OBJ target, which seems > wrong. No, we don't. I added "-MD" in EXTRA_CFLAGS, so that only .o files would be impacted when generating dependency files. But it is unnecessary. As to the LIBKVM_STRING_OBJ target, it is my negligence. :) I tried your suggested fix, and it works fine. Will send out v2(based on selftests branch of github.com/kvm-x86/linux). Thanks! B.R. Yu > > I.e. why not simply > > --- > tools/testing/selftests/kvm/Makefile | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile > index 152c1a988e42..faaf65aa7621 100644 > --- a/tools/testing/selftests/kvm/Makefile > +++ b/tools/testing/selftests/kvm/Makefile > @@ -182,6 +182,8 @@ TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR)) > TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR)) > LIBKVM += $(LIBKVM_$(ARCH_DIR)) > > +OVERRIDE_TARGETS = 1 > + > # lib.mak defines $(OUTPUT), prepends $(OUTPUT)/ to $(TEST_GEN_PROGS), and most > # importantly defines, i.e. overwrites, $(CC) (unless `make -e` or `make CC=`, > # which causes the environment variable to override the makefile). > @@ -196,7 +198,7 @@ else > LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include > endif > CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \ > - -Wno-gnu-variable-sized-type-not-at-end \ > + -Wno-gnu-variable-sized-type-not-at-end -MD \ > -fno-builtin-memcmp -fno-builtin-memcpy -fno-builtin-memset \ > -fno-stack-protector -fno-PIE -I$(LINUX_TOOL_INCLUDE) \ > -I$(LINUX_TOOL_ARCH_INCLUDE) -I$(LINUX_HDR_PATH) -Iinclude \ > @@ -223,7 +225,18 @@ LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S)) > LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING)) > LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ) > > -EXTRA_CLEAN += $(LIBKVM_OBJS) cscope.* > +TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS)) > +TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED)) > +TEST_DEP_FILES = $(patsubst %.o, %.d, $(TEST_GEN_OBJ)) > +TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS)) > +-include $(TEST_DEP_FILES) > + > +$(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED): %: %.o > + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $< $(LIBKVM_OBJS) $(LDLIBS) -o $@ > +$(TEST_GEN_OBJ): %.o: %.c > + $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@ > + > +EXTRA_CLEAN += $(LIBKVM_OBJS) $(TEST_DEP_FILES) $(TEST_GEN_OBJ) cscope.* > > x := $(shell mkdir -p $(sort $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ)))) > $(LIBKVM_C_OBJ): $(OUTPUT)/%.o: %.c > > base-commit: 95b9779c1758f03cf494e8550d6249a40089ed1c > -- >