xref: /minix3/share/mk/bsd.prog.mk (revision e10916476a646c99f798baff3e2e9a8d04e11c97)
1*e1091647SArun Thomas#	$NetBSD: bsd.prog.mk,v 1.244 2009/12/08 15:18:42 uebayasi Exp $
2*e1091647SArun Thomas#	@(#)bsd.prog.mk	8.2 (Berkeley) 4/2/94
3*e1091647SArun Thomas
4*e1091647SArun Thomas.ifndef HOSTPROG
5*e1091647SArun Thomas
6*e1091647SArun Thomas.include <bsd.init.mk>
7*e1091647SArun Thomas
8*e1091647SArun Thomas#
9*e1091647SArun Thomas# Definitions and targets shared among all programs built by a single
10*e1091647SArun Thomas# Makefile.
11*e1091647SArun Thomas#
12*e1091647SArun Thomas
13*e1091647SArun Thomas##### Minix rule to make the "install" target depend on
14*e1091647SArun Thomas##### "all" and "depend" targets
15*e1091647SArun Thomasrealinstall: realall
16*e1091647SArun Thomasrealall: depend
17*e1091647SArun Thomas
18*e1091647SArun Thomas##### Basic targets
19*e1091647SArun Thomasrealinstall:	proginstall scriptsinstall
20*e1091647SArun Thomasclean:		cleanprog
21*e1091647SArun Thomas
22*e1091647SArun Thomascleanobjs: .PHONY
23*e1091647SArun Thomas
24*e1091647SArun Thomascleanprog: .PHONY cleanobjs cleanextra
25*e1091647SArun Thomas	rm -f a.out [Ee]rrs mklog core *.core
26*e1091647SArun Thomas
27*e1091647SArun Thomas##### Default values
28*e1091647SArun Thomas.if empty(CPPFLAGS:M-nostdinc)
29*e1091647SArun ThomasCPPFLAGS+=	${DESTDIR:D-nostdinc ${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include}
30*e1091647SArun Thomas.endif
31*e1091647SArun Thomas.if empty(CXXFLAGS:M-nostdinc++)
32*e1091647SArun ThomasCXXFLAGS+=	${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} ${DESTDIR}/usr/include/g++}
33*e1091647SArun Thomas.endif
34*e1091647SArun ThomasCFLAGS+=	${COPTS}
35*e1091647SArun ThomasOBJCFLAGS+=	${OBJCOPTS}
36*e1091647SArun ThomasMKDEP_SUFFIXES?=	.o .ln
37*e1091647SArun Thomas
38*e1091647SArun Thomas##### Installed system library definitions
39*e1091647SArun Thomas#
40*e1091647SArun Thomas#	E.g.
41*e1091647SArun Thomas#		LIBC?=${DESTDIR}/usr/lib/libc.a
42*e1091647SArun Thomas#		LIBX11?=${DESTDIR}/usr/X11R7/lib/libX11.a
43*e1091647SArun Thomas#	etc..
44*e1091647SArun Thomas
45*e1091647SArun Thomas# .for _lib in \
46*e1091647SArun Thomas# 	archive asn1 bluetooth bsdmalloc bz2 c c_pic cdk com_err compat \
47*e1091647SArun Thomas# 	crypt crypto crypto_idea crypto_mdc2 crypto_rc5 \
48*e1091647SArun Thomas# 	curses dbm des edit event \
49*e1091647SArun Thomas# 	fetch form fl g2c gcc gnumalloc gssapi hdb heimntlm hx509 intl ipsec \
50*e1091647SArun Thomas# 	kadm5clnt kadm5srv kafs krb5 kvm l lber ldap ldap_r \
51*e1091647SArun Thomas# 	m magic menu objc ossaudio pam pcap pci pmc posix pthread pthread_dbg \
52*e1091647SArun Thomas# 	puffs radius resolv rmt roken rpcsvc rt rump rumpuser skey sl ss \
53*e1091647SArun Thomas# 	ssh ssl termcap usbhid util wrap y z bind9 dns lwres isccfg isccc isc \
54*e1091647SArun Thomas# 	\
55*e1091647SArun Thomas# 	rumpfs_cd9660fs rumpfs_efs rumpfs_ext2fs rumpfs_ffs rumpfs_hfs \
56*e1091647SArun Thomas# 	rumpfs_lfs rumpfs_msdosfs rumpfs_nfs rumpfs_ntfs rumpfs_syspuffs \
57*e1091647SArun Thomas# 	rumpfs_tmpfs rumpfs_udf rumpfs_ufs
58*e1091647SArun Thomas.for _lib in \
59*e1091647SArun Thomas	c curses driver netdriver edit end m sys timers util bz2 l hgfs
60*e1091647SArun Thomas.ifndef LIB${_lib:tu}
61*e1091647SArun ThomasLIB${_lib:tu}=	${DESTDIR}/usr/lib/lib${_lib}.a
62*e1091647SArun Thomas.if ${COMPILER_TYPE} == "ack"
63*e1091647SArun ThomasLIB${_lib:tu}=	${DESTDIR}/usr/lib/i386/lib${_lib}.a
64*e1091647SArun Thomas.elif ${COMPILER_TYPE} == "gnu"
65*e1091647SArun ThomasLIB${_lib:tu}=	${DESTDIR}/usr/gnu/lib/lib${_lib}.a
66*e1091647SArun Thomas.endif
67*e1091647SArun Thomas.MADE:		${LIB${_lib:tu}}	# Note: ${DESTDIR} will be expanded
68*e1091647SArun Thomas.endif
69*e1091647SArun Thomas.endfor
70*e1091647SArun Thomas
71*e1091647SArun Thomas# These need + -> X transformations
72*e1091647SArun Thomas.ifndef LIBSTDCXX
73*e1091647SArun ThomasLIBSTDCXX=	${DESTDIR}/usr/lib/libstdc++.a
74*e1091647SArun Thomas.MADE:		${LIBSTDCXX}
75*e1091647SArun Thomas.endif
76*e1091647SArun Thomas
77*e1091647SArun Thomas.ifndef LIBSUPCXX
78*e1091647SArun ThomasLIBSUPCXX=	${DESTDIR}/usr/lib/libsupc++.a
79*e1091647SArun Thomas.MADE:		${LIBSUPCXX}
80*e1091647SArun Thomas.endif
81*e1091647SArun Thomas
82*e1091647SArun Thomas.for _lib in \
83*e1091647SArun Thomas	dps expat fntstubs fontcache fontconfig fontenc freetype FS \
84*e1091647SArun Thomas	GL GLU ICE lbxutil SM X11 Xau Xaw Xdmcp Xext Xfont Xft \
85*e1091647SArun Thomas	Xi Xinerama xkbfile Xmu Xmuu Xpm Xrandr Xrender Xss Xt \
86*e1091647SArun Thomas	XTrap Xtst Xv Xxf86dga Xxf86misc Xxf86vm
87*e1091647SArun Thomas.ifndef LIB${_lib:tu}
88*e1091647SArun ThomasLIB${_lib:tu}=	${DESTDIR}${X11USRLIBDIR}/lib${_lib}.a
89*e1091647SArun Thomas.MADE:		${LIB${_lib:tu}}	# Note: ${DESTDIR} will be expanded
90*e1091647SArun Thomas.endif
91*e1091647SArun Thomas.endfor
92*e1091647SArun Thomas
93*e1091647SArun Thomas.if defined(RESCUEDIR)
94*e1091647SArun ThomasCPPFLAGS+=	-DRESCUEDIR=\"${RESCUEDIR}\"
95*e1091647SArun Thomas.endif
96*e1091647SArun Thomas
97*e1091647SArun Thomas__proginstall: .USE
98*e1091647SArun Thomas	${_MKTARGET_INSTALL}
99*e1091647SArun Thomas	${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
100*e1091647SArun Thomas		${INSTALLFLAGS} ${STRIPFLAG} ${.ALLSRC} ${.TARGET}
101*e1091647SArun Thomas
102*e1091647SArun Thomas__progdebuginstall: .USE
103*e1091647SArun Thomas	${_MKTARGET_INSTALL}
104*e1091647SArun Thomas	${INSTALL_FILE} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} \
105*e1091647SArun Thomas		${INSTALLFLAGS} ${.ALLSRC} ${.TARGET}
106*e1091647SArun Thomas
107*e1091647SArun Thomas
108*e1091647SArun Thomas
109*e1091647SArun Thomas#
110*e1091647SArun Thomas# Backwards compatibility with Makefiles that assume that bsd.prog.mk
111*e1091647SArun Thomas# can only build a single binary.
112*e1091647SArun Thomas#
113*e1091647SArun Thomas
114*e1091647SArun Thomas_APPEND_MANS=yes
115*e1091647SArun Thomas_APPEND_SRCS=yes
116*e1091647SArun Thomas
117*e1091647SArun Thomas_CCLINKFLAGS=
118*e1091647SArun Thomas.if defined(DESTDIR)
119*e1091647SArun Thomas_CCLINKFLAGS+=	-B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/
120*e1091647SArun Thomas.endif
121*e1091647SArun Thomas
122*e1091647SArun Thomas.if defined(PROG_CXX)
123*e1091647SArun ThomasPROG=		${PROG_CXX}
124*e1091647SArun Thomas_CCLINK=	${CXX} ${_CCLINKFLAGS}
125*e1091647SArun Thomas.endif
126*e1091647SArun Thomas
127*e1091647SArun Thomas.if defined(PROG)
128*e1091647SArun Thomas_CCLINK?=	${CC} ${_CCLINKFLAGS}
129*e1091647SArun Thomas.  if defined(MAN)
130*e1091647SArun ThomasMAN.${PROG}=	${MAN}
131*e1091647SArun Thomas_APPEND_MANS=	no
132*e1091647SArun Thomas.  endif
133*e1091647SArun Thomas.  if !defined(OBJS)
134*e1091647SArun ThomasOBJS=		${OBJS.${PROG}}
135*e1091647SArun Thomas.  endif
136*e1091647SArun Thomas.  if defined(PROGNAME)
137*e1091647SArun ThomasPROGNAME.${PROG}=	${PROGNAME}
138*e1091647SArun Thomas.  endif
139*e1091647SArun Thomas.  if defined(SRCS)
140*e1091647SArun ThomasSRCS.${PROG}=	${SRCS}
141*e1091647SArun Thomas_APPEND_SRCS=	no
142*e1091647SArun Thomas.  endif
143*e1091647SArun Thomas.endif
144*e1091647SArun Thomas
145*e1091647SArun Thomas# Turn the single-program PROG and PROG_CXX variables into their multi-word
146*e1091647SArun Thomas# counterparts, PROGS and PROGS_CXX.
147*e1091647SArun Thomas.if defined(PROG_CXX) && !defined(PROGS_CXX)
148*e1091647SArun ThomasPROGS_CXX=	${PROG_CXX}
149*e1091647SArun Thomas.elif defined(PROG) && !defined(PROGS)
150*e1091647SArun ThomasPROGS=		${PROG}
151*e1091647SArun Thomas.endif
152*e1091647SArun Thomas
153*e1091647SArun Thomas
154*e1091647SArun Thomas
155*e1091647SArun Thomas#
156*e1091647SArun Thomas# Per-program definitions and targets.
157*e1091647SArun Thomas#
158*e1091647SArun Thomas
159*e1091647SArun Thomas# Definitions specific to C programs.
160*e1091647SArun Thomas.for _P in ${PROGS}
161*e1091647SArun ThomasSRCS.${_P}?=	${_P}.c
162*e1091647SArun Thomas_CCLINK.${_P}=	${CC} ${_CCLINKFLAGS}
163*e1091647SArun Thomas.endfor
164*e1091647SArun Thomas
165*e1091647SArun Thomas# Definitions specific to C++ programs.
166*e1091647SArun Thomas.for _P in ${PROGS_CXX}
167*e1091647SArun ThomasSRCS.${_P}?=	${_P}.cc
168*e1091647SArun Thomas_CCLINK.${_P}=	${CXX} ${_CCLINKFLAGS}
169*e1091647SArun Thomas.endfor
170*e1091647SArun Thomas
171*e1091647SArun Thomas# Language-independent definitions.
172*e1091647SArun Thomas.for _P in ${PROGS} ${PROGS_CXX}					# {
173*e1091647SArun Thomas
174*e1091647SArun ThomasBINDIR.${_P}?=		${BINDIR}
175*e1091647SArun ThomasPROGNAME.${_P}?=	${_P}
176*e1091647SArun Thomas
177*e1091647SArun Thomas.if ${MKDEBUG} != "no" && ${OBJECT_FMT} == "ELF" && !commands(${_P})
178*e1091647SArun Thomas_PROGDEBUG.${_P}:=	${PROGNAME.${_P}}.debug
179*e1091647SArun Thomas.endif
180*e1091647SArun Thomas
181*e1091647SArun Thomas##### PROG specific flags.
182*e1091647SArun Thomas
183*e1091647SArun Thomas_LDADD.${_P}=		${LDADD}    ${LDADD.${_P}}
184*e1091647SArun Thomas_LDFLAGS.${_P}=		${LDFLAGS}  ${LDFLAGS.${_P}}
185*e1091647SArun Thomas_LDSTATIC.${_P}=	${LDSTATIC} ${LDSTATIC.${_P}}
186*e1091647SArun Thomas
187*e1091647SArun Thomas##### Build and install rules
188*e1091647SArun Thomas.if !empty(_APPEND_SRCS:M[Yy][Ee][Ss])
189*e1091647SArun ThomasSRCS+=		${SRCS.${_P}} # For bsd.dep.mk
190*e1091647SArun Thomas.endif
191*e1091647SArun Thomas
192*e1091647SArun Thomas_YPSRCS.${_P}=	${SRCS.${_P}:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS.${_P}:M*.y:.y=.h}}
193*e1091647SArun Thomas
194*e1091647SArun ThomasDPSRCS+=		${_YPSRCS.${_P}}
195*e1091647SArun ThomasCLEANFILES+=		${_YPSRCS.${_P}}
196*e1091647SArun Thomas
197*e1091647SArun Thomas.if !empty(SRCS.${_P}:N*.h:N*.sh:N*.fth)
198*e1091647SArun ThomasOBJS.${_P}+=	${SRCS.${_P}:N*.h:N*.sh:N*.fth:R:S/$/.o/g}
199*e1091647SArun ThomasLOBJS.${_P}+=	${LSRCS:.c=.ln} ${SRCS.${_P}:M*.c:.c=.ln}
200*e1091647SArun Thomas.endif
201*e1091647SArun Thomas
202*e1091647SArun Thomas.if defined(OBJS.${_P}) && !empty(OBJS.${_P})			# {
203*e1091647SArun Thomas.NOPATH: ${OBJS.${_P}} ${_P} ${_YPSRCS.${_P}}
204*e1091647SArun Thomas
205*e1091647SArun Thomas${OBJS.${_P}} ${LOBJS.${_P}}: ${DPSRCS}
206*e1091647SArun Thomas
207*e1091647SArun Thomas${_P}: ${LIBCRT0} ${OBJS.${_P}} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
208*e1091647SArun Thomas.if !commands(${_P})
209*e1091647SArun Thomas	${_MKTARGET_LINK}
210*e1091647SArun Thomas	${_CCLINK.${_P}} \
211*e1091647SArun Thomas	    ${DESTDIR:D-Wl,-nostdlib} \
212*e1091647SArun Thomas	    ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} \
213*e1091647SArun Thomas	    ${OBJS.${_P}} ${_LDADD.${_P}} \
214*e1091647SArun Thomas	    ${DESTDIR:D-L${_GCC_LIBGCCDIR}} \
215*e1091647SArun Thomas	    ${_PROGLDOPTS}
216*e1091647SArun Thomas.if defined(PAXCTL_FLAGS.${_P})
217*e1091647SArun Thomas	${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET}
218*e1091647SArun Thomas.endif
219*e1091647SArun Thomas.if ${MKSTRIPIDENT} != "no"
220*e1091647SArun Thomas	${OBJCOPY} -R .ident ${.TARGET}
221*e1091647SArun Thomas.endif
222*e1091647SArun Thomas.endif	# !commands(${_P})
223*e1091647SArun Thomas
224*e1091647SArun Thomas${_P}.ro: ${OBJS.${_P}} ${DPADD}
225*e1091647SArun Thomas	${_MKTARGET_LINK}
226*e1091647SArun Thomas	${LD} -r -dc -o ${.TARGET} ${OBJS.${_P}}
227*e1091647SArun Thomas
228*e1091647SArun Thomas.if defined(_PROGDEBUG.${_P})
229*e1091647SArun Thomas${_PROGDEBUG.${_P}}: ${_P}
230*e1091647SArun Thomas	${_MKTARGET_CREATE}
231*e1091647SArun Thomas	${OBJCOPY} --only-keep-debug ${_P} ${_PROGDEBUG.${_P}}
232*e1091647SArun Thomas	${OBJCOPY} -R .gnu_debuglink --add-gnu-debuglink=${_PROGDEBUG.${_P}} ${_P} \
233*e1091647SArun Thomas	    || rm -f ${_PROGDEBUG.${_P}}
234*e1091647SArun Thomas.endif
235*e1091647SArun Thomas
236*e1091647SArun Thomas.endif	# defined(OBJS.${_P}) && !empty(OBJS.${_P})			# }
237*e1091647SArun Thomas
238*e1091647SArun Thomas.if !defined(MAN.${_P})
239*e1091647SArun ThomasMAN.${_P}=	${_P}.1
240*e1091647SArun Thomas.endif	# !defined(MAN.${_P})
241*e1091647SArun Thomas.if !empty(_APPEND_MANS:M[Yy][Ee][Ss])
242*e1091647SArun ThomasMAN+=		${MAN.${_P}}
243*e1091647SArun Thomas.endif
244*e1091647SArun Thomas
245*e1091647SArun Thomasrealall: ${_P} ${_PROGDEBUG.${_P}}
246*e1091647SArun Thomas
247*e1091647SArun Thomascleanprog: cleanprog-${_P}
248*e1091647SArun Thomascleanprog-${_P}:
249*e1091647SArun Thomas	rm -f ${_P} ${_PROGDEBUG.${_P}}
250*e1091647SArun Thomas
251*e1091647SArun Thomas.if defined(OBJS.${_P}) && !empty(OBJS.${_P})
252*e1091647SArun Thomascleanobjs: cleanobjs-${_P}
253*e1091647SArun Thomascleanobjs-${_P}:
254*e1091647SArun Thomas	rm -f ${OBJS.${_P}} ${LOBJS.${_P}}
255*e1091647SArun Thomas.endif
256*e1091647SArun Thomas
257*e1091647SArun Thomas_PROG_INSTALL+=	proginstall-${_P}
258*e1091647SArun Thomas
259*e1091647SArun Thomas.if !target(proginstall-${_P})						# {
260*e1091647SArun Thomasproginstall-${_P}::	${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \
261*e1091647SArun Thomas		${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}}
262*e1091647SArun Thomas.PRECIOUS:	${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \
263*e1091647SArun Thomas		${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}}
264*e1091647SArun Thomas
265*e1091647SArun Thomas.if ${MKUPDATE} == "no"
266*e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! ${_P} __proginstall
267*e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P})
268*e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! .MADE
269*e1091647SArun Thomas.endif
270*e1091647SArun Thomas.if defined(_PROGDEBUG.${_P})
271*e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! ${_PROGDEBUG.${_P}} __progdebuginstall
272*e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P})
273*e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! .MADE
274*e1091647SArun Thomas.endif
275*e1091647SArun Thomas.endif	#  define(_PROGDEBUG.${_P})
276*e1091647SArun Thomas.else	# MKUPDATE != no
277*e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: ${_P} __proginstall
278*e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P})
279*e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: .MADE
280*e1091647SArun Thomas.endif
281*e1091647SArun Thomas.if defined(_PROGDEBUG.${_P})
282*e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: ${_PROGDEBUG.${_P}} __progdebuginstall
283*e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P})
284*e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: .MADE
285*e1091647SArun Thomas.endif
286*e1091647SArun Thomas.endif	#  defined(_PROGDEBUG.${_P})
287*e1091647SArun Thomas.endif	# MKUPDATE != no
288*e1091647SArun Thomas
289*e1091647SArun Thomas.endif	# !target(proginstall-${_P})					# }
290*e1091647SArun Thomas
291*e1091647SArun Thomaslint: lint-${_P}
292*e1091647SArun Thomaslint-${_P}: ${LOBJS.${_P}}
293*e1091647SArun Thomas.if defined(LOBJS.${_P}) && !empty(LOBJS.${_P})
294*e1091647SArun Thomas	${LINT} ${LINTFLAGS} ${_LDFLAGS.${_P}:C/-L[  ]*/-L/Wg:M-L*} ${LOBJS.${_P}} ${_LDADD.${_P}}
295*e1091647SArun Thomas.endif
296*e1091647SArun Thomas
297*e1091647SArun Thomas.endfor # _P in ${PROGS} ${PROGS_CXX}					# }
298*e1091647SArun Thomas
299*e1091647SArun Thomas.if defined(OBJS) && !empty(OBJS) && \
300*e1091647SArun Thomas    (empty(PROGS) && empty(PROGS_CXX))
301*e1091647SArun Thomascleanobjs: cleanobjs-plain
302*e1091647SArun Thomascleanobjs-plain:
303*e1091647SArun Thomas	rm -f ${OBJS} ${LOBJS}
304*e1091647SArun Thomas.endif
305*e1091647SArun Thomas
306*e1091647SArun Thomas.if !target(proginstall)
307*e1091647SArun Thomasproginstall:: ${_PROG_INSTALL}
308*e1091647SArun Thomas.endif
309*e1091647SArun Thomas.PHONY:		proginstall
310*e1091647SArun Thomas
311*e1091647SArun Thomas
312*e1091647SArun Thomas
313*e1091647SArun Thomasrealall: ${SCRIPTS}
314*e1091647SArun Thomas.if defined(SCRIPTS) && !target(scriptsinstall)				# {
315*e1091647SArun ThomasSCRIPTSDIR?=${BINDIR}
316*e1091647SArun ThomasSCRIPTSOWN?=${BINOWN}
317*e1091647SArun ThomasSCRIPTSGRP?=${BINGRP}
318*e1091647SArun ThomasSCRIPTSMODE?=${BINMODE}
319*e1091647SArun Thomas
320*e1091647SArun Thomasscriptsinstall:: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@}
321*e1091647SArun Thomas.PRECIOUS: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@}
322*e1091647SArun Thomas
323*e1091647SArun Thomas__scriptinstall: .USE
324*e1091647SArun Thomas	${_MKTARGET_INSTALL}
325*e1091647SArun Thomas	${INSTALL_FILE} \
326*e1091647SArun Thomas	    -o ${SCRIPTSOWN_${.ALLSRC:T}:U${SCRIPTSOWN}} \
327*e1091647SArun Thomas	    -g ${SCRIPTSGRP_${.ALLSRC:T}:U${SCRIPTSGRP}} \
328*e1091647SArun Thomas	    -m ${SCRIPTSMODE_${.ALLSRC:T}:U${SCRIPTSMODE}} \
329*e1091647SArun Thomas	    ${.ALLSRC} ${.TARGET}
330*e1091647SArun Thomas
331*e1091647SArun Thomas.for S in ${SCRIPTS:O:u}
332*e1091647SArun Thomas.if ${MKUPDATE} == "no"
333*e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! ${S} __scriptinstall
334*e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${S})
335*e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! .MADE
336*e1091647SArun Thomas.endif
337*e1091647SArun Thomas.else
338*e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: ${S} __scriptinstall
339*e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${S})
340*e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: .MADE
341*e1091647SArun Thomas.endif
342*e1091647SArun Thomas.endif
343*e1091647SArun Thomas.endfor
344*e1091647SArun Thomas.endif									# }
345*e1091647SArun Thomas
346*e1091647SArun Thomas.if !target(scriptsinstall)
347*e1091647SArun Thomasscriptsinstall::
348*e1091647SArun Thomas.endif
349*e1091647SArun Thomas.PHONY:		scriptsinstall
350*e1091647SArun Thomas
351*e1091647SArun Thomas##### Pull in related .mk logic
352*e1091647SArun ThomasLINKSOWN?= ${BINOWN}
353*e1091647SArun ThomasLINKSGRP?= ${BINGRP}
354*e1091647SArun ThomasLINKSMODE?= ${BINMODE}
355*e1091647SArun Thomas.include <bsd.man.mk>
356*e1091647SArun Thomas.include <bsd.files.mk>
357*e1091647SArun Thomas.include <bsd.inc.mk>
358*e1091647SArun Thomas.include <bsd.links.mk>
359*e1091647SArun Thomas.include <bsd.sys.mk>
360*e1091647SArun Thomas.include <bsd.dep.mk>
361*e1091647SArun Thomas
362*e1091647SArun Thomas.if ${COMPILER_TYPE} == "ack"
363*e1091647SArun Thomas.include <bsd.ack.mk>
364*e1091647SArun Thomas.elif ${COMPILER_TYPE} == "gnu"
365*e1091647SArun Thomas.include <bsd.gcc.mk>
366*e1091647SArun Thomas.endif
367*e1091647SArun Thomas
368*e1091647SArun Thomas
369*e1091647SArun Thomascleanextra: .PHONY
370*e1091647SArun Thomas.if defined(CLEANFILES) && !empty(CLEANFILES)
371*e1091647SArun Thomas	rm -f ${CLEANFILES}
372*e1091647SArun Thomas.endif
373*e1091647SArun Thomas
374*e1091647SArun Thomas${TARGETS}:	# ensure existence
375*e1091647SArun Thomas
376*e1091647SArun Thomas###### Minix rule to set up mem allocations for boot image services
377*e1091647SArun Thomas.if defined(INSTALLFLAGS)
378*e1091647SArun Thomasall: .PHONY memalloc
379*e1091647SArun Thomas
380*e1091647SArun Thomasmemalloc: realall
381*e1091647SArun Thomas	${INSTALL} ${INSTALLFLAGS} ${PROG}
382*e1091647SArun Thomas.endif
383*e1091647SArun Thomas
384*e1091647SArun Thomas.endif	# HOSTPROG
385