Re: [kvm-unit-tests Patch V2] x86: Makefile refine

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

 



On Tue, May 10, 2016 at 10:09:49AM +0200, Laurent Vivier wrote:
> 
> 
> 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).

The .o's may be useful for disassembly.

> 
> If .elf need to be kept, they should be in the targets, something like:

The elfs are definitely useful for disassembly.

> 
> -- 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 \
> ...

This is ugly.

> 
> We don't need some magic here.

Why choose ugliness over a special make target?

> 
> 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
--
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



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux