]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Add "pretty" build option
authorAndrew Deason <adeason@sinenomine.net>
Wed, 13 Apr 2011 18:15:57 +0000 (13:15 -0500)
committerDerrick Brashear <shadow@dementix.org>
Wed, 9 Nov 2011 03:39:46 +0000 (19:39 -0800)
Add the capability to do a "pretty" build, where we output something
like "  CC  /path/to/foo.o" to build foo.o, instead of the entire
compiler invocation, similarly to how the Linux kernel build appears.
Add the "pretty" building for CC and LD rules.

This also prints out some helpful information when a command fails,
which can sometimes otherwise be annoying to figure out post-mortem.

To enable the pretty building, make with V=0. To output everything
that is actually run with V=0, make with 'V=0 Q=' .

Note that this does not work with all makes, since not all makes will
propagate command-line-specified variables to sub-makes without -e.
Non-working makes include /usr/ccs/bin/make on HP-UX and Solaris.
However, GNU make will work, as will /usr/xpg4/bin/make on Solaris.

Change-Id: Idce0afffe7d5be88b0743ec3f926a52efb1a6a74
Reviewed-on: http://gerrit.openafs.org/4486
Reviewed-by: Russ Allbery <rra@stanford.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
14 files changed:
src/butc/Makefile.in
src/comerr/Makefile.in
src/config/Makefile.config.in
src/config/Makefile.lwp.in
src/config/Makefile.pthread.in
src/config/Makefile.shared.in
src/export/Makefile.in
src/kopenafs/Makefile.in
src/lwp/Makefile.in
src/pam/Makefile.in
src/ptserver/Makefile.in
src/venus/Makefile.in
src/viced/Makefile.in
src/vol/Makefile.in

index 855542844de777b8abe7cd3f1dd7fceb0c227e9c..8de4bbf820a562b1d09249b451f206196d54cf22 100644 (file)
@@ -63,9 +63,9 @@ tdump: tdump.c AFS_component_version_number.c
 
 butc: ${SOBJS} ${LIBS} ${INCLS} ${HACKS}
        @case ${SYS_NAME} in \
-         rs_aix*) $(AFS_LDRULE) ${SOBJS} ${LIBS} $(LIB_roken) ${XLIBS} \
+         rs_aix*) $(AFS_LDRULE_NOQ) ${SOBJS} ${LIBS} $(LIB_roken) ${XLIBS} \
                /usr/lib/libc_r.a ;; \
-         *)       $(AFS_LDRULE) ${SOBJS} ${LIBS} $(LIB_roken) ${XLIBS} ;; \
+         *)       $(AFS_LDRULE_NOQ) ${SOBJS} ${LIBS} $(LIB_roken) ${XLIBS} ;; \
        esac
 
 tcmain.o: tcmain.c ${INCLS} AFS_component_version_number.c
index 5712f2e871f9dc51cab84dd682a84b9eefabd9d5..104ba8b12c9e592588c0a3004ce628f0b24825b9 100644 (file)
@@ -30,11 +30,11 @@ et_lex.lex.c: et_lex.lex.l
        $(LEX) -t $(srcdir)/et_lex.lex.l > et_lex.lex.c
 
 compile_et:    compile_et.o error_table.o
-       case $(SYS_NAME) in \
+       $(Q)case $(SYS_NAME) in \
        *_linux* | *_umlinux* ) \
-       $(AFS_LDRULE) compile_et.o error_table.o -L${TOP_LIBDIR} -lopr;; \
+       $(AFS_LDRULE_NOQ) compile_et.o error_table.o -L${TOP_LIBDIR} -lopr;; \
        * ) \
-       $(AFS_LDRULE) compile_et.o error_table.o -L${TOP_LIBDIR} -lopr -ll;; \
+       $(AFS_LDRULE_NOQ) compile_et.o error_table.o -L${TOP_LIBDIR} -lopr -ll;; \
        esac
 
 libafscom_err.a: error_msg.o et_name.o com_err.o AFS_component_version_number.o
index 23f29021ab29db168ecc13ee0fcdeb97f269ae03..031bb5421b55a52195c3ccde56ceaf1baf537f1e 100644 (file)
@@ -143,6 +143,51 @@ COMPILE_ET = ${TOP_OBJDIR}/src/comerr/compile_et
 RXGEN = ${TOP_OBJDIR}/src/rxgen/rxgen
 SHELL = /bin/sh
 
