On 08/05/2016 15:18, Wei Yang wrote: > In x86 Makefile, each elf target has a rule for its dependent, which shares > the same pattern. We could let makefile to handle this job instead of > writing a specific rule for each elf target. By doing so, the makefile rule > looks clear and would be easy for adding new cases. > > This patch does several cleanup: > 1. add $(cstart.o) in *.elf dependent > 2. remove all those elf rules which share the same pattern > 3. remove the *.o dependent in the elf rule who has extra dependent > 4. move the vmx.elf rule to Makefile.x86_64 since this is not a common case > 5. remove elf rules in Makefile.i386 > 6. Add %.elf and %.o in .PRECIOUS to keep them after make > > Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> > > --- > v2: > add .PRECIOUS special target to keep those intermediate files I think keeping the .o is useless, as it will be recreated each time (the source changes). If .elf need to be kept, they should be in the targets, something like: -- a/x86/Makefile.x86_64 +++ b/x86/Makefile.x86_64 @@ -6,14 +6,19 @@ CFLAGS += -mno-red-zone cflatobjs += lib/x86/setjmp64.o tests = $(TEST_DIR)/access.flat $(TEST_DIR)/apic.flat \ + $(TEST_DIR)/access.elf $(TEST_DIR)/apic.elf \ $(TEST_DIR)/emulator.flat $(TEST_DIR)/idt_test.flat \ + $(TEST_DIR)/emulator.elf $(TEST_DIR)/idt_test.elf \ ... We don't need some magic here. Laurent > --- > x86/Makefile.common | 72 ++++++----------------------------------------------- > x86/Makefile.i386 | 4 --- > x86/Makefile.x86_64 | 2 ++ > 3 files changed, 9 insertions(+), 69 deletions(-) > > diff --git a/x86/Makefile.common b/x86/Makefile.common > index 298e5f7..356d879 100644 > --- a/x86/Makefile.common > +++ b/x86/Makefile.common > @@ -25,8 +25,11 @@ KEEP_FRAME_POINTER := y > > libgcc := $(shell $(CC) -m$(bits) --print-libgcc-file-name) > > +# We want to keep intermediate file: %.elf and %.o > +.PRECIOUS: %.elf %.o > + > FLATLIBS = lib/libcflat.a $(libgcc) > -%.elf: %.o $(FLATLIBS) x86/flat.lds > +%.elf: %.o $(FLATLIBS) x86/flat.lds $(cstart.o) > $(CC) $(CFLAGS) -nostdlib -o $@ -Wl,-T,x86/flat.lds \ > $(filter %.o, $^) $(FLATLIBS) > > @@ -53,77 +56,16 @@ test_cases: $(tests-common) $(tests) > > $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I lib -I lib/x86 > > -$(TEST_DIR)/access.elf: $(cstart.o) $(TEST_DIR)/access.o > - > -$(TEST_DIR)/hypercall.elf: $(cstart.o) $(TEST_DIR)/hypercall.o > - > -$(TEST_DIR)/sieve.elf: $(cstart.o) $(TEST_DIR)/sieve.o > - > -$(TEST_DIR)/vmexit.elf: $(cstart.o) $(TEST_DIR)/vmexit.o > - > -$(TEST_DIR)/smptest.elf: $(cstart.o) $(TEST_DIR)/smptest.o > - > -$(TEST_DIR)/emulator.elf: $(cstart.o) $(TEST_DIR)/emulator.o > - > -$(TEST_DIR)/port80.elf: $(cstart.o) $(TEST_DIR)/port80.o > - > -$(TEST_DIR)/tsc.elf: $(cstart.o) $(TEST_DIR)/tsc.o > - > -$(TEST_DIR)/tsc_adjust.elf: $(cstart.o) $(TEST_DIR)/tsc_adjust.o > - > -$(TEST_DIR)/apic.elf: $(cstart.o) $(TEST_DIR)/apic.o > - > -$(TEST_DIR)/ioapic.elf: $(cstart.o) $(TEST_DIR)/ioapic.o > - > -$(TEST_DIR)/tscdeadline_latency.elf: $(cstart.o) $(TEST_DIR)/tscdeadline_latency.o > - > -$(TEST_DIR)/init.elf: $(cstart.o) $(TEST_DIR)/init.o > - > $(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o > $(CC) -m32 -nostdlib -o $@ -Wl,-T,$(TEST_DIR)/realmode.lds $^ > > $(TEST_DIR)/realmode.o: bits = 32 > > -$(TEST_DIR)/msr.elf: $(cstart.o) $(TEST_DIR)/msr.o > - > -$(TEST_DIR)/idt_test.elf: $(cstart.o) $(TEST_DIR)/idt_test.o > - > -$(TEST_DIR)/xsave.elf: $(cstart.o) $(TEST_DIR)/xsave.o > - > -$(TEST_DIR)/rmap_chain.elf: $(cstart.o) $(TEST_DIR)/rmap_chain.o > - > -$(TEST_DIR)/svm.elf: $(cstart.o) $(TEST_DIR)/svm.o > - > -$(TEST_DIR)/kvmclock_test.elf: $(cstart.o) $(TEST_DIR)/kvmclock.o \ > - $(TEST_DIR)/kvmclock_test.o > - > -$(TEST_DIR)/eventinj.elf: $(cstart.o) $(TEST_DIR)/eventinj.o > - > -$(TEST_DIR)/s3.elf: $(cstart.o) $(TEST_DIR)/s3.o > - > -$(TEST_DIR)/pmu.elf: $(cstart.o) $(TEST_DIR)/pmu.o > - > -$(TEST_DIR)/asyncpf.elf: $(cstart.o) $(TEST_DIR)/asyncpf.o > - > -$(TEST_DIR)/pcid.elf: $(cstart.o) $(TEST_DIR)/pcid.o > - > -$(TEST_DIR)/smap.elf: $(cstart.o) $(TEST_DIR)/smap.o > - > -$(TEST_DIR)/pku.elf: $(cstart.o) $(TEST_DIR)/pku.o > - > -$(TEST_DIR)/vmx.elf: $(cstart.o) $(TEST_DIR)/vmx.o $(TEST_DIR)/vmx_tests.o > - > -$(TEST_DIR)/debug.elf: $(cstart.o) $(TEST_DIR)/debug.o > - > -$(TEST_DIR)/memory.elf: $(cstart.o) $(TEST_DIR)/memory.o > - > -$(TEST_DIR)/hyperv_synic.elf: $(cstart.o) $(TEST_DIR)/hyperv.o \ > - $(TEST_DIR)/hyperv_synic.o > +$(TEST_DIR)/kvmclock_test.elf: $(TEST_DIR)/kvmclock.o > > -$(TEST_DIR)/hyperv_stimer.elf: $(cstart.o) $(TEST_DIR)/hyperv.o \ > - $(TEST_DIR)/hyperv_stimer.o > +$(TEST_DIR)/hyperv_synic.elf: $(TEST_DIR)/hyperv.o > > -$(TEST_DIR)/setjmp.elf: $(cstart.o) $(TEST_DIR)/setjmp.o > +$(TEST_DIR)/hyperv_stimer.elf: $(TEST_DIR)/hyperv.o > > arch_clean: > $(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \ > diff --git a/x86/Makefile.i386 b/x86/Makefile.i386 > index 8a4c45c..c4176c4 100644 > --- a/x86/Makefile.i386 > +++ b/x86/Makefile.i386 > @@ -9,7 +9,3 @@ tests = $(TEST_DIR)/taskswitch.flat $(TEST_DIR)/taskswitch2.flat \ > $(TEST_DIR)/cmpxchg8b.flat > > include $(TEST_DIR)/Makefile.common > - > -$(TEST_DIR)/cmpxchg8b.elf: $(cstart.o) $(TEST_DIR)/cmpxchg8b.o > -$(TEST_DIR)/taskswitch.elf: $(cstart.o) $(TEST_DIR)/taskswitch.o > -$(TEST_DIR)/taskswitch2.elf: $(cstart.o) $(TEST_DIR)/taskswitch2.o > diff --git a/x86/Makefile.x86_64 b/x86/Makefile.x86_64 > index 6b7ccfb..e166911 100644 > --- a/x86/Makefile.x86_64 > +++ b/x86/Makefile.x86_64 > @@ -16,3 +16,5 @@ tests += $(TEST_DIR)/vmx.flat > tests += $(TEST_DIR)/tscdeadline_latency.flat > > include $(TEST_DIR)/Makefile.common > + > +$(TEST_DIR)/vmx.elf: $(TEST_DIR)/vmx_tests.o > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html