Re: [kvm-unit-tests PATCH] x86: Makefile refine

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

 



On Sun, May 08, 2016 at 01:12:19PM +0000, Wei Yang wrote:
> On Fri, May 06, 2016 at 11:44:07AM +0200, Andrew Jones wrote:
> >On Thu, May 05, 2016 at 04:03:42PM +0000, 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
> >
> >This is a nice idea for a cleanup, but it seems to have a not so
> >nice side-effect. When I tested it I see a new final action occurs.
> >All x86/*.o and x86/*.elf files that we didn't keep the explicit
> >rule for (i.e. x86/hyperv_stimer.elf,  x86/hyperv_synic.elf,
> >x86/kvmclock_test.elf, x86/realmode.elf, x86/vmx.elf) are now
> >removed. I'd prefer we don't delete anything unless a 'make clean'
> >is done. Also, for arm, we need to keep the elf files for objdump
> >to work.
> >
> 
> Ok, I guess I understand what you mean. You mean after run "make", some
> intermediate files will be deleted.

I should read mail in reverse chronological order :-) Looks like you see
the issue now and have a solution.

> 
> By looking at the document,
> http://www.gnu.org/software/make/manual/html_node/Special-Targets.html
> 
> Two special target looks meet our requirement: .PRECIOUS and .SECONDARY. While
> with some testing, it looks .SECONDARY not working well on my machine. So I
> choose to use .PRECIOUS: %.elf %.o to fix this.

These special targets do look the like right approach. Too bad
.SECONDARY doesn't work, as that indeed seems like the best choice.

Thanks,
drew

> 
> V2 will be sent.
> 
> Thanks for your comment:-)
> 
> >Is there any way to tell make to remove that 'rm'?
> >
> >Thanks,
> >drew
> >
> >> 
> >> Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx>
> >> 
> >> ---
> >> This is based on latest master branch and I just tested this on x86_64
> >> arch.
> >> 
> >> ---
> >>  x86/Makefile.common |   69 +++------------------------------------------------
> >>  x86/Makefile.i386   |    4 ---
> >>  x86/Makefile.x86_64 |    2 ++
> >>  3 files changed, 6 insertions(+), 69 deletions(-)
> >> 
> >> diff --git a/x86/Makefile.common b/x86/Makefile.common
> >> index 298e5f7..842a9e7 100644
> >> --- a/x86/Makefile.common
> >> +++ b/x86/Makefile.common
> >> @@ -26,7 +26,7 @@ KEEP_FRAME_POINTER := y
> >>  libgcc := $(shell $(CC) -m$(bits) --print-libgcc-file-name)
> >>  
> >>  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 +53,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
> >> -- 
> >> 1.7.9.5
> >> 
> >> --
> >> 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
> 
> -- 
> Wei Yang
> Help you, Help me
> --
> 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