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

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

 



On Mon, May 09, 2016 at 03:28:28PM +0200, Andrew Jones wrote:
>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.

Yep, we share the same thoughts.

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

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



[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