836b73dcf9a90141ad0923009f03d2494fdd18ca
markd
  Tue Apr 22 15:17:05 2025 -0700
Replaced shell loops in build paths of makefile to use rules.  This should address issues where errors in some rules are not reported (#35339) and also increase speed of builds using multiple cores

diff --git src/hg/makefile src/hg/makefile
index 822718e13bb..b10d808b9bc 100644
--- src/hg/makefile
+++ src/hg/makefile
@@ -272,53 +272,51 @@
 %.alpha: hgLib
 	cd $* && echo $* && $(MAKE) alpha
 
 #   beta: Destination for the binaries is /usr/local/apache/cgi-bin-beta/
 
 beta: ${BROWSER_BINS:%=%.beta} ${BROWSER_LOADERS:%=%.beta}
 %.beta: hgLib
 	cd $* && echo $* && $(MAKE) beta
 
 # install: Destination for the binaries is ${DESTDIR}/usr/local/apache/cgi-bin
 
 install: ${BROWSER_BINS:%=%.install} ${BROWSER_LOADERS:%=%.install}
 %.install: hgLib
 	cd $* && echo $* && $(MAKE) install
 
-clean::
+clean_browser:: ${BROWSER_BINS:%=%_clean_browser} ${BROWSER_LOADERS:%=%_clean_browser}
 	cd lib && ${MAKE} clean
-	@for D in ${BROWSER_BINS} ${BROWSER_LOADERS}; do \
-		(cd $${D} && ${MAKE} clean;) \
-	done
 	touch non-empty-rm.o
 	- find . -name \*.o -print | xargs rm
 
-clean_utils::
-	@for D in ${UTIL_DIRS}; do \
-		if test ! -s $${D} ; then continue ; fi; \
-		(cd $${D} && ${MAKE} clean;) \
-	done
+%_clean_browser:
+	${MAKE} -C $* clean
 
-clean::	${TEST_DIRS:%=%.clean} ${TEST_EXTRA:%=%.cleanExtra}
+clean_utils:: ${UTIL_DIRS:%=%_clean_utils}
+%_clean_utils:
+	if test -s $* ; then ${MAKE} -C $* clean ; fi
+
+clean:: clean_browser clean_utils ${TEST_DIRS:%=%.clean} ${TEST_EXTRA:%=%.cleanExtra}
 
 %.clean:
-	cd $* && ${MAKE} clean
+	${MAKE} -C $* clean
 
 # these directories are absent in the kent-core repo due to license issues
 %.cleanExtra:
-	@test -s $*/makefile && (cd $* && ${MAKE} clean) || true
+	@test -s $*/makefile && (${MAKE} -C $* clean) || true
 
 
 # tests tests all use test.chromInfo
 .NOTPARALLEL: checkTableCoords.testAll checkTableCoords.test vcfToHgvs.testAll vcfToHgvs.test
 
 
 testAll: $(APPS:%=%.testAll)
 
 %.testAll:
 	@test -s $*/tests/makefile && (echo $*; cd $* && $(MAKE) test) || true
 
 test::	${TEST_DIRS:%=%.test} ${TEST_EXTRA:%=%.test} testAll
 
 %.test: hgLib
-	cd $* && ${MAKE} test
+	${MAKE} -C $* test