2b055e47cafb1400ab0cdbee6d3db7f3a2ab65ce
max
  Fri May 2 01:07:15 2025 -0700
Adding userAppMulti.mk from MarkD's home directory, since he forgot to commit it yesterday and I'm trying to test the Docker release script today and I need a working build on the master branch.

diff --git src/inc/userAppMulti.mk src/inc/userAppMulti.mk
new file mode 100644
index 00000000000..14c8027adc3
--- /dev/null
+++ src/inc/userAppMulti.mk
@@ -0,0 +1,45 @@
+########################################################################
+# Additional rules to use when build multiple programs with userApps.mk
+#
+# Due the way many rules do use patterns, it is necessary to recursively
+# call make to build multiple user apps or CGI loaders in the same directory.
+# Do this using this idiom:
+#
+#   kentSrc = ../..
+#   ifeq $({PROGS},)
+#   PROGS = one two three
+#   include ${kentSrc}/inc/userAppMulti.mk
+#   else
+#   A = ${PROG}
+#   include ${kentSrc}/inc/userApp.mk
+#   endif
+
+
+# Note MAKECMDGOALS is used to set variables, so
+# can not any make magic to combine these names
+
+default:: ${PROGS:%=%_default}
+%_default:
+	${MAKE} default PROG=$*
+compile:: ${PROGS:%=%_compile}
+%_compile:
+	${MAKE} compile PROG=$*
+clean:: ${PROGS:%=%_clean}
+%_clean::
+	${MAKE} clean PROG=$*
+install: ${PROGS:%=%_}
+%_install:
+	${MAKE} install PROG=$*
+cgi::  ${PROGS:%=%_cgi}
+%_cgi:
+	${MAKE} cgi PROG=$*
+alpha:: ${PROGS:%=%_alpha}
+%_alpha:
+	${MAKE} alpha PROG=$*
+beta::  ${PROGS:%=%_beta}
+%_beta:
+	${MAKE} beta PROG=$*
+
+# fake name useds to get pass recurise ifeq
+test::
+	${MAKE} test PROG=testing