Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty

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

 



On Mon Jun 3, 2024 at 6:56 PM AEST, Andrew Jones wrote:
> On Mon, Jun 03, 2024 at 10:26:50AM GMT, Thomas Huth wrote:
> > On 02/06/2024 14.25, Nicholas Piggin wrote:
> > > Unless make V=1 is specified, silence make recipe echoing and print
> > > an abbreviated line for major build steps.
> > > 
> > > Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx>
> > > ---
> > >   Makefile                | 14 ++++++++++++++
> > >   arm/Makefile.common     |  7 +++++++
> > >   powerpc/Makefile.common | 11 +++++++----
> > >   riscv/Makefile          |  5 +++++
> > >   s390x/Makefile          | 18 +++++++++++++++++-
> > >   scripts/mkstandalone.sh |  2 +-
> > >   x86/Makefile.common     |  5 +++++
> > >   7 files changed, 56 insertions(+), 6 deletions(-)
> > 
> > The short lines look superfluous in verbose mode, e.g.:
> > 
> >  [OBJCOPY] s390x/memory-verify.bin
> > objcopy -O binary  s390x/memory-verify.elf s390x/memory-verify.bin
> > 
> > Could we somehow suppress the echo lines in verbose mode, please?
> > 
> > For example in the SLOF project, it's done like this:
> > 
> > https://gitlab.com/slof/slof/-/blob/master/make.rules?ref_type=heads#L48
> > 
> > By putting the logic into $CC and friends, you also don't have to add
> > "@echo" statements all over the place.
>
> And I presume make will treat the printing and compiling as one unit, so
> parallel builds still get the summary above the error messages when
> compilation fails. The way this patch is now a parallel build may show
> the summary for the last successful build and then error messages for
> a build that hasn't output its summary yet, which can be confusing.
>
> So I agree that something more like SLOF's approach would be better.

Hmm... kbuild type commands is a pretty big patch. I like it though.
Thoughts?

Thanks,
Nick

---

diff --git a/Makefile b/Makefile
index 5b7998b79..56052107f 100644
--- a/Makefile
+++ b/Makefile
@@ -53,6 +53,34 @@ EFI_CFLAGS += -fPIC
 EFI_LDFLAGS := -Bsymbolic -shared -nostdlib
 endif
 
+quiet = quiet_
+quiet_echo = @echo $1
+Q = @
+ifeq ($V, 1)
+	quiet =
+	quiet_echo =
+	Q =
+endif
+
+cmd = @$(echo-cmd) $(cmd_$(1))
+echo-cmd = $(if $($(quiet)cmd_$(1)), echo ' $($(quiet)cmd_$(1))';)
+
+quiet_cmd_cc = [CC]      $@
+      cmd_cc = $(CC) $(CFLAGS) -c -nostdlib -o $@ $<
+
+quiet_cmd_cpp = [CPP]     $@
+      cmd_cpp = $(CPP) $(CPPFLAGS) -P -C -o $@ $<
+
+quiet_cmd_as = [AS]      $@
+      cmd_as = $(CC) $(CFLAGS) -c -nostdlib -o $@ $<
+
+# Link libs last
+quiet_cmd_ld = [LD]      $@
+      cmd_ld = $(LD) $(LDFLAGS) -o $@ $(filter %.o %.gobj, $^) $(filter %.a, $^)
+
+quiet_cmd_ar = [AR]      $@
+      cmd_ar = $(AR) rcs $@ $^
+
 #include architecture specific make rules
 include $(SRCDIR)/$(TEST_DIR)/Makefile
 
@@ -95,14 +123,13 @@ autodepend-flags = -MMD -MP -MF $(dir $*).$(notdir $*).d
 LDFLAGS += -nostdlib $(no_pie) -z noexecstack
 
 $(libcflat): $(cflatobjs)