+#
+# "Pretty" build line stuff
+#
+
+# Default to disabling the "pretty" build lines
+# If the user specifies 'V=0', the variables below expand to their _V0
+# variants, which enable the "pretty" build lines
+V=1
+
+RUNCMD=RUNCMD () { \
+       echo "  $$1  $$2"; \
+       shift; shift; \
+       "$$@" || failcode=$$?; \
+       if [ x"$$failcode" != x ] ; then \
+               echo >&2; \
+               echo "FAILED COMMAND: $$@" >&2; \
+               echo >&2; \
+               echo "In dir:" >&2; \
+               pwd >&2; \
+               echo >&2; \
+               exit $$failcode; \
+       fi; \
+       exit 0; \
+} ; RUNCMD
+
+RUN_CC_NOQ_V0=${RUNCMD} CC "`pwd`/$@"
+RUN_LD_NOQ_V0=${RUNCMD} LD "`pwd`/$@"
+
+# Prefixing a command with $(Q) will suppress that line from being printed
+# during a "pretty" make, so the RUNCMD function above can decide itself how
+# much to print. The Q is just for "quiet", and Q kinda looks like @.
+#
+# The _NOQ variants of the RUN_ commands are for when a compiler invocation is
+# in the middle of e.g. a switch/case or an if/else, etc. In those cases, we
+# want to prefix the _entire_ command with $(Q), not just the compiler, linker,
+# etc.
+Q_V0=@
+Q=$(Q_V$(V))
+
+RUN_CC=$(Q)$(RUN_CC_NOQ_V$(V))
+RUN_LD=$(Q)$(RUN_LD_NOQ_V$(V))
+
+RUN_CC_NOQ=$(RUN_CC_NOQ_V$(V))
+RUN_LD_NOQ=$(RUN_LD_NOQ_V$(V))
+
 #
 # Common/standard cflags/paths/etc
 # Cflags defaults, will be overridden later if necessary
@@ -162,20 +207,24 @@ COMMON_LDFLAGS=$(LDFLAGS) $(LDFLAGS_hcrypto) $(LDFLAGS_roken) $(DBG) $(OPTMZ)
 # LWP Flags
 LWP_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS)
 LWP_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(XLDFLAGS) $(ARCHFLAGS)
