mk/crunchgen: Fix parallel builds by ordering targets
authorAaron LI <aly@aaronly.me>
Mon, 2 Jul 2018 01:06:31 +0000 (09:06 +0800)
committerAaron LI <aly@aaronly.me>
Mon, 2 Jul 2018 02:04:01 +0000 (10:04 +0800)
Order the build targets (clean, cleandepend, cleandir, obj, objlink,
depend, all, install) to avoid the race in parallel building.  This
change is based on <bsd.subdir.mk>.  Meanwhile, add minor comments to
make the hierarchy clearer in <bsd.subdir.mk>.

Add the 'depend' target for the crunchdir's.

share/mk/bsd.crunchgen.mk
share/mk/bsd.subdir.mk

index 0c6c5c2..f49ed41 100644 (file)
@@ -134,10 +134,11 @@ objs: ${OUTMK} .META
            ${MAKE} -f ${OUTMK} objs
 
 # Use a separate build tree to hold files compiled for this crunchgen binary
-# Yes, this does seem to partly duplicate bsd.subdir.mk, but I can't
-# get that to cooperate with bsd.prog.mk.  Besides, many of the standard
+# Yes, this does seem to partly duplicate <bsd.subdir.mk>, but I can't
+# get that to cooperate with <bsd.prog.mk>.  Besides, many of the standard
 # targets should NOT be propagated into the components.
-.for __target in clean cleandepend cleandir obj objlink
+__targets= clean cleandepend cleandir obj objlink depend
+.for __target in ${__targets}
 .for D in ${CRUNCH_SRCDIRS}
 .for P in ${CRUNCH_PROGS_${D}}
 ${__target}_crunchdir_${P}: .PHONY .MAKE
@@ -155,3 +156,5 @@ clean:
                ${CRUNCHENV} MAKEOBJDIRPREFIX=${CRUNCHOBJS}     \
                    ${MAKE} -f ${OUTMK} clean;                  \
        fi
+
+.ORDER: ${__targets} all install
index 5fb40ab..b1ad6a7 100644 (file)
@@ -69,13 +69,13 @@ _SUBDIR_${__target}_${entry}:
 
 .endfor
 
-.else
+.else  # defined(SUBDIR)
 
 _SUBDIR_${__target}: .USE
 
-.endif
+.endif  # defined(SUBDIR)
 
-.endfor
+.endfor  # ${__targets}
 
 ${SUBDIR}: .PHONY
        @if test -d ${.TARGET}.${MACHINE_ARCH}; then \