makefile: quiet output support
authorAndrei Pelinescu-Onciul <andrei@iptel.org>
Fri, 9 Oct 2009 13:30:02 +0000 (15:30 +0200)
committerAndrei Pelinescu-Onciul <andrei@iptel.org>
Fri, 9 Oct 2009 14:25:17 +0000 (16:25 +0200)
Support for quiet output (without all the flags and compile
options): make Q=1 or make QUIET=1.
It can be saved in the config (e.g. make config Q=1) and it can be
overridden any time (e.g. make utils Q=0).
Compilation is a little faster in quiet mode and the same speed as
before in normal mode.

Example module output:
CC (gcc) [M tm.so]              uac.o
LD (gcc) [M tm.so]              tm.so

Lib example:
LD (gcc) [L libbinrpc.so.0.1]           libbinrpc.so.0.1

Makefile.defs
Makefile.rules

index f883a0b..a9bd307 100644 (file)
@@ -1901,7 +1901,8 @@ saved_fixed_vars:=        MAIN_NAME  CFG_NAME SCR_NAME \
                PREFIX LOCALBASE \
                TAR \
                INSTALL INSTALL_CFG INSTALL_BIN INSTALL_MODULES INSTALL_DOC \
                PREFIX LOCALBASE \
                TAR \
                INSTALL INSTALL_CFG INSTALL_BIN INSTALL_MODULES INSTALL_DOC \
-               INSTALL_MAN INSTALL_LIB INSTALL_TOUCH INSTALL_SHARE
+               INSTALL_MAN INSTALL_LIB INSTALL_TOUCH INSTALL_SHARE \
+               Q
 
 # variable changeable at compile time
 # extra: prefix DESTDIR BASEDIR basedirt
 
 # variable changeable at compile time
 # extra: prefix DESTDIR BASEDIR basedirt
index 99042c3..55c7897 100644 (file)
@@ -52,9 +52,33 @@ endif
 
 ALLDEP+=makecfg.lst
 
 
 ALLDEP+=makecfg.lst
 
+# returns current type: "" core/unknown, "M" module, "L" libray, "U" util
+crt_type=$(if $(MOD_NAME),M,$(if $(LIB_NAME),L,$(if $(UTIL_NAME),U)))
+
+cmd_CC=$(CC) $(CFLAGS) $(C_INCLUDES) $(INCLUDES) $(C_DEFS) $(DEFS) -c $< -o $@
+cmd_LD=$(LD) $(LDFLAGS) $(objs) $(extra_objs) $(ALL_LIBS) $(SER_RPATH) \
+       -o $(NAME)
+
+# what will be displayed if quiet==silent
+silent_cmd_CC=CC ($(CC)) [$(strip $(crt_type) $(NAME))]                $@
+silent_cmd_LD=LD ($(LD)) [$(strip $(crt_type) $(NAME))]                $@
+
+ifneq (,$(filter 1 yes on, $(Q) $(QUIET)))
+quiet=silent
+Q=1
+else
+Q=0
+quiet=verbose
+endif
+
+quote:= "
+escall= $(subst $$,$$$$,$(subst $(quote),\$(quote),$1))
+exec_cmd= $(if $($(quiet)_cmd_$(1)),\
+                       @echo "$(call escall,$($(quiet)_cmd_$(1)))" ;) $(cmd_$(1))
+
 #implicit rules
 %.o:%.c  $(ALLDEP)
 #implicit rules
 %.o:%.c  $(ALLDEP)
-       $(CC) $(CFLAGS) $(C_INCLUDES) $(INCLUDES) $(C_DEFS) $(DEFS) -c $< -o $@
+       $(call exec_cmd,CC)
 
 %.d: %.c $(ALLDEP)
        @set -e; $(MKDEP) $(CFLAGS) $(C_INCLUDES) $(INCLUDES) $(C_DEFS) $(DEFS) $<\
 
 %.d: %.c $(ALLDEP)
        @set -e; $(MKDEP) $(CFLAGS) $(C_INCLUDES) $(INCLUDES) $(C_DEFS) $(DEFS) $<\
@@ -149,7 +173,7 @@ endif
 
 # normal rules
 $(NAME): $(objs) $(ALLDEP)
 
 # normal rules
 $(NAME): $(objs) $(ALLDEP)
-       $(LD) $(LDFLAGS) $(objs) $(extra_objs) $(ALL_LIBS) $(SER_RPATH) -o $(NAME)
+       $(call exec_cmd,LD)
 
 
 librpath.lst: $(ALLDEP)
 
 
 librpath.lst: $(ALLDEP)