-	$(AR) rcs $@ $^
+	$(call cmd,ar)
 
 include $(LIBFDT_srcdir)/Makefile.libfdt
 $(LIBFDT_archive): CFLAGS += -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -Wno-sign-compare
 $(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
-	$(AR) rcs $@ $^
+	$(call cmd,ar)
 
-libfdt_clean: VECHO = echo " "
 libfdt_clean: STD_CLEANFILES = *.o .*.d
 libfdt_clean: LIBFDT_dir = $(LIBFDT_objdir)
 libfdt_clean: SHAREDLIB_EXT = so
@@ -112,8 +139,11 @@ libfdt_clean: SHAREDLIB_EXT = so
 directories:
 	@mkdir -p $(OBJDIRS)
 
+%.o: %.c
+	$(call cmd,cc)
+
 %.o: %.S
-	$(CC) $(CFLAGS) -c -nostdlib -o $@ $<
+	$(call cmd,as)
 
 -include */.*.d */*/.*.d
 
@@ -123,23 +153,29 @@ standalone: all
 	@scripts/mkstandalone.sh
 
 install: standalone
-	mkdir -p $(DESTDIR)
-	install tests/* $(DESTDIR)
+	$(call quiet_echo, " [INSTALL] tests -> $(DESTDIR)")
+	$(Q)mkdir -p $(DESTDIR)
+	$(Q)install tests/* $(DESTDIR)
 
-clean: arch_clean libfdt_clean
-	$(RM) $(LIBFDT_archive)
-	$(RM) lib/.*.d $(libcflat) $(cflatobjs)
+#clean: arch_clean libfdt_clean
+clean:
+	$(call quiet_echo, " [CLEAN]")
+	$(Q)$(MAKE) --no-print-directory arch_clean libfdt_clean
+	$(Q)$(RM) $(LIBFDT_archive)
+	$(Q)$(RM) lib/.*.d $(libcflat) $(cflatobjs)
 
 distclean: clean
-	$(RM) lib/asm lib/config.h config.mak $(TEST_DIR)-run msr.out cscope.* build-head
-	$(RM) -r tests logs logs.old efi-tests
+	$(call quiet_echo, " [DISTCLEAN]")
+	$(Q)$(RM) lib/asm lib/config.h config.mak $(TEST_DIR)-run msr.out cscope.* build-head
+	$(Q)$(RM) -r tests logs logs.old efi-tests
 
 cscope: cscope_dirs = lib lib/libfdt lib/linux $(TEST_DIR) $(ARCH_LIBDIRS) lib/asm-generic
 cscope:
-	$(RM) ./cscope.*
-	find -L $(cscope_dirs) -maxdepth 1 \
+	$(Q)$(RM) ./cscope.*
+	$(Q)find -L $(cscope_dirs) -maxdepth 1 \
 		-name '*.[chsS]' -exec realpath --relative-base=$(CURDIR) {} \; | sort -u > ./cscope.files
-	cscope -bk
+	$(call quiet_echo, " [CSCOPE]")
+	$(Q)cscope -bk
 
 .PHONY: shellcheck
 shellcheck:
diff --git a/arm/Makefile.arm64 b/arm/Makefile.arm64
index 960880f1c..06e856ba1 100644
--- a/arm/Makefile.arm64
+++ b/arm/Makefile.arm64
@@ -52,4 +52,4 @@ tests += $(TEST_DIR)/debug.$(exe)
 include $(SRCDIR)/$(TEST_DIR)/Makefile.common
 
 arch_clean: arm_clean
-	$(RM) lib/arm64/.*.d
+	$(Q)$(RM) lib/arm64/.*.d
diff --git a/arm/Makefile.common b/arm/Makefile.common
index 5f22c9b08..0def9a327 100644
--- a/arm/Makefile.common
+++ b/arm/Makefile.common
@@ -72,48 +72,47 @@ eabiobjs = lib/arm/eabi_compat.o
 FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libeabi)
 
 ifeq ($(CONFIG_EFI),y)
+%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.efi)\" -DAUXFLAGS=$(AUXFLAGS)
 $(tests-all:.$(exe)=.aux.o): $(SRCDIR)/lib/auxinfo.c
-	$(CC) $(CFLAGS) -c -o $@ $< \
-		-DPROGNAME=\"$(@:.aux.o=.efi)\" -DAUXFLAGS=$(AUXFLAGS)
+	$(call cmd,cc)
 
-%.so: EFI_LDFLAGS += -defsym=EFI_SUBSYSTEM=0xa --no-undefined
-%.so: %.o $(FLATLIBS) $(SRCDIR)/arm/efi/elf_aarch64_efi.lds $(cstart.o) %.aux.o
-	$(LD) $(EFI_LDFLAGS) -o $@ -T $(SRCDIR)/arm/efi/elf_aarch64_efi.lds \
-		$(filter %.o, $^) $(FLATLIBS)
+%.so: LDFLAGS = $(EFI_LDFLAGS) -defsym=EFI_SUBSYSTEM=0xa --no-undefined -T $(SRCDIR)/arm/efi/elf_aarch64_efi.lds
+%.so: %.o $(SRCDIR)/arm/efi/elf_aarch64_efi.lds $(cstart.o) $(FLATLIBS) $(EFI_LIBS) %.aux.o
+	$(call cmd,ld)
 
 %.efi: %.so
 	$(call arch_elf_check, $^)
-	$(OBJCOPY) --only-keep-debug $^ $@.debug
-	$(OBJCOPY) --strip-debug $^
-	$(OBJCOPY) --add-gnu-debuglink=$@.debug $^
-	$(OBJCOPY) \
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) --only-keep-debug $^ $@.debug
+	$(Q)$(OBJCOPY) --strip-debug $^
+	$(Q)$(OBJCOPY) --add-gnu-debuglink=$@.debug $^
+	$(Q)$(OBJCOPY) \
 		-j .text -j .sdata -j .data -j .dynamic -j .dynsym \
 		-j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
 		-j .reloc \
 		-O binary $^ $@
 else
+%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.flat)\" -DAUXFLAGS=$(AUXFLAGS)
 $(tests-all:.$(exe)=.aux.o): $(SRCDIR)/lib/auxinfo.c
-%.aux.o: $(SRCDIR)/lib/auxinfo.c
-	$(CC) $(CFLAGS) -c -o $@ $< \
-		-DPROGNAME=\"$(@:.aux.o=.flat)\" -DAUXFLAGS=$(AUXFLAGS)
+	$(call cmd,cc)
 
-%.elf: LDFLAGS += $(arch_LDFLAGS)
-%.elf: %.o $(FLATLIBS) $(SRCDIR)/arm/flat.lds $(cstart.o) %.aux.o
-	$(LD) $(LDFLAGS) -o $@ -T $(SRCDIR)/arm/flat.lds \
-		$(filter %.o, $^) $(FLATLIBS)
-	@chmod a-x $@
+%.elf: LDFLAGS += $(arch_LDFLAGS) -T $(SRCDIR)/arm/flat.lds
+%.elf: %.o $(SRCDIR)/arm/flat.lds $(cstart.o) $(FLATLIBS) %.aux.o
+	$(call cmd,ld)
+	$(Q)@chmod a-x $@
 
 %.flat: %.elf
 	$(call arch_elf_check, $^)
-	$(OBJCOPY) -O binary $^ $@
-	@chmod a-x $@
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -O binary $^ $@
+	$(Q)chmod a-x $@
 endif
 
 $(libeabi): $(eabiobjs)
-	$(AR) rcs $@ $^
+	$(call cmd,ar)
 
 arm_clean: asm_offsets_clean
-	$(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} $(libeabi) $(eabiobjs) \
+	$(Q)$(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} $(libeabi) $(eabiobjs) \
 	      $(TEST_DIR)/.*.d $(TEST_DIR)/efi/.*.d lib/arm/.*.d
 
 generated-files = $(asm-offsets)
diff --git a/lib/libfdt/Makefile.libfdt b/lib/libfdt/Makefile.libfdt
index b6d8fc02d..3a1bc1128 100644
--- a/lib/libfdt/Makefile.libfdt
+++ b/lib/libfdt/Makefile.libfdt
@@ -13,6 +13,5 @@ LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
 LIBFDT_LIB = libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT)
 
 libfdt_clean:
-	@$(VECHO) CLEAN "(libfdt)"
-	rm -f $(STD_CLEANFILES:%=$(LIBFDT_dir)/%)
-	rm -f $(LIBFDT_dir)/$(LIBFDT_soname)
+	$(Q)rm -f $(STD_CLEANFILES:%=$(LIBFDT_dir)/%)
+	$(Q)rm -f $(LIBFDT_dir)/$(LIBFDT_soname)
diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common
index 3b219eee0..2fdf5bdae 100644
--- a/powerpc/Makefile.common
+++ b/powerpc/Makefile.common
@@ -52,37 +52,37 @@ cflatobjs += lib/powerpc/smp.o
 
 OBJDIRS += lib/powerpc
 
+%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.elf)\"
 $(tests-all:.elf=.aux.o): $(SRCDIR)/lib/auxinfo.c
-	$(CC) $(CFLAGS) -c -o $@ $< -DPROGNAME=\"$(@:.aux.o=.elf)\"
+	$(call cmd,cc)
 
 FLATLIBS = $(libcflat) $(LIBFDT_archive)
 %.elf: CFLAGS += $(arch_CFLAGS)
-%.elf: LDFLAGS += $(arch_LDFLAGS) -pie -n
+%.elf: LDFLAGS += $(arch_LDFLAGS) -pie -n --build-id=none -T $(SRCDIR)/powerpc/flat.lds
 %.elf: %.o $(FLATLIBS) $(SRCDIR)/powerpc/flat.lds $(cstart.o) $(reloc.o) %.aux.o
-	$(LD) $(LDFLAGS) -o $@ \
-		-T $(SRCDIR)/powerpc/flat.lds --build-id=none \
-		$(filter %.o, $^) $(FLATLIBS)
-	@chmod a-x $@
-	@echo -n Checking $@ for unsupported reloc types...
+	$(call cmd,ld)
+	$(Q)chmod a-x $@
 	@if $(OBJDUMP) -R $@ | grep R_ | grep -v R_PPC64_RELATIVE; then	\
+		@echo "Unsupported reloc types in $@"			\
 		false;							\
-	else								\
-		echo " looks good.";					\
 	fi
 
 $(TEST_DIR)/boot_rom.bin: $(TEST_DIR)/boot_rom.elf
-	dd if=/dev/zero of=$@ bs=256 count=1
-	$(OBJCOPY) -O binary $^ $@.tmp
-	cat $@.tmp >> $@
-	$(RM) $@.tmp
+	$(call quiet_echo, " [DD]      $@")
+	$(Q)dd if=/dev/zero of=$@ bs=256 count=1 status=none
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -O binary $^ $@.tmp
+	$(Q)cat $@.tmp >> $@
+	$(Q)$(RM) $@.tmp
 
 $(TEST_DIR)/boot_rom.elf: CFLAGS = -mbig-endian
+$(TEST_DIR)/boot_rom.elf: LDFLAGS = -EB -nostdlib -Ttext=0x100 --entry=start --build-id=none
 $(TEST_DIR)/boot_rom.elf: $(TEST_DIR)/boot_rom.o
-	$(LD) -EB -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $<
-	@chmod a-x $@
+	$(call cmd,ld)
+	$(Q)chmod a-x $@
 
 powerpc_clean: asm_offsets_clean
-	$(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \
+	$(Q)$(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \
 	      $(TEST_DIR)/.*.d lib/powerpc/.*.d
 
 generated-files = $(asm-offsets)
diff --git a/powerpc/Makefile.ppc64 b/powerpc/Makefile.ppc64
index a18a9628f..b10499229 100644
--- a/powerpc/Makefile.ppc64
+++ b/powerpc/Makefile.ppc64
@@ -27,4 +27,4 @@ tests = $(TEST_DIR)/spapr_vpa.elf
 include $(SRCDIR)/$(TEST_DIR)/Makefile.common
 
 arch_clean: powerpc_clean
-	$(RM) lib/ppc64/.*.d
+	$(Q)$(RM) lib/ppc64/.*.d
diff --git a/riscv/Makefile b/riscv/Makefile
index eacca7ce1..f6fb9488a 100644
--- a/riscv/Makefile
+++ b/riscv/Makefile
@@ -81,9 +81,9 @@ CFLAGS += -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt
 asm-offsets = lib/riscv/asm-offsets.h
 include $(SRCDIR)/scripts/asm-offsets.mak
 
+%.aux.o: CFLAGS += -DPROGNAME=\"$(notdir $(@:.aux.o=.$(exe)))\" -DAUXFLAGS=$(AUXFLAGS)
 $(tests:.$(exe)=.aux.o): $(SRCDIR)/lib/auxinfo.c
-	$(CC) $(CFLAGS) -c -o $@ $< \
-		-DPROGNAME=\"$(notdir $(@:.aux.o=.$(exe)))\" -DAUXFLAGS=$(AUXFLAGS)
+	$(call cmd,cc)
 
 ifeq ($(CONFIG_EFI),y)
 # avoid jump tables before all relocations have been processed
@@ -95,36 +95,37 @@ cflatobjs += lib/efi.o
 .PRECIOUS: %.so
 
 %.so: EFI_LDFLAGS += -defsym=EFI_SUBSYSTEM=0xa --no-undefined
-%.so: %.o $(FLATLIBS) $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds $(cstart.o) %.aux.o
-	$(LD) $(EFI_LDFLAGS) -o $@ -T $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds \
-		$(filter %.o, $^) $(FLATLIBS)
+%.so: LDFLAGS = $(EFI_LDFLAGS) -T $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds
+%.so: %.o $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds $(cstart.o) %.aux.o $(FLATLIBS)
+	$(call cmd,ld)
 
 %.efi: %.so
 	$(call arch_elf_check, $^)
-	$(OBJCOPY) --only-keep-debug $^ $@.debug
-	$(OBJCOPY) --strip-debug $^
-	$(OBJCOPY) --add-gnu-debuglink=$@.debug $^
-	$(OBJCOPY) \
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) --only-keep-debug $^ $@.debug
+	$(Q)$(OBJCOPY) --strip-debug $^
+	$(Q)$(OBJCOPY) --add-gnu-debuglink=$@.debug $^
+	$(Q)$(OBJCOPY) \
 		-j .text -j .sdata -j .data -j .rodata -j .dynamic -j .dynsym \
 		-j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
 		-j .reloc \
 		-O binary $^ $@
 else
-%.elf: LDFLAGS += -pie -n -z notext
-%.elf: %.o $(FLATLIBS) $(SRCDIR)/riscv/flat.lds $(cstart.o) %.aux.o
-	$(LD) $(LDFLAGS) -o $@ -T $(SRCDIR)/riscv/flat.lds \
-		$(filter %.o, $^) $(FLATLIBS)
-	@chmod a-x $@
+%.elf: LDFLAGS += -pie -n -z notext -T $(SRCDIR)/riscv/flat.lds
+%.elf: %.o $(SRCDIR)/riscv/flat.lds $(cstart.o) %.aux.o $(FLATLIBS)
+	$(call cmd,ld)
+	$(Q)@chmod a-x $@
 
 %.flat: %.elf
 	$(call arch_elf_check, $^)
+	$(call quiet_echo, " [OBJCOPY] $@")
 	$(OBJCOPY) -O binary $^ $@
-	@chmod a-x $@
+	$(Q)@chmod a-x $@
 endif
 
 generated-files = $(asm-offsets)
 $(tests:.$(exe)=.o) $(cstart.o) $(cflatobjs): $(generated-files)
 
 arch_clean: asm_offsets_clean
-	$(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} \
+	$(Q)$(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} \
 	      $(TEST_DIR)/.*.d $(TEST_DIR)/efi/.*.d lib/riscv/.*.d
diff --git a/s390x/Makefile b/s390x/Makefile
index 4c0c8085c..28d8a5b07 100644
--- a/s390x/Makefile
+++ b/s390x/Makefile
@@ -82,7 +82,7 @@ CFLAGS += -O2
 CFLAGS += -march=zEC12
 CFLAGS += -mbackchain
 CFLAGS += -fno-delete-null-pointer-checks
-LDFLAGS += -Wl,--build-id=none
+LDFLAGS += --build-id=none
 
 # We want to keep intermediate files
 .PRECIOUS: %.o %.lds
@@ -148,54 +148,65 @@ endif
 
 # the asm/c snippets %.o have additional generated files as dependencies
 $(SNIPPET_DIR)/asm/%.o: $(SNIPPET_DIR)/asm/%.S $(asm-offsets)
-	$(CC) $(CFLAGS) -c -nostdlib -o $@ $<
+	$(call cmd,cc)
 
 $(SNIPPET_DIR)/c/%.o: $(SNIPPET_DIR)/c/%.c $(asm-offsets)
-	$(CC) $(CFLAGS) -c -nostdlib -o $@ $<
+	$(call cmd,cc)
 
+$(SNIPPET_DIR)/asm/%.gbin: LDFLAGS += -T $(SNIPPET_DIR)/asm/flat.lds
 $(SNIPPET_DIR)/asm/%.gbin: $(SNIPPET_DIR)/asm/%.o $(SNIPPET_DIR)/asm/flat.lds
-	$(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/asm/flat.lds $<
-	$(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@
+	$(call cmd,ld)
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@
 	truncate -s '%4096' $@
 
+$(SNIPPET_DIR)/c/%.gbin: LDFLAGS += -T $(SNIPPET_DIR)/c/flat.lds
 $(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPPET_DIR)/c/flat.lds
-	$(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/c/flat.lds $< $(snippet_lib) $(FLATLIBS)
-	$(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@
-	truncate -s '%4096' $@
+	$(call cmd,ld)
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@
+	$(Q)truncate -s '%4096' $@
 
 %.hdr: %.gbin $(HOST_KEY_DOCUMENT)
-	$(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@
+	$(call quiet_echo, " [SEHDR]   $@")
+	$(Q)$(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@
 
 .SECONDARY:
 %.gobj: %.gbin
-	$(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@
 
 .SECONDARY:
 %.hdr.obj: %.hdr
-	$(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@
 
 lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@
+%.lds: CPPFLAGS += $(lds-autodepend-flags)
 %.lds: %.lds.S $(asm-offsets)
-	$(CPP) $(lds-autodepend-flags) $(CPPFLAGS) -P -C -o $@ $<
+	$(call cmd,cpp)
 
+%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.elf)\"
 $(tests:.elf=.aux.o): $(SRCDIR)/lib/auxinfo.c
-	$(CC) $(CFLAGS) -c -o $@ $< -DPROGNAME=\"$(@:.aux.o=.elf)\"
+	$(call cmd,cc)
 
 .SECONDEXPANSION:
-%.elf: $(FLATLIBS) $(asmlib) $(SRCDIR)/s390x/flat.lds $$(snippets-obj) $$(snippet-hdr-obj) %.o %.aux.o
-	@$(CC) $(LDFLAGS) -o $@ -T $(SRCDIR)/s390x/flat.lds \
-		$(filter %.o, $^) $(FLATLIBS) $(snippets-obj) $(snippet-hdr-obj) || \
-		{ echo "Failure probably caused by missing definition of gen-se-header executable"; exit 1; }
-	@chmod a-x $@
+%.elf: LDFLAGS += -T $(SRCDIR)/s390x/flat.lds
+%.elf: $(SRCDIR)/s390x/flat.lds $$(snippets-obj) $$(snippet-hdr-obj) %.o %.aux.o $(FLATLIBS) $(asmlib)
+	$(call cmd,ld)
+# XXX: some test for gen-se-header executable?
+	$(Q)@chmod a-x $@
 
 # Secure Execution Customer Communication Key file
 # 32 bytes of key material, uses existing one if available
 comm-key = $(TEST_DIR)/comm.key
 $(comm-key):
-	dd if=/dev/urandom of=$@ bs=32 count=1 status=none
+	$(call quiet_echo, " [DD]      $@")
+	$(Q)dd if=/dev/urandom of=$@ bs=32 count=1 status=none
 
 %.bin: %.elf
-	$(OBJCOPY) -O binary  $< $@
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -O binary  $< $@
 
 # The genprotimg arguments for the cck changed over time so we need to
 # figure out which argument to use in order to set the cck
@@ -221,14 +232,14 @@ endif
 $(patsubst %.parmfile,%.pv.bin,$(wildcard s390x/*.parmfile)): %.pv.bin: %.parmfile
 %.pv.bin: %.bin $(HOST_KEY_DOCUMENT) $(comm-key)
 	$(eval parmfile_args = $(if $(filter %.parmfile,$^),--parmfile $(filter %.parmfile,$^),))
-	$(GENPROTIMG) --host-key-document $(HOST_KEY_DOCUMENT) --no-verify $(GENPROTIMG_COMM_OPTION) $(comm-key) --x-pcf $(GENPROTIMG_PCF) $(parmfile_args) --image $(filter %.bin,$^) -o $@
+	$(call quiet_echo, " [GENPROT] $@")
+	$(Q)$(GENPROTIMG) --host-key-document $(HOST_KEY_DOCUMENT) --no-verify $(GENPROTIMG_COMM_OPTION) $(comm-key) --x-pcf $(GENPROTIMG_PCF) $(parmfile_args) --image $(filter %.bin,$^) -o $@
 
 $(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets)
-	$(CC) $(CFLAGS) -c -nostdlib -o $@ $<
-
+	$(call cmd,cc)
 
 arch_clean: asm_offsets_clean
-	$(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key)
+	$(Q)$(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key)
 
 generated-files = $(asm-offsets)
 $(tests:.elf=.o) $(asmlib) $(cflatobjs): $(generated-files)
diff --git a/scripts/asm-offsets.mak b/scripts/asm-offsets.mak
index 7b64162dd..db5f741c8 100644
--- a/scripts/asm-offsets.mak
+++ b/scripts/asm-offsets.mak
@@ -16,7 +16,7 @@ define sed-y
 endef
 
 define make_asm_offsets
-	(set -e; \
+	$(Q)(set -e; \
 	 echo "#ifndef __ASM_OFFSETS_H__"; \
 	 echo "#define __ASM_OFFSETS_H__"; \
 	 echo "/*"; \
@@ -29,16 +29,17 @@ define make_asm_offsets
 	 echo "#endif" ) > $@
 endef
 
+$(asm-offsets:.h=.s): CFLAGS += -fverbose-asm -S
 $(asm-offsets:.h=.s): $(asm-offsets:.h=.c)
-	$(CC) $(CFLAGS) -fverbose-asm -S -o $@ $<
+	$(call cmd,cc)
 
 $(asm-offsets): $(asm-offsets:.h=.s)
 	$(call make_asm_offsets)
-	cp -f $(asm-offsets) lib/generated/
+	$(Q)cp -f $(asm-offsets) lib/generated/
 
 OBJDIRS += lib/generated
 
 asm_offsets_clean:
-	$(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
+	$(Q)$(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
 	      $(addprefix lib/generated/,$(notdir $(asm-offsets)))
 
diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
index 2318a85f0..3307c25b1 100755
--- a/scripts/mkstandalone.sh
+++ b/scripts/mkstandalone.sh
@@ -94,7 +94,7 @@ function mkstandalone()
 	generate_test "$@" > $standalone
 
 	chmod +x $standalone
-	echo Written $standalone.
+	echo " [WRITE]   $standalone"
 }
 
 if [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ] && [ ! -f "$ERRATATXT" ]; then
diff --git a/x86/Makefile.common b/x86/Makefile.common
index 4ae9a5579..7896fb6c9 100644
--- a/x86/Makefile.common
+++ b/x86/Makefile.common
@@ -48,32 +48,33 @@ FLATLIBS = lib/libcflat.a
 ifeq ($(CONFIG_EFI),y)
 .PRECIOUS: %.efi %.so
 
-%.so: %.o $(FLATLIBS) $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(cstart.o)
-	$(LD) -T $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(EFI_LDFLAGS) -o $@ \
-		$(filter %.o, $^) $(FLATLIBS)
-	@chmod a-x $@
+%.so: LDFLAGS = $(EFI_LDFLAGS) -T $(SRCDIR)/x86/efi/elf_x86_64_efi.lds
+%.so: %.o $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(cstart.o) $(FLATLIBS)
+	$(call cmd,ld)
+	$(Q)@chmod a-x $@
 
 %.efi: %.so
-	$(OBJCOPY) --only-keep-debug $^ $@.debug
-	$(OBJCOPY) --strip-debug $^
-	$(OBJCOPY) --add-gnu-debuglink=$@.debug $^
-	$(OBJCOPY) \
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) --only-keep-debug $^ $@.debug
+	$(Q)$(OBJCOPY) --strip-debug $^
+	$(Q)$(OBJCOPY) --add-gnu-debuglink=$@.debug $^
+	$(Q)$(OBJCOPY) \
 		-j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
 		-j .rela -j .reloc -S --target=$(FORMAT) $< $@
-	@chmod a-x $@
+	$(Q)chmod a-x $@
 else
 # We want to keep intermediate file: %.elf and %.o
 .PRECIOUS: %.elf %.o
 
-%.elf: LDFLAGS += $(arch_LDFLAGS)
-%.elf: %.o $(FLATLIBS) $(SRCDIR)/x86/flat.lds $(cstart.o)
-	$(LD) $(LDFLAGS) -T $(SRCDIR)/x86/flat.lds -o $@ \
-		$(filter %.o, $^) $(FLATLIBS)
-	@chmod a-x $@
+%.elf: LDFLAGS += $(arch_LDFLAGS) -T $(SRCDIR)/x86/flat.lds
+%.elf: %.o $(SRCDIR)/x86/flat.lds $(cstart.o) $(FLATLIBS)
+	$(call cmd,ld)
+	$(Q)@chmod a-x $@
 
 %.flat: %.elf
-	$(OBJCOPY) -O elf32-i386 $^ $@
-	@chmod a-x $@
+	$(call quiet_echo, " [OBJCOPY] $@")
+	$(Q)$(OBJCOPY) -O elf32-i386 $^ $@
+	$(Q)chmod a-x $@
 endif
 
 tests-common = $(TEST_DIR)/vmexit.$(exe) $(TEST_DIR)/tsc.$(exe) \
@@ -103,9 +104,9 @@ test_cases: $(tests-common) $(tests)
 
 $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/x86 -I lib
 
+$(TEST_DIR)/realmode.elf: LDFLAGS = -m elf_i386 -nostdlib -T $(SRCDIR)/$(TEST_DIR)/realmode.lds
 $(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o
-	$(LD) -m elf_i386 -nostdlib -o $@ \
-	      -T $(SRCDIR)/$(TEST_DIR)/realmode.lds $^
+	$(call cmd,ld)
 
 $(TEST_DIR)/realmode.o: bits = $(if $(call cc-option,-m16,""),16,32)
 
@@ -124,7 +125,7 @@ $(TEST_DIR)/hyperv_stimer.$(bin): $(TEST_DIR)/hyperv.o
 $(TEST_DIR)/hyperv_connections.$(bin): $(TEST_DIR)/hyperv.o
 
 arch_clean:
-	$(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \
+	$(Q)$(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \
 	$(TEST_DIR)/.*.d lib/x86/.*.d \
 	$(TEST_DIR)/efi/*.o $(TEST_DIR)/efi/.*.d \
 	$(TEST_DIR)/*.so $(TEST_DIR)/*.efi $(TEST_DIR)/*.debug





[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