bsd.prog.mk revision 204027
11844Swollman#	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
250476Speter# $FreeBSD: head/share/mk/bsd.prog.mk 204027 2010-02-18 03:32:51Z marcel $
31638Srgrimes
494940Sru.include <bsd.init.mk>
51638Srgrimes
6103713Smarkm.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .ln .s .S .asm
71638Srgrimes
8133653Sru# XXX The use of COPTS in modern makefiles is discouraged.
9119607Sru.if defined(COPTS)
10119607SruCFLAGS+=${COPTS}
11119607Sru.endif
12119607Sru
13162210Simp.if ${MK_ASSERT_DEBUG} == "no"
14162210SimpCFLAGS+= -DNDEBUG
15162293SobrienNO_WERROR=
16162210Simp.endif
17162210Simp
18119607Sru.if defined(DEBUG_FLAGS)
19119607SruCFLAGS+=${DEBUG_FLAGS}
20204027SmarcelCXXFLAGS+=${DEBUG_FLAGS}
21179184Sjb
22179184Sjb.if !defined(NO_CTF) && (${DEBUG_FLAGS:M-g} != "")
23179184SjbCTFFLAGS+= -g
24119607Sru.endif
25179184Sjb.endif
26119607Sru
27119607Sru.if defined(CRUNCH_CFLAGS)
28117034SgordonCFLAGS+=${CRUNCH_CFLAGS}
29119607Sru.endif
301638Srgrimes
312827Sjkh.if !defined(DEBUG_FLAGS)
321638SrgrimesSTRIP?=	-s
332827Sjkh.endif
341638Srgrimes
35139112Sru.if defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO")
361844SwollmanLDFLAGS+= -static
371844Swollman.endif
381638Srgrimes
3994424Sru.if defined(PROG_CXX)
4094424SruPROG=	${PROG_CXX}
4194424Sru.endif
4294424Sru
431638Srgrimes.if defined(PROG)
441638Srgrimes.if defined(SRCS)
451638Srgrimes
4636054Sbde# If there are Objective C sources, link with Objective C libraries.
47125119Sru.if !empty(SRCS:M*.m)
48172401Sru.if defined(OBJCLIBS)
4936054SbdeLDADD+=	${OBJCLIBS}
50172401Sru.else
51172401SruDPADD+=	${LIBOBJC} ${LIBPTHREAD}
52172401SruLDADD+=	-lobjc -lpthread
5336054Sbde.endif
54172401Sru.endif
5536054Sbde
561844SwollmanOBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
571638Srgrimes
5894518Sru${PROG}: ${OBJS}
5994518Sru.if defined(PROG_CXX)
6094518Sru	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
6194518Sru.else
6294518Sru	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
6394518Sru.endif
64179184Sjb.if defined(CTFMERGE)
65179184Sjb	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS}
66179184Sjb.endif
6794518Sru
68144893Sharti.else	# !defined(SRCS)
691844Swollman
7094518Sru.if !target(${PROG})
7194424Sru.if defined(PROG_CXX)
7294424SruSRCS=	${PROG}.cc
7394424Sru.else
742351SbdeSRCS=	${PROG}.c
7594424Sru.endif
761638Srgrimes
772351Sbde# Always make an intermediate object file because:
782351Sbde# - it saves time rebuilding when only the library has changed
792351Sbde# - the name of the object gets put into the executable symbol table instead of
802351Sbde#   the name of a variable temporary object.
812351Sbde# - it's useful to keep objects around for crunching.
822351SbdeOBJS=	${PROG}.o
8333624Seivind
8434081Sbde${PROG}: ${OBJS}
8594497Sru.if defined(PROG_CXX)
8694497Sru	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
8794497Sru.else
8894410Sru	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
8933624Seivind.endif
90179184Sjb.if defined(CTFMERGE)
91179184Sjb	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS}
9294518Sru.endif
93179184Sjb.endif
941638Srgrimes
951638Srgrimes.endif
961638Srgrimes
97156813Sru.if	${MK_MAN} != "no" && !defined(MAN) && \
9874806Sru	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
991638Srgrimes	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
10058493Sru	!defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
10174806Sru	!defined(MAN1aout)
10274941SruMAN=	${PROG}.1
10374941SruMAN1=	${MAN}
1041638Srgrimes.endif
1051638Srgrimes.endif
1061638Srgrimes
10797769Sruall: objwarn ${PROG} ${SCRIPTS}
108156813Sru.if ${MK_MAN} != "no"
10996164Sruall: _manpages
11074806Sru.endif
1111638Srgrimes
112119607Sru.if defined(PROG)
113119607SruCLEANFILES+= ${PROG}
114119607Sru.endif
1151638Srgrimes
116119607Sru.if defined(OBJS)
117119607SruCLEANFILES+= ${OBJS}
118119607Sru.endif
119119607Sru
120125620Sru.include <bsd.libnames.mk>
121125620Sru
12255670Sbde.if defined(PROG)
12324750Sbde_EXTRADEPEND:
124125620Sru.if defined(LDFLAGS) && !empty(LDFLAGS:M-nostdlib)
125125620Sru.if defined(DPADD) && !empty(DPADD)
126125620Sru	echo ${PROG}: ${DPADD} >> ${DEPENDFILE}
127125620Sru.endif
128125620Sru.else
12946541Sbde	echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
13094497Sru.if defined(PROG_CXX)
13194497Sru	echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
13224750Sbde.endif
13328945Speter.endif
134125620Sru.endif
13524750Sbde
1361638Srgrimes.if !target(install)
1371638Srgrimes
138137614Sru.if defined(PRECIOUSPROG)
139139111Sru.if !defined(NO_FSCHG)
140137164SruINSTALLFLAGS+= -fschg
141137164Sru.endif
142137614SruINSTALLFLAGS+= -S
143137614Sru.endif
144137164Sru
14549328Shoek_INSTALLFLAGS:=	${INSTALLFLAGS}
14649328Shoek.for ie in ${INSTALLFLAGS_EDIT}
14749328Shoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
14849328Shoek.endfor
14949328Shoek
150125620Sru.if !target(realinstall) && !defined(INTERNALPROG)
15196163Srurealinstall: _proginstall
15299343Sru.ORDER: beforeinstall _proginstall
15396163Sru_proginstall:
1541638Srgrimes.if defined(PROG)
15575083Sru.if defined(PROGNAME)
156100872Sru	${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
15775083Sru	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
15875083Sru.else
159100872Sru	${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
16049328Shoek	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
1611638Srgrimes.endif
16275083Sru.endif
163144893Sharti.endif	# !target(realinstall)
1641638Srgrimes
16575284Sru.if defined(SCRIPTS) && !empty(SCRIPTS)
16675284Srurealinstall: _scriptsinstall
16799343Sru.ORDER: beforeinstall _scriptsinstall
16875284Sru
16975284SruSCRIPTSDIR?=	${BINDIR}
17075284SruSCRIPTSOWN?=	${BINOWN}
17175284SruSCRIPTSGRP?=	${BINGRP}
17275284SruSCRIPTSMODE?=	${BINMODE}
17375284Sru
17475284Sru.for script in ${SCRIPTS}
17575284Sru.if defined(SCRIPTSNAME)
17675284SruSCRIPTSNAME_${script:T}?=	${SCRIPTSNAME}
17775284Sru.else
17875284SruSCRIPTSNAME_${script:T}?=	${script:T:R}
17975284Sru.endif
18075284SruSCRIPTSDIR_${script:T}?=	${SCRIPTSDIR}
18175284SruSCRIPTSOWN_${script:T}?=	${SCRIPTSOWN}
18275284SruSCRIPTSGRP_${script:T}?=	${SCRIPTSGRP}
18375284SruSCRIPTSMODE_${script:T}?=	${SCRIPTSMODE}
18488055Sru_scriptsinstall: _SCRIPTSINS_${script:T}
18588055Sru_SCRIPTSINS_${script:T}: ${script}
186100872Sru	${INSTALL} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
18775284Sru	    -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
18894954Sru	    ${.ALLSRC} \
18975284Sru	    ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
19075284Sru.endfor
19175284Sru.endif
19275284Sru
19399257SruNLSNAME?=	${PROG}
19499257Sru.include <bsd.nls.mk>
19599257Sru
19697769Sru.include <bsd.files.mk>
19796668Sru.include <bsd.incs.mk>
19899256Sru.include <bsd.links.mk>
19996462Sru
200156813Sru.if ${MK_MAN} != "no"
20196164Srurealinstall: _maninstall
20299343Sru.ORDER: beforeinstall _maninstall
20396163Sru.endif
20496163Sru
2051844Swollman.endif
2061638Srgrimes
2071638Srgrimes.if !target(lint)
208103713Smarkmlint: ${SRCS:M*.c}
2091638Srgrimes.if defined(PROG)
210103713Smarkm	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
2111638Srgrimes.endif
2121638Srgrimes.endif
2131638Srgrimes
214156813Sru.if ${MK_MAN} != "no"
2151638Srgrimes.include <bsd.man.mk>
21674842Sru.endif
2171844Swollman
2181844Swollman.include <bsd.dep.mk>
21934081Sbde
22094113Sru.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
22134087Sbde${OBJS}: ${SRCS:M*.h}
22234081Sbde.endif
22334081Sbde
22416663Sjkh.include <bsd.obj.mk>
22576861Skris
22676861Skris.include <bsd.sys.mk>
227139068Spaul
228139068Spaul.if defined(PORTNAME)
229139068Spaul.include <bsd.pkg.mk>
230139068Spaul.endif
231