e3b5136a693b38d20fb3e15dbf4d71e6d8163407
chmalee
  Tue Aug 18 08:51:21 2026 -0700
userAppMulti.mk: fix broken install target, build shared objects first

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

diff --git src/inc/userAppMulti.mk src/inc/userAppMulti.mk
index d37bef1f13e..f7b96b92542 100644
--- src/inc/userAppMulti.mk
+++ src/inc/userAppMulti.mk
@@ -15,32 +15,32 @@
 #   endif
 
 
 # Note MAKECMDGOALS is used to set variables, so
 # can not any make magic to combine these names
 
 default:: ${PROGS:%=%_default}
 %_default: sharedObjectsBuilt
 	${MAKE} default PROG=$*
 compile:: ${PROGS:%=%_compile}
 %_compile: sharedObjectsBuilt
 	${MAKE} compile PROG=$*
 clean:: ${PROGS:%=%_clean}
 %_clean::
 	${MAKE} clean PROG=$*
-install: ${PROGS:%=%_}
-%_install:
+install:: ${PROGS:%=%_install}
+%_install: sharedObjectsBuilt
 	${MAKE} install PROG=$*
 cgi::  ${PROGS:%=%_cgi}
 %_cgi: sharedObjectsBuilt
 	${MAKE} cgi PROG=$*
 alpha:: ${PROGS:%=%_alpha}
 %_alpha: sharedObjectsBuilt
 	${MAKE} alpha PROG=$*
 beta::  ${PROGS:%=%_beta}
 %_beta: sharedObjectsBuilt
 	${MAKE} beta PROG=$*
 
 # When the programs share a compiled object (an extraObjects entry used by more
 # than one program), build it once here before the per-program sub-makes fan
 # out. Otherwise parallel make lets two sub-makes compile the same object at
 # once, and one truncates the .o while the other links it.