bsd.prog.mk revision 139111
1141842Sru#	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
2141842Sru# $FreeBSD: head/share/mk/bsd.prog.mk 139111 2004-12-21 09:53:14Z ru $
3141842Sru
4141842Sru.include <bsd.init.mk>
5141842Sru
6141842Sru.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .ln .s .S .asm
77368Sjoerg
87368Sjoerg# XXX The use of COPTS in modern makefiles is discouraged.
97368Sjoerg.if defined(COPTS)
107368SjoergCFLAGS+=${COPTS}
1193151Sphk.endif
127368Sjoerg
1350479Speter.if defined(DEBUG_FLAGS)
147368SjoergCFLAGS+=${DEBUG_FLAGS}
157368Sjoerg.endif
16206622Suqs
177368Sjoerg.if defined(CRUNCH_CFLAGS)
187368SjoergCFLAGS+=${CRUNCH_CFLAGS}
197368Sjoerg.endif
207368Sjoerg
217368Sjoerg.if !defined(DEBUG_FLAGS)
227368SjoergSTRIP?=	-s
2329526Scharnier.endif
247395Sphk
2570403Sru.if defined(NOSHARED) && (${NOSHARED} != "no" && ${NOSHARED} != "NO")
26131500SruLDFLAGS+= -static
27131500Sru.endif
287368Sjoerg
297368Sjoerg.if defined(PROG_CXX)
307395SphkPROG=	${PROG_CXX}
317395Sphk.endif
3270403Sru
3336852Sphk.if defined(PROG)
347395Sphk.if defined(SRCS)
357395Sphk
367395Sphk# If there are Objective C sources, link with Objective C libraries.
37141846Sru.if !empty(SRCS:M*.m)
3870403SruOBJCLIBS?= -lobjc
397368SjoergLDADD+=	${OBJCLIBS}
407368Sjoerg.endif
417368Sjoerg
42131500SruOBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
43131500Sru
447368Sjoerg${PROG}: ${OBJS}
457368Sjoerg.if defined(PROG_CXX)
4681251Sru	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
477368Sjoerg.else
487368Sjoerg	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
497368Sjoerg.endif
507368Sjoerg
517368Sjoerg.else !defined(SRCS)
527368Sjoerg
537368Sjoerg.if !target(${PROG})
547368Sjoerg.if defined(PROG_CXX)
557368SjoergSRCS=	${PROG}.cc
5681251Sru.else
577368SjoergSRCS=	${PROG}.c
5881251Sru.endif
597368Sjoerg
607368Sjoerg# Always make an intermediate object file because:
6129526Scharnier# - it saves time rebuilding when only the library has changed
627368Sjoerg# - the name of the object gets put into the executable symbol table instead of
637368Sjoerg#   the name of a variable temporary object.
647368Sjoerg# - it's useful to keep objects around for crunching.
6579755SddOBJS=	${PROG}.o
667395Sphk
677368Sjoerg${PROG}: ${OBJS}
687368Sjoerg.if defined(PROG_CXX)
697368Sjoerg	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
707368Sjoerg.else
717368Sjoerg	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
7281251Sru.endif
737368Sjoerg.endif
747368Sjoerg
7581251Sru.endif
767368Sjoerg
777368Sjoerg.if	!defined(NO_MAN) && !defined(MAN) && \
7881251Sru	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
797368Sjoerg	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
807368Sjoerg	!defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
8170403Sru	!defined(MAN1aout)
827368SjoergMAN=	${PROG}.1
837368SjoergMAN1=	${MAN}
847368Sjoerg.endif
857368Sjoerg.endif
867368Sjoerg
877368Sjoergall: objwarn ${PROG} ${SCRIPTS}
887368Sjoerg.if !defined(NO_MAN)
897368Sjoergall: _manpages
9081251Sru.endif
917368Sjoerg
927368Sjoerg.if defined(PROG)
9381251SruCLEANFILES+= ${PROG}
947368Sjoerg.endif
957368Sjoerg
9681251Sru.if defined(OBJS)
977368SjoergCLEANFILES+= ${OBJS}
987368Sjoerg.endif
997368Sjoerg
1007368Sjoerg.include <bsd.libnames.mk>
10170403Sru
1027368Sjoerg.if defined(PROG)
1037368Sjoerg_EXTRADEPEND:
1047368Sjoerg.if defined(LDFLAGS) && !empty(LDFLAGS:M-nostdlib)
10570403Sru.if defined(DPADD) && !empty(DPADD)
1067368Sjoerg	echo ${PROG}: ${DPADD} >> ${DEPENDFILE}
1077368Sjoerg.endif
1087368Sjoerg.else
1097368Sjoerg	echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
1107368Sjoerg.if defined(PROG_CXX)
1117368Sjoerg	echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
1127395Sphk.endif
1137395Sphk.endif
1147368Sjoerg.endif
1157368Sjoerg
1167368Sjoerg.if !target(install)
1177368Sjoerg
1187368Sjoerg.if defined(PRECIOUSPROG)
1197368Sjoerg.if !defined(NO_FSCHG)
1207368SjoergINSTALLFLAGS+= -fschg
1217368Sjoerg.endif
1227368SjoergINSTALLFLAGS+= -S
1237368Sjoerg.endif
1247368Sjoerg
1257368Sjoerg_INSTALLFLAGS:=	${INSTALLFLAGS}
1267368Sjoerg.for ie in ${INSTALLFLAGS_EDIT}
1277368Sjoerg_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
1287368Sjoerg.endfor
1297368Sjoerg
1307368Sjoerg.if !target(realinstall) && !defined(INTERNALPROG)
1317368Sjoergrealinstall: _proginstall
1327368Sjoerg.ORDER: beforeinstall _proginstall
1337368Sjoerg_proginstall:
1347368Sjoerg.if defined(PROG)
1357368Sjoerg.if defined(PROGNAME)
1367368Sjoerg	${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
13757793Snik	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
1387368Sjoerg.else
1397368Sjoerg	${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
1407368Sjoerg	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
1417368Sjoerg.endif
1427368Sjoerg.endif
1437368Sjoerg.endif !target(realinstall)
1447368Sjoerg
14581251Sru.if defined(SCRIPTS) && !empty(SCRIPTS)
1467368Sjoergrealinstall: _scriptsinstall
1477368Sjoerg.ORDER: beforeinstall _scriptsinstall
1487368Sjoerg
1497368SjoergSCRIPTSDIR?=	${BINDIR}
1507368SjoergSCRIPTSOWN?=	${BINOWN}
1517368SjoergSCRIPTSGRP?=	${BINGRP}
1527368SjoergSCRIPTSMODE?=	${BINMODE}
1537368Sjoerg
1547368Sjoerg.for script in ${SCRIPTS}
1557368Sjoerg.if defined(SCRIPTSNAME)
1567368SjoergSCRIPTSNAME_${script:T}?=	${SCRIPTSNAME}
1577368Sjoerg.else
1587368SjoergSCRIPTSNAME_${script:T}?=	${script:T:R}
1597368Sjoerg.endif
1607368SjoergSCRIPTSDIR_${script:T}?=	${SCRIPTSDIR}
1617368SjoergSCRIPTSOWN_${script:T}?=	${SCRIPTSOWN}
1627368SjoergSCRIPTSGRP_${script:T}?=	${SCRIPTSGRP}
1637368SjoergSCRIPTSMODE_${script:T}?=	${SCRIPTSMODE}
1647368Sjoerg_scriptsinstall: _SCRIPTSINS_${script:T}
1657368Sjoerg_SCRIPTSINS_${script:T}: ${script}
16615945Swosch	${INSTALL} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
16715945Swosch	    -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
16868756Sben	    ${.ALLSRC} \
1697368Sjoerg	    ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
17029526Scharnier.endfor
17129526Scharnier.endif
17279755Sdd
1737395SphkNLSNAME?=	${PROG}
17436852Sphk.include <bsd.nls.mk>
17529526Scharnier
1767368Sjoerg.include <bsd.files.mk>
1777368Sjoerg.include <bsd.incs.mk>
17829526Scharnier.include <bsd.links.mk>
1797368Sjoerg
18070403Sru.if !defined(NO_MAN)
18129526Scharnierrealinstall: _maninstall
18229526Scharnier.ORDER: beforeinstall _maninstall
18329526Scharnier.endif
184
185.endif
186
187.if !target(lint)
188lint: ${SRCS:M*.c}
189.if defined(PROG)
190	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
191.endif
192.endif
193
194.if !defined(NO_MAN)
195.include <bsd.man.mk>
196.endif
197
198.include <bsd.dep.mk>
199
200.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
201${OBJS}: ${SRCS:M*.h}
202.endif
203
204.include <bsd.obj.mk>
205
206.include <bsd.sys.mk>
207
208.if defined(PORTNAME)
209.include <bsd.pkg.mk>
210.endif
211