]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
Replace all of the duplicated logic for recursing into a subdir with one
authorbdrewery <bdrewery@FreeBSD.org>
Mon, 19 Oct 2015 23:34:35 +0000 (23:34 +0000)
committerbdrewery <bdrewery@FreeBSD.org>
Mon, 19 Oct 2015 23:34:35 +0000 (23:34 +0000)
implementation.  It is duplicated at run-time but is more easily
maintainable now.

Sponsored by: EMC / Isilon Storage Division

share/mk/bsd.subdir.mk

index 9624a11a689a74ba9959be4e0f0ccabc123e8325..10a30168403309b4b7fd43bf69a98af8aabb6883 100644 (file)
@@ -63,30 +63,25 @@ distribute: .MAKE
 .endfor
 .endif
 
+# Subdir code shared among 'make <subdir>', 'make <target>' and SUBDIR_PARALLEL.
+_SUBDIR_SH=    \
+               if test -d ${.CURDIR}/$${dir}.${MACHINE_ARCH}; then \
+                       dir=$${dir}.${MACHINE_ARCH}; \
+               fi; \
+               ${ECHODIR} "===> ${DIRPRFX}$${dir} ($${target})"; \
+               cd ${.CURDIR}/$${dir}; \
+               ${MAKE} $${target} DIRPRFX=${DIRPRFX}$${dir}/
+
 _SUBDIR: .USE .MAKE
 .if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR)
-       @${_+_}for entry in ${SUBDIR:N.WAIT}; do \
-               if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
-                       ${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} (${.TARGET:S,realinstall,install,:S,^_sub.,,})"; \
-                       edir=$${entry}.${MACHINE_ARCH}; \
-                       cd ${.CURDIR}/$${edir}; \
-               else \
-                       ${ECHODIR} "===> ${DIRPRFX}$$entry (${.TARGET:S,realinstall,install,:S,^_sub.,,})"; \
-                       edir=$${entry}; \
-                       cd ${.CURDIR}/$${edir}; \
-               fi; \
-               ${MAKE} ${.TARGET:S,realinstall,install,:S,^_sub.,,} \
-                   DIRPRFX=${DIRPRFX}$$edir/; \
-       done
+       @${_+_}target=${.TARGET:S,realinstall,install,:S,^_sub.,,}; \
+           for dir in ${SUBDIR:N.WAIT}; do ${_SUBDIR_SH}; done
 .endif
 
 ${SUBDIR:N.WAIT}: .PHONY .MAKE
-       ${_+_}@if test -d ${.TARGET}.${MACHINE_ARCH}; then \
-               cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \
-       else \
-               cd ${.CURDIR}/${.TARGET}; \
-       fi; \
-       ${MAKE} all
+       ${_+_}@target=all; \
+           dir=${.TARGET}; \
+           ${_SUBDIR_SH};
 
 # Work around parsing of .if nested in .for by putting .WAIT string into a var.
 __wait= .WAIT
@@ -104,17 +99,9 @@ __deps+= ${__target}_subdir_${__dep}
 .endfor
 ${__target}_subdir_${__dir}: .PHONY .MAKE ${__deps}
 .if !defined(NO_SUBDIR)
-       @${_+_}if test -d ${.CURDIR}/${__dir}.${MACHINE_ARCH}; then \
-                       ${ECHODIR} "===> ${DIRPRFX}${__dir}.${MACHINE_ARCH} (${__target:realinstall=install})"; \
-                       edir=${__dir}.${MACHINE_ARCH}; \
-                       cd ${.CURDIR}/$${edir}; \
-               else \
-                       ${ECHODIR} "===> ${DIRPRFX}${__dir} (${__target:realinstall=install})"; \
-                       edir=${__dir}; \
-                       cd ${.CURDIR}/$${edir}; \
-               fi; \
-               ${MAKE} ${__target:realinstall=install} \
-                   DIRPRFX=${DIRPRFX}$$edir/
+       @${_+_}target=${__target:realinstall=install}; \
+           dir=${__dir}; \
+           ${_SUBDIR_SH};
 .endif
 .endif
 .endfor