-LWP_CCRULE=$(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+LWP_CCRULE        =$(RUN_CC) $(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+LWP_CCRULE_NOQ=$(RUN_CC_NOQ) $(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
 
 # Pthreaded
 PTH_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS) $(MT_CFLAGS)
 PTH_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(MT_LDFLAGS)
-PTH_CCRULE=$(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+PTH_CCRULE        =$(RUN_CC) $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+PTH_CCRULE_NOQ=$(RUN_CC_NOQ) $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
 
 # Shared
 SHD_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS) $(MT_CFLAGS) $(SHLIB_CFLAGS)
 SHD_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(SHLIB_LDFLAGS)
-SHD_CCRULE=$(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+SHD_CCRULE        =$(RUN_CC) $(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+SHD_CCRULE_NOQ=$(RUN_CC_NOQ) $(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
 
 # Default rules. These will be overriden if the module Makefile specifically
 # includes a particular type (lwp, pthread, or shared)
 
-AFS_LDRULE =$(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE         =$(RUN_LD) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE_NOQ =$(RUN_LD_NOQ) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
 
index 89bb9571f8993ff35da4ef4a111645b6d0f00bdd..00259680652e5307ea2a4c2587786f40a736dab9 100644 (file)
@@ -1,6 +1,7 @@
 AFS_CFLAGS = $(LWP_CFLAGS)
 AFS_LDFLAGS = $(LWP_LDFLAGS)
-AFS_CCRULE =$(LWP_CCRULE)
+AFS_CCRULE     =$(LWP_CCRULE)
+AFS_CCRULE_NOQ =$(LWP_CCRULE_NOQ)
 
 .c.o:
        $(AFS_CCRULE) $<
index 420ee6adea17864913439786a3217120a3a8b28b..f4af720d7a8088c55a2c4c5e501f96162e5a1cd6 100644 (file)
@@ -1,8 +1,10 @@
 AFS_CFLAGS=$(PTH_CFLAGS)
 AFS_LDFLAGS=$(PTH_LDFLAGS)
 AFS_CCRULE=$(PTH_CCRULE)
+AFS_CCRULE_NOQ=$(PTH_CCRULE_NOQ)
 
-AFS_LDRULE=$(MT_CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE=$(RUN_LD) $(MT_CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE_NOQ=$(RUN_LD_NOQ) $(MT_CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
 
 .c.o:
        $(AFS_CCRULE) $<
index 1aee0de40a9d25b7261e68a6693da6cbf34d71da..9a43895a729944a88dda65b95dd59921a661e03c 100644 (file)
@@ -2,8 +2,10 @@
 AFS_CFLAGS=$(SHD_CFLAGS)
 AFS_LDFLAGS=$(SHD_LDFLAGS)
 AFS_CCRULE=$(SHD_CCRULE)
+AFS_CCRULE_NOQ=$(SHD_CCRULE_NOQ)
 
-AFS_LDRULE=$(MT_CC) $(AFS_CFLAGS) $(AFS_LDFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE=$(RUN_LD) $(MT_CC) $(AFS_CFLAGS) $(AFS_LDFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE_NOQ=$(RUN_LD_NOQ) $(MT_CC) $(AFS_CFLAGS) $(AFS_LDFLAGS) $(LDFLAGS_$(@)) -o $@
 
 .c.o:
        $(AFS_CCRULE) $<
index ae10dd711a7b6cffd7e984eb81aabb03dcc09377..ba5446e0c6d4b6cb2a1791fa3b58b8035173e9f1 100644 (file)
@@ -164,8 +164,8 @@ cfgafs64: cfgafs64.o
 
 CFLAGS_cfgexport64.o = -g -q64 -D__XCOFF64__ 
 cfgexport64.o: ${srcdir}/cfgexport.c AFS_component_version_number.c
-       if [ "x$(AIX64)" = "xyes" ]; then  \
-         $(AFS_CCRULE) $(srcdir)/cfgexport.c ; \
+       $(Q)if [ "x$(AIX64)" = "xyes" ]; then  \
+         $(AFS_CCRULE_NOQ) $(srcdir)/cfgexport.c ; \
        fi
 
 cfgexport.o: ${srcdir}/cfgexport.c AFS_component_version_number.c
@@ -173,8 +173,8 @@ cfgafs.o: ${srcdir}/cfgafs.c AFS_component_version_number.c
 
 CFLAGS_cfgafs64.o = -q64
 cfgafs64.o: ${srcdir}/cfgafs.c AFS_component_version_number.c
-       if [ "x$(AIX64)" = "xyes" ]; then  \
-         $(AFS_CCRULE) $(srcdir)/cfgafs.c ; \
+       $(Q)if [ "x$(AIX64)" = "xyes" ]; then  \
+         $(AFS_CCRULE_NOQ) $(srcdir)/cfgafs.c ; \
        fi
 
 clean:
index 2506e0c99f1140105450ad500971e3c3777716b1..f8b28b6fdde897cf899dddec7f08f8941aa42039 100644 (file)
@@ -54,7 +54,7 @@ setpag.o: ${SYS}/setpag.c ${SYS}/afssyscalls.h
 syscall.o: ${SYS}/syscall.s
        @set -e; set -x; case "$(SYS_NAME)" in \
        sgi_*) \
-               $(AFS_CCRULE) ${SYS}/syscall.s; \
+               $(AFS_CCRULE_NOQ) ${SYS}/syscall.s; \
                ;; \
        rs_aix* | hp_ux10*) \
                $(PATH_CPP) -P ${SFLAGS} ${SYS}/syscall.s > syscall.ss; \
index c9cf827c8efba87b963e95e99312928c4ada81e9..af5bdab8796ed3ecc84fd7fad5af31f8db71ec04 100644 (file)
@@ -148,12 +148,12 @@ process.o : process.s process.i386.s process.amd64.s process.c lwp.o
                ${AS} -o process.o process.ss; \
                $(RM) process.ss ;; \
        hp* | *_linux* | *_umlinux* | sgi_64 | sgi_65 ) \
-               $(AFS_CCRULE) -c ${srcdir}/process.c;; \
+               $(AFS_CCRULE_NOQ) -c ${srcdir}/process.c;; \
        alpha_osf1 | alpha_osf20 |  alpha_osf30 | alpha_osf32 | alpha_osf32c | alpha_dux?? ) \
                ${AS} -v  -P -DOSF -I${TOP_INCDIR} -DASSEMBLER ${srcdir}/process.s; \
                ${AS} -v process.i -o process.o;; \
        ia64_hpux11* | hp_ux11* ) \
-               $(AFS_CCRULE) -c ${srcdir}/process.c;; \
+               $(AFS_CCRULE_NOQ) -c ${srcdir}/process.c;; \
        i386_*) \
                $(PATH_CPP) -P -I${TOP_INCDIR} -I${srcdir} ${srcdir}/process.i386.s > process.ss; \
                ${AS} process.ss -o process.o; \
@@ -171,7 +171,7 @@ lwp.o               : lwp.c lwp.h
                rs_aix*) \
                        $(CCOBJ) ${LWP_DBG} ${LWP_OPTMZ} -I${srcdir} -I. -I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} -c ${srcdir}/lwp.c;; \
                *)  \
-                       $(AFS_CCRULE) ${srcdir}/lwp.c;; \
+                       $(AFS_CCRULE_NOQ) ${srcdir}/lwp.c;; \
                esac
 lock.o         : lock.c lock.h lwp.h
 timer.o                : timer.c
index 0d3027aff0019a458a7cdac6eea56de746b8b0fe..1f92502c8533f97604911a94626a586445281a9d 100644 (file)
@@ -69,16 +69,16 @@ pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o \
                $(LIB_hcrypto) $(LIB_roken)
 
 test_pam: test_pam.o
-       set -x; \
+       $(Q)set -x; \
        case "$(SYS_NAME)" in \
        hp_ux* | ia64_hpux*) \
-               $(AFS_LDRULE) test_pam.o ${PAM_LIBS};; \
+               $(AFS_LDRULE_NOQ) test_pam.o ${PAM_LIBS};; \
        sun*_5*) \
