Annotation of src/share/mk/bsd.prog.mk, Revision 1.279
1.279 ! christos 1: # $NetBSD: bsd.prog.mk,v 1.278 2012/08/24 20:26:24 jmmv Exp $
1.67 mikel 2: # @(#)bsd.prog.mk 8.2 (Berkeley) 4/2/94
1.1 cgd 3:
1.166 lukem 4: .ifndef HOSTPROG
5:
1.138 tv 6: .include <bsd.init.mk>
1.159 thorpej 7: .include <bsd.shlib.mk>
1.167 thorpej 8: .include <bsd.gcc.mk>
1.74 mycroft 9:
1.223 jmmv 10: #
11: # Definitions and targets shared among all programs built by a single
12: # Makefile.
13: #
14:
15: ##### Basic targets
16: realinstall: proginstall scriptsinstall
17:
18: .gdbinit:
19: rm -f .gdbinit
20: .if defined(DESTDIR) && !empty(DESTDIR)
21: echo "set solib-absolute-prefix ${DESTDIR}" > .gdbinit
22: .else
23: touch .gdbinit
1.185 erh 24: .endif
1.223 jmmv 25: .for __gdbinit in ${GDBINIT}
26: echo "source ${__gdbinit}" >> .gdbinit
27: .endfor
1.185 erh 28:
1.267 apb 29: CLEANFILES+= a.out [Ee]rrs mklog core *.core .gdbinit
1.223 jmmv 30:
31: .if defined(SHAREDSTRINGS)
32: CLEANFILES+=strings
33: .c.o:
34: ${CC} -E ${CPPFLAGS} ${CFLAGS} ${.IMPSRC} | xstr -c -
35: @${CC} ${CPPFLAGS} ${CFLAGS} -c x.c -o ${.TARGET}
36: @rm -f x.c
1.1 cgd 37:
1.223 jmmv 38: .cc.o .cpp.o .cxx.o .C.o:
39: ${CXX} -E ${CPPFLAGS} ${CXXFLAGS} ${.IMPSRC} | xstr -c -
40: @mv -f x.c x.cc
41: @${CXX} ${CPPFLAGS} ${CXXFLAGS} -c x.cc -o ${.TARGET}
42: @rm -f x.cc
43: .endif
1.185 erh 44:
1.237 christos 45: .if defined(MKPIE) && (${MKPIE} != "no")
1.238 christos 46: CFLAGS+= ${PIE_CFLAGS}
1.239 christos 47: AFLAGS+= ${PIE_AFLAGS}
1.238 christos 48: LDFLAGS+= ${PIE_LDFLAGS}
1.237 christos 49: .endif
50:
1.25 mycroft 51: CFLAGS+= ${COPTS}
1.279 ! christos 52: .if defined(MKDEBUG) && (${MKDEBUG} != "no")
! 53: CFLAGS+= -g
! 54: .endif
1.212 mrg 55: OBJCFLAGS+= ${OBJCOPTS}
1.193 dsl 56: MKDEP_SUFFIXES?= .o .ln
1.1 cgd 57:
1.247 darran 58: # CTF preserve debug symbols
59: .if defined(MKDTRACE) && (${MKDTRACE} != "no") && (${CFLAGS:M-g} != "")
60: CTFFLAGS+= -g
61: CTFMFLAGS+= -g
62: .endif
63:
1.162 thorpej 64: # ELF platforms depend on crti.o, crtbegin.o, crtend.o, and crtn.o
1.153 pk 65: .ifndef LIBCRTBEGIN
1.167 thorpej 66: LIBCRTBEGIN= ${DESTDIR}/usr/lib/crti.o ${_GCC_CRTBEGIN}
1.152 christos 67: .MADE: ${LIBCRTBEGIN}
1.153 pk 68: .endif
69: .ifndef LIBCRTEND
1.167 thorpej 70: LIBCRTEND= ${_GCC_CRTEND} ${DESTDIR}/usr/lib/crtn.o
1.152 christos 71: .MADE: ${LIBCRTEND}
1.153 pk 72: .endif
1.144 lukem 73: _SHLINKER= ${SHLINKDIR}/ld.elf_so
1.69 thorpej 74:
1.153 pk 75: .ifndef LIBCRT0
76: LIBCRT0= ${DESTDIR}/usr/lib/crt0.o
1.152 christos 77: .MADE: ${LIBCRT0}
1.153 pk 78: .endif
1.95 ross 79:
1.202 lukem 80: ##### Installed system library definitions
81: #
82: # E.g.
83: # LIBC?=${DESTDIR}/usr/lib/libc.a
1.234 mrg 84: # LIBX11?=${DESTDIR}/usr/X11R7/lib/libX11.a
1.202 lukem 85: # etc..
1.269 christos 86: # NB: If you are a library here, add it in bsd.README
1.202 lukem 87:
88: .for _lib in \
1.268 christos 89: archive \
90: asn1 \
1.269 christos 91: atf_c \
92: atf_cxx \
1.268 christos 93: bind9 \
94: bluetooth \
95: bsdmalloc \
96: bz2 \
97: c \
98: c_pic \
99: com_err \
100: compat \
101: crt0 \
102: crypt \
103: crypto \
104: crypto_idea \
105: crypto_mdc2 \
106: crypto_rc5 \
107: curses \
108: dbm \
109: des \
110: dns \
111: edit \
112: event \
1.274 tron 113: expat \
1.268 christos 114: fetch \
115: fl \
116: form \
117: g2c \
118: gcc \
119: gnumalloc \
120: gssapi \
121: hdb \
122: heimbase \
123: heimntlm \
124: hx509 \
125: intl \
126: ipsec \
127: isc \
128: isccc \
129: isccfg \
130: kadm5clnt \
131: kadm5srv \
132: kafs \
133: krb5 \
134: kvm \
135: l \
136: lber \
137: ldap \
138: ldap_r \
139: lua \
140: lwres \
141: m \
142: magic \
143: menu \
144: objc \
145: ossaudio \
146: pam \
147: pcap \
148: pci \
149: pmc \
150: posix \
151: pthread \
152: pthread_dbg \
153: puffs \
154: quota \
155: radius \
156: resolv \
157: rmt \
158: roken \
159: rpcsvc \
160: rt \
161: rump \
162: rumpfs_cd9660fs \
163: rumpfs_efs \
164: rumpfs_ext2fs \
165: rumpfs_ffs \
166: rumpfs_hfs \
167: rumpfs_lfs \
168: rumpfs_msdosfs \
169: rumpfs_nfs \
170: rumpfs_ntfs \
171: rumpfs_syspuffs \
172: rumpfs_tmpfs \
173: rumpfs_udf \
174: rumpfs_ufs \
175: rumpuser \
176: saslc \
177: skey \
178: sl \
179: sqlite3 \
180: ss \
181: ssh \
182: ssl \
183: ssp \
1.269 christos 184: stdcxx \
185: supcxx \
1.268 christos 186: terminfo \
1.270 christos 187: tre \
1.268 christos 188: usbhid \
189: util \
190: wind \
191: wrap \
192: y \
193: z
1.202 lukem 194: .ifndef LIB${_lib:tu}
1.269 christos 195: LIB${_lib:tu}= ${DESTDIR}/usr/lib/lib${_lib:S/xx/++/:S/atf_c/atf-c/}.a
1.202 lukem 196: .MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded
197: .endif
198: .endfor
1.269 christos 199:
1.206 he 200: # PAM applications, if linked statically, need more libraries
201: .if (${MKPIC} == "no")
1.208 christos 202: .if (${MKCRYPTO} != "no")
203: PAM_STATIC_LDADD+= -lssh
204: PAM_STATIC_DPADD+= ${LIBSSH}
205: .endif
206: .if (${MKKERBEROS} != "no")
1.265 he 207: PAM_STATIC_LDADD+= -lkafs -lkrb5 -lhx509 -lwind -lasn1 \
208: -lroken -lcom_err -lheimbase -lcrypto
209: PAM_STATIC_DPADD+= ${LIBKAFS} ${LIBKRB5} ${LIBHX509} ${LIBWIND} ${LIBASN1} \
210: ${LIBROKEN} ${LIBCOM_ERR} ${LIBHEIMBASE} ${LIBCRYPTO}
1.208 christos 211: .endif
212: .if (${MKSKEY} != "no")
213: PAM_STATIC_LDADD+= -lskey
214: PAM_STATIC_DPADD+= ${LIBSKEY}
215: .endif
216: PAM_STATIC_LDADD+= -lradius -lcrypt -lrpcsvc -lutil
217: PAM_STATIC_DPADD+= ${LIBRADIUS} ${LIBCRYPT} ${LIBRPCSVC} ${LIBUTIL}
1.206 he 218: .else
219: PAM_STATIC_LDADD=
220: PAM_STATIC_DPADD=
221: .endif
222:
1.269 christos 223: # NB: If you are a library here, add it in bsd.README
1.202 lukem 224: .for _lib in \
1.268 christos 225: FS \
226: GL \
227: GLU \
228: ICE \
229: SM \
230: X11 \
231: XTrap \
232: Xau \
233: Xaw \
234: Xdmcp \
235: Xext \
236: Xfont \
237: Xft \
238: Xi \
239: Xinerama \
240: Xmu \
241: Xmuu \
242: Xpm \
243: Xrandr \
244: Xrender \
245: Xss \
246: Xt \
247: Xtst \
248: Xv \
249: Xxf86dga \
250: Xxf86misc \
251: Xxf86vm \
252: dps \
253: fntstubs \
254: fontcache \
255: fontconfig \
256: fontenc \
257: freetype \
258: lbxutil \
259: xkbfile
1.202 lukem 260: .ifndef LIB${_lib:tu}
1.233 rtr 261: LIB${_lib:tu}= ${DESTDIR}${X11USRLIBDIR}/lib${_lib}.a
1.202 lukem 262: .MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded
263: .endif
264: .endfor
265:
1.204 lukem 266: .if defined(RESCUEDIR)
267: CPPFLAGS+= -DRESCUEDIR=\"${RESCUEDIR}\"
268: .endif
269:
1.144 lukem 270: _PROGLDOPTS=
271: .if ${SHLINKDIR} != "/usr/libexec" # XXX: change or remove if ld.so moves
272: _PROGLDOPTS+= -Wl,-dynamic-linker=${_SHLINKER}
1.161 itohy 273: .endif
1.187 lukem 274: .if ${SHLIBDIR} != "/usr/lib"
1.264 joerg 275: _PROGLDOPTS+= -Wl,-rpath,${SHLIBDIR} \
1.263 joerg 276: -L=${SHLIBDIR}
1.277 joerg 277: .elif ${SHLIBINSTALLDIR} != "/usr/lib"
278: _PROGLDOPTS+= -Wl,-rpath-link,${DESTDIR}${SHLIBINSTALLDIR} \
279: -L=${SHLIBINSTALLDIR}
1.144 lukem 280: .endif
281:
1.223 jmmv 282: __proginstall: .USE
283: ${_MKTARGET_INSTALL}
284: ${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
285: ${STRIPFLAG} ${.ALLSRC} ${.TARGET}
286:
1.255 pooka 287: __progrumpinstall: .USE
288: ${_MKTARGET_INSTALL}
289: ${INSTALL_FILE} -o ${RUMPBINOWN} -g ${RUMPBINGRP} -m ${RUMPBINMODE} \
290: ${STRIPFLAG} ${.ALLSRC} ${.TARGET}
291:
1.223 jmmv 292: __progdebuginstall: .USE
293: ${_MKTARGET_INSTALL}
294: ${INSTALL_FILE} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} \
295: ${.ALLSRC} ${.TARGET}
296:
297:
298:
299: #
300: # Backwards compatibility with Makefiles that assume that bsd.prog.mk
301: # can only build a single binary.
302: #
303:
304: _APPEND_MANS=yes
305: _APPEND_SRCS=yes
306:
1.231 lukem 307: _CCLINKFLAGS=
308:
1.145 thorpej 309: .if defined(PROG_CXX)
1.223 jmmv 310: PROG= ${PROG_CXX}
1.231 lukem 311: _CCLINK= ${CXX} ${_CCLINKFLAGS}
1.223 jmmv 312: .endif
313:
1.255 pooka 314: .if defined(RUMPPRG)
315: PROG= ${RUMPPRG}
1.275 christos 316: . ifndef CRUNCHEDPROG
317: . if (${MKRUMP} != "no")
1.255 pooka 318: PROGS= ${RUMPPRG} rump.${RUMPPRG}
1.275 christos 319: . else
320: PROGS= ${RUMPPRG}
321: . endif
322: . if defined(SRCS)
323: . if (${MKRUMP} != "no")
1.255 pooka 324: SRCS.rump.${PROG}:= ${SRCS} ${PROG}_rumpops.c ${RUMPSRCS}
1.275 christos 325: . endif
1.255 pooka 326: SRCS+= ${PROG}_hostops.c
1.275 christos 327: . else
1.255 pooka 328: SRCS= ${PROG}.c ${PROG}_hostops.c
1.275 christos 329: . if (${MKRUMP} != "no")
1.255 pooka 330: SRCS.rump.${PROG}= ${PROG}.c ${PROG}_rumpops.c ${RUMPSRCS}
1.275 christos 331: . endif
332: . endif
333: . if (${MKRUMP} != "no")
1.257 pooka 334: DPSRCS+= ${PROG}_rumpops.c ${RUMPSRCS}
1.255 pooka 335: LDADD.rump.${PROG}+= -lrumpclient
336: DPADD.rump.${PROG}+= ${LIBRUMPCLIENT}
337: MAN.rump.${PROG}= # defined but feeling empty
338: _RUMPINSTALL.rump.${PROG}=# defined
1.275 christos 339: . endif
340: . else # CRUNCHEDPROG
1.256 pooka 341: PROGS= ${PROG}
342: CPPFLAGS+= -DCRUNCHOPS
1.275 christos 343: . endif
1.255 pooka 344: .endif
345:
1.223 jmmv 346: .if defined(PROG)
1.231 lukem 347: _CCLINK?= ${CC} ${_CCLINKFLAGS}
1.223 jmmv 348: . if defined(MAN)
349: MAN.${PROG}= ${MAN}
350: _APPEND_MANS= no
351: . endif
352: . if !defined(OBJS)
353: OBJS= ${OBJS.${PROG}}
354: . endif
355: . if defined(PROGNAME)
356: PROGNAME.${PROG}= ${PROGNAME}
357: . endif
358: . if defined(SRCS)
359: SRCS.${PROG}= ${SRCS}
360: _APPEND_SRCS= no
361: . endif
362: .endif
363:
364: # Turn the single-program PROG and PROG_CXX variables into their multi-word
365: # counterparts, PROGS and PROGS_CXX.
1.255 pooka 366: .if !defined(RUMPPRG)
367: . if defined(PROG_CXX) && !defined(PROGS_CXX)
1.223 jmmv 368: PROGS_CXX= ${PROG_CXX}
1.262 jmmv 369: . elif defined(PROG) && !defined(PROGS)
1.223 jmmv 370: PROGS= ${PROG}
1.255 pooka 371: . endif
1.223 jmmv 372: .endif
373:
374: #
375: # Per-program definitions and targets.
376: #
377:
1.271 matt 378: _CCLINK.CDEFAULT= ${CC} ${_CCLINKFLAGS}
1.223 jmmv 379: # Definitions specific to C programs.
380: .for _P in ${PROGS}
381: SRCS.${_P}?= ${_P}.c
1.231 lukem 382: _CCLINK.${_P}= ${CC} ${_CCLINKFLAGS}
1.271 matt 383: _CFLAGS.${_P}= ${CFLAGS} ${CPUFLAGS}
384: _CPPFLAGS.${_P}= ${CPPFLAGS}
385: _COPTS.${_P}= ${COPTS}
1.223 jmmv 386: .endfor
387:
1.271 matt 388: _CCLINK.CXXDEFAULT= ${CXX} ${_CCLINKFLAGS}
1.223 jmmv 389: # Definitions specific to C++ programs.
390: .for _P in ${PROGS_CXX}
391: SRCS.${_P}?= ${_P}.cc
1.231 lukem 392: _CCLINK.${_P}= ${CXX} ${_CCLINKFLAGS}
1.223 jmmv 393: .endfor
394:
395: # Language-independent definitions.
396: .for _P in ${PROGS} ${PROGS_CXX} # {
397:
398: BINDIR.${_P}?= ${BINDIR}
399: PROGNAME.${_P}?= ${_P}
400:
1.249 mrg 401: .if ${MKDEBUG} != "no" && !commands(${_P})
1.223 jmmv 402: _PROGDEBUG.${_P}:= ${PROGNAME.${_P}}.debug
1.145 thorpej 403: .endif
404:
1.223 jmmv 405: .if defined(PAXCTL_FLAGS)
406: PAXCTL_FLAGS.${_P}?= ${PAXCTL_FLAGS}
1.215 lukem 407: .endif
408:
1.223 jmmv 409: ##### PROG specific flags.
1.244 uebayasi 410:
1.278 jmmv 411: _DPADD.${_P}= ${DPADD} ${DPADD.${_P}}
1.223 jmmv 412: _LDADD.${_P}= ${LDADD} ${LDADD.${_P}}
413: _LDFLAGS.${_P}= ${LDFLAGS} ${LDFLAGS.${_P}}
414: _LDSTATIC.${_P}= ${LDSTATIC} ${LDSTATIC.${_P}}
415:
416: ##### Build and install rules
417: .if !empty(_APPEND_SRCS:M[Yy][Ee][Ss])
1.271 matt 418: SRCS+= ${SRCS.${_P}} # For bsd.dep.mk
1.223 jmmv 419: .endif
420:
421: _YPSRCS.${_P}= ${SRCS.${_P}:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS.${_P}:M*.y:.y=.h}}
422:
423: DPSRCS+= ${_YPSRCS.${_P}}
424: CLEANFILES+= ${_YPSRCS.${_P}}
425:
426: .if !empty(SRCS.${_P}:N*.h:N*.sh:N*.fth)
427: OBJS.${_P}+= ${SRCS.${_P}:N*.h:N*.sh:N*.fth:R:S/$/.o/g}
428: LOBJS.${_P}+= ${LSRCS:.c=.ln} ${SRCS.${_P}:M*.c:.c=.ln}
1.157 thorpej 429: .endif
430:
1.223 jmmv 431: .if defined(OBJS.${_P}) && !empty(OBJS.${_P}) # {
432: .NOPATH: ${OBJS.${_P}} ${_P} ${_YPSRCS.${_P}}
433:
1.271 matt 434: .if (defined(USE_COMBINE) && ${USE_COMBINE} != "no" && !commands(${_P}) \
435: && (${_CCLINK.${_P}} == ${_CCLINK.CDEFAULT} \
436: || ${_CCLINK.${_P}} == ${_CCLINK.CXXDEFAULT}) \
437: && !defined(NOCOMBINE.${_P}) && !defined(NOCOMBINE))
438: .for f in ${SRCS.${_P}:N*.h:N*.sh:N*.fth:C/\.[yl]$/.c/g}
439: #_XFLAGS.$f := ${CPPFLAGS.$f:D1} ${CPUFLAGS.$f:D2} \
440: # ${COPTS.$f:D3} ${OBJCOPTS.$f:D4} ${CXXFLAGS.$f:D5}
441: .if (${CPPFLAGS.$f:D1} == "1" || ${CPUFLAGS.$f:D2} == "2" \
442: || ${COPTS.$f:D3} == "3" || ${OBJCOPTS.$f:D4} == "4" \
443: || ${CXXFLAGS.$f:D5} == "5") \
444: || ("${f:M*.[cyl]}" == "" || commands(${f:R:S/$/.o/}))
445: XOBJS.${_P}+= ${f:R:S/$/.o/}
446: .else
447: XSRCS.${_P}+= ${f}
448: NODPSRCS+= ${f}
449: .endif
450: .endfor
451:
1.278 jmmv 452: ${_P}: .gdbinit ${LIBCRT0} ${XOBJS.${_P}} ${SRCS.${_P}} ${DPSRCS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${_DPADD.${_P}}
1.271 matt 453: ${_MKTARGET_LINK}
454: .if defined(DESTDIR)
455: ${_CCLINK.${_P}} -Wl,-nostdlib \
456: ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \
457: -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \
458: -MD --combine ${_CPPFLAGS.${_P}} ${_CFLAGS.${_P}} ${_COPTS.${_P}} \
459: ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \
460: ${_LDADD.${_P}} -L${_GCC_LIBGCCDIR} -L${DESTDIR}/usr/lib
461: .else
462: ${_CCLINK.${_P}} ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \
463: -MD --combine ${_CPPFLAGS.${_P}} ${_COPTS.${_P}}
464: ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \
465: ${_LDADD.${_P}}
466: .endif # defined(DESTDIR)
467: .if defined(CTFMERGE)
468: ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}}
469: .endif
470: .if defined(PAXCTL_FLAGS.${_P})
471: ${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET}
472: .endif
473: .if ${MKSTRIPIDENT} != "no"
474: ${OBJCOPY} -R .ident ${.TARGET}
475: .endif
476:
477: CLEANFILES+= ${_P}.d
478: .if exists(${_P}.d)
479: .include "${_P}.d" # include -MD depend for program.
480: .endif
481: .else # USE_COMBINE
482:
1.223 jmmv 483: ${OBJS.${_P}} ${LOBJS.${_P}}: ${DPSRCS}
1.182 lukem 484:
1.278 jmmv 485: ${_P}: .gdbinit ${LIBCRT0} ${OBJS.${_P}} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${_DPADD.${_P}}
1.223 jmmv 486: .if !commands(${_P})
1.194 lukem 487: ${_MKTARGET_LINK}
1.231 lukem 488: ${_CCLINK.${_P}} \
1.232 lukem 489: ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} \
490: ${OBJS.${_P}} ${_LDADD.${_P}} \
491: ${_PROGLDOPTS}
1.247 darran 492: .if defined(CTFMERGE)
493: ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}}
494: .endif
1.223 jmmv 495: .if defined(PAXCTL_FLAGS.${_P})
496: ${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET}
1.218 christos 497: .endif
1.235 joerg 498: .if ${MKSTRIPIDENT} != "no"
499: ${OBJCOPY} -R .ident ${.TARGET}
500: .endif
1.223 jmmv 501: .endif # !commands(${_P})
1.271 matt 502: .endif # USE_COMBINE
1.183 dsl 503:
1.278 jmmv 504: ${_P}.ro: ${OBJS.${_P}} ${_DPADD.${_P}}
1.207 dsl 505: ${_MKTARGET_LINK}
1.254 joerg 506: ${CC} ${LDFLAGS} -nostdlib -r -Wl,-dc -o ${.TARGET} ${OBJS.${_P}}
1.1 cgd 507:
1.223 jmmv 508: .if defined(_PROGDEBUG.${_P})
1.224 jmmv 509: ${_PROGDEBUG.${_P}}: ${_P}
1.215 lukem 510: ${_MKTARGET_CREATE}
1.251 lukem 511: ( ${OBJCOPY} --only-keep-debug ${_P} ${_PROGDEBUG.${_P}} \
512: && ${OBJCOPY} --strip-debug -p -R .gnu_debuglink \
513: --add-gnu-debuglink=${_PROGDEBUG.${_P}} ${_P} \
514: ) || (rm -f ${_PROGDEBUG.${_P}}; false)
1.215 lukem 515: .endif
516:
1.223 jmmv 517: .endif # defined(OBJS.${_P}) && !empty(OBJS.${_P}) # }
1.1 cgd 518:
1.223 jmmv 519: .if !defined(MAN.${_P})
520: MAN.${_P}= ${_P}.1
521: .endif # !defined(MAN.${_P})
522: .if !empty(_APPEND_MANS:M[Yy][Ee][Ss])
523: MAN+= ${MAN.${_P}}
524: .endif
1.11 mycroft 525:
1.223 jmmv 526: realall: ${_P} ${_PROGDEBUG.${_P}}
1.1 cgd 527:
1.267 apb 528: CLEANFILES+= ${_P} ${_PROGDEBUG.${_P}}
1.134 tls 529:
1.223 jmmv 530: .if defined(OBJS.${_P}) && !empty(OBJS.${_P})
1.267 apb 531: CLEANFILES+= ${OBJS.${_P}} ${LOBJS.${_P}}
1.59 cgd 532: .endif
1.27 mycroft 533:
1.223 jmmv 534: _PROG_INSTALL+= proginstall-${_P}
1.114 mycroft 535:
1.223 jmmv 536: .if !target(proginstall-${_P}) # {
537: proginstall-${_P}:: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \
538: ${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}}
539: .PRECIOUS: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \
540: ${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}}
1.215 lukem 541:
1.172 lukem 542: .if ${MKUPDATE} == "no"
1.255 pooka 543: .if defined(_RUMPINSTALL.${_P})
544: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! ${_P} __progrumpinstall
545: .else
1.223 jmmv 546: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! ${_P} __proginstall
1.255 pooka 547: .endif
1.223 jmmv 548: .if !defined(BUILD) && !make(all) && !make(${_P})
549: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! .MADE
550: .endif
551: .if defined(_PROGDEBUG.${_P})
552: ${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! ${_PROGDEBUG.${_P}} __progdebuginstall
553: .if !defined(BUILD) && !make(all) && !make(${_P})
554: ${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! .MADE
1.215 lukem 555: .endif
1.223 jmmv 556: .endif # define(_PROGDEBUG.${_P})
1.215 lukem 557: .else # MKUPDATE != no
1.255 pooka 558: .if defined(_RUMPINSTALL.${_P})
559: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: ${_P} __progrumpinstall
560: .else
1.223 jmmv 561: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: ${_P} __proginstall
1.255 pooka 562: .endif
1.223 jmmv 563: .if !defined(BUILD) && !make(all) && !make(${_P})
564: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: .MADE
565: .endif
566: .if defined(_PROGDEBUG.${_P})
567: ${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: ${_PROGDEBUG.${_P}} __progdebuginstall
568: .if !defined(BUILD) && !make(all) && !make(${_P})
569: ${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: .MADE
1.154 mycroft 570: .endif
1.223 jmmv 571: .endif # defined(_PROGDEBUG.${_P})
1.215 lukem 572: .endif # MKUPDATE != no
573:
1.223 jmmv 574: .endif # !target(proginstall-${_P}) # }
575:
576: lint: lint-${_P}
577: lint-${_P}: ${LOBJS.${_P}}
578: .if defined(LOBJS.${_P}) && !empty(LOBJS.${_P})
579: ${LINT} ${LINTFLAGS} ${_LDFLAGS.${_P}:C/-L[ ]*/-L/Wg:M-L*} ${LOBJS.${_P}} ${_LDADD.${_P}}
580: .endif
581:
582: .endfor # _P in ${PROGS} ${PROGS_CXX} # }
1.23 mycroft 583:
1.225 jmmv 584: .if defined(OBJS) && !empty(OBJS) && \
585: (empty(PROGS) && empty(PROGS_CXX))
1.267 apb 586: CLEANFILES+= ${OBJS} ${LOBJS}
1.225 jmmv 587: .endif
588:
1.74 mycroft 589: .if !target(proginstall)
1.223 jmmv 590: proginstall:: ${_PROG_INSTALL}
1.74 mycroft 591: .endif
1.197 lukem 592: .PHONY: proginstall
1.74 mycroft 593:
1.223 jmmv 594:
595:
596: realall: ${SCRIPTS}
1.215 lukem 597: .if defined(SCRIPTS) && !target(scriptsinstall) # {
1.65 mycroft 598: SCRIPTSDIR?=${BINDIR}
599: SCRIPTSOWN?=${BINOWN}
600: SCRIPTSGRP?=${BINGRP}
601: SCRIPTSMODE?=${BINMODE}
1.113 mycroft 602:
603: scriptsinstall:: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@}
1.114 mycroft 604: .PRECIOUS: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@}
1.113 mycroft 605:
1.115 mycroft 606: __scriptinstall: .USE
1.192 lukem 607: ${_MKTARGET_INSTALL}
1.139 tv 608: ${INSTALL_FILE} \
1.116 mycroft 609: -o ${SCRIPTSOWN_${.ALLSRC:T}:U${SCRIPTSOWN}} \
610: -g ${SCRIPTSGRP_${.ALLSRC:T}:U${SCRIPTSGRP}} \
611: -m ${SCRIPTSMODE_${.ALLSRC:T}:U${SCRIPTSMODE}} \
1.209 jwise 612: ${.ALLSRC} ${.TARGET}
1.115 mycroft 613:
1.130 sommerfe 614: .for S in ${SCRIPTS:O:u}
1.172 lukem 615: .if ${MKUPDATE} == "no"
1.154 mycroft 616: ${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! ${S} __scriptinstall
617: .if !defined(BUILD) && !make(all) && !make(${S})
618: ${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! .MADE
619: .endif
620: .else
621: ${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: ${S} __scriptinstall
1.103 fredb 622: .if !defined(BUILD) && !make(all) && !make(${S})
1.113 mycroft 623: ${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: .MADE
1.63 christos 624: .endif
1.154 mycroft 625: .endif
1.63 christos 626: .endfor
1.215 lukem 627: .endif # }
1.1 cgd 628:
1.74 mycroft 629: .if !target(scriptsinstall)
630: scriptsinstall::
1.1 cgd 631: .endif
1.197 lukem 632: .PHONY: scriptsinstall
1.1 cgd 633:
1.138 tv 634: ##### Pull in related .mk logic
1.241 apb 635: LINKSOWN?= ${BINOWN}
636: LINKSGRP?= ${BINGRP}
637: LINKSMODE?= ${BINMODE}
1.1 cgd 638: .include <bsd.man.mk>
1.50 jtc 639: .include <bsd.nls.mk>
1.66 christos 640: .include <bsd.files.mk>
1.63 christos 641: .include <bsd.inc.mk>
1.83 mycroft 642: .include <bsd.links.mk>
1.180 lukem 643: .include <bsd.sys.mk>
1.26 mycroft 644: .include <bsd.dep.mk>
1.266 joerg 645: .include <bsd.clang-analyze.mk>
1.267 apb 646: .include <bsd.clean.mk>
1.240 cube 647:
1.138 tv 648: ${TARGETS}: # ensure existence
1.166 lukem 649:
650: .endif # HOSTPROG
CVSweb <webmaster@jp.NetBSD.org>