-               $(AFS_LDRULE) test_pam.o ${PAM_LIBS};; \
+               $(AFS_LDRULE_NOQ) test_pam.o ${PAM_LIBS};; \
        *linux*) \
-               $(AFS_LDRULE) -rdynamic test_pam.o -lpam -ldl;; \
+               $(AFS_LDRULE_NOQ) -rdynamic test_pam.o -lpam -ldl;; \
        *fbsd*| *nbsd*) \
-               $(AFS_LDRULE) -rdynamic test_pam.o -lpam ;; \
+               $(AFS_LDRULE_NOQ) -rdynamic test_pam.o -lpam ;; \
        *) \
                echo No link line for system $(SYS_NAME). ;; \
        esac
index c40c11d100ca4f8d58816a85780eed8a49b7facb..e9794285507dcef28826a5d65d1aafda6c992ea2 100644 (file)
@@ -184,10 +184,10 @@ readpwd.o: readpwd.c ${LINCLS} AFS_component_version_number.c
 testpt: testpt.o libprot.a ${TOP_LIBDIR}/libcmd.a $(LIBS)
        case "$(SYS_NAME)" in \
        *_darwin_12 ) \
-               $(AFS_LDRULE) testpt.o ${TOP_LIBDIR}/libcmd.a \
+               $(AFS_LDRULE_NOQ) testpt.o ${TOP_LIBDIR}/libcmd.a \
                        libprot.a $(LIBS) $(LIB_roken) ;; \
        * ) \
-               $(AFS_LDRULE) testpt.o -lm ${TOP_LIBDIR}/libcmd.a \
+               $(AFS_LDRULE_NOQ) testpt.o -lm ${TOP_LIBDIR}/libcmd.a \
                        libprot.a $(LIBS) $(LIB_roken) ${XLIBS} ;; \
        esac
 
index a33b22265942e7225cfa56c40b77354b2d6d702a..dd768194572bc2da62a2c3e999b268bb82480bd2 100644 (file)
@@ -115,23 +115,23 @@ whatfid: whatfid.o ${LIBS}
        $(AFS_LDRULE) whatfid.o ${LIBS} $(LIB_roken) ${XLIBS}
 
 fstrace.o: fstrace.c AFS_component_version_number.c
-       case ${SYS_NAME} in \
+       $(Q)case ${SYS_NAME} in \
                sun4_411 | sun4c_411 | sun4m_412 ) \
                        ${CCXPG2} ${DBG} ${OPTMZ} -I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} -I${TOP_INCDIR} -c ${srcdir}/fstrace.c ;; \
                sun*_4* ) \
                        ${CC} ${DBG} ${OPTMZ} -I/usr/xpg2include -I/usr/5include -g -I${TOP_SRCDIR}/config -I${TOP_INCDIR} -I${TOP_INCDIR} -c fstrace.c ;; \
                * ) \
-                       $(AFS_CCRULE) $(srcdir)/fstrace.c ;; \
+                       $(AFS_CCRULE_NOQ) $(srcdir)/fstrace.c ;; \
        esac
 
 fstrace: fstrace.o
-       case ${SYS_NAME} in \
+       $(Q)case ${SYS_NAME} in \
                sun4_411 | sun4c_411 | sun4m_412 ) \
                        ${CCXPG2} ${AFS_CFLAGS} -o fstrace fstrace.o ${TOP_LIBDIR}/libsys.a ${TOP_LIBDIR}/libcmd.a ${TOP_LIBDIR}/util.a $(TOP_LIBDIR)/libopr.a;; \
                sun*_4* ) \
                        ${CC} -L/usr/xpg2lib -L/usr/5lib ${AFS_CFLAGS} -g -o fstrace fstrace.o ${TOP_LIBDIR}/libsys.a ${TOP_LIBDIR}/libcmd.a ${TOP_LIBDIR}/util.a $(TOP_LIBDIR)/libopr.a -lxpg ;; \
                * ) \
-                       $(AFS_LDRULE) fstrace.o ${TOP_LIBDIR}/libsys.a \
+                       $(AFS_LDRULE_NOQ) fstrace.o ${TOP_LIBDIR}/libsys.a \
                                ${TOP_LIBDIR}/libcmd.a ${TOP_LIBDIR}/util.a \
                                $(TOP_LIBDIR)/libopr.a ${XLIBS} \
                                $(LIB_roken);; \
index 706433dfadd6a55fd0df7ff0159e5320cfe5c1d0..84bf59d59459ef392bd42ff9890bead3c4d76a20 100644 (file)
@@ -70,13 +70,13 @@ check_sysid: check_sysid.c
                ${srcdir}/check_sysid.c
 
 fileserver: ${objects} ${headers} ${LIBS}
-       set -x; \
+       $(Q)set -x; \
        case ${SYS_NAME} in \
        rs_aix*) \
            ${CC} -K ${AFS_LDFLAGS} -o fileserver ${objects} \
                ${TOP_LIBDIR}/libaudit.a ${LIBS} $(LIB_roken) ${XLIBS} ;; \
        *) \
-           $(AFS_LDRULE) ${objects} ${TOP_LIBDIR}/libaudit.a \
+           $(AFS_LDRULE_NOQ) ${objects} ${TOP_LIBDIR}/libaudit.a \
                ${LIBS} $(LIB_roken) ${XLIBS} ;; \
        esac
 
index fd7bf9e4acbb864aedd0e9d31322365444b615b6..ac094f8c5d3c2463a75e2c36a50a3b9283a19a6d 100644 (file)
@@ -201,13 +201,13 @@ listinodes.o: listinodes.c AFS_component_version_number.c
        esac
 
 gi: ${TOP_LIBDIR}/libsys.a 
-       case ${SYS_NAME} in \
+       $(Q)case ${SYS_NAME} in \
                *linux* | sgi_* | *fbsd* ) \
                        echo "Don't build gi on ${SYS_NAME}";; \
                *) \
                        ${CC} $(AFS_CPPFLAGS) $(AFS_CFLAGS) \
                                -c ${srcdir}/gi.c ; \
-                       $(AFS_LDRULE) gi.o ${TOP_LIBDIR}/libsys.a;; \
+                       $(AFS_LDRULE_NOQ) gi.o ${TOP_LIBDIR}/libsys.a;; \
        esac
 
 namei_map: ${TOP_LIBDIR}/libsys.a namei_map.o