bsd.prog.mk revision 96164
1139825Simp#	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
293839Stmm# $FreeBSD: head/share/mk/bsd.prog.mk 96164 2002-05-07 15:42:56Z ru $
393839Stmm
493839Stmm.include <bsd.init.mk>
593839Stmm
693839Stmm.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S .asm
793839Stmm
893839StmmCFLAGS+=${COPTS} ${DEBUG_FLAGS}
993839Stmm
1093839Stmm.if !defined(DEBUG_FLAGS)
1193839StmmSTRIP?=	-s
1293839Stmm.endif
1393839Stmm
1493839Stmm.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" )
1593839StmmLDFLAGS+= -static
1693839Stmm.endif
1793839Stmm
1893839Stmm.if defined(PROG_CXX)
1993839StmmPROG=	${PROG_CXX}
2093839Stmm.endif
2193839Stmm
2293839Stmm.if defined(PROG)
2393839Stmm.if defined(SRCS)
2493839Stmm
2593839Stmm# If there are Objective C sources, link with Objective C libraries.
2693839Stmm.if ${SRCS:M*.m} != ""
2793839StmmOBJCLIBS?= -lobjc
2893839StmmLDADD+=	${OBJCLIBS}
2993839Stmm.endif
3093839Stmm
3193839StmmOBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
3293839Stmm
3393839Stmm${PROG}: ${OBJS}
3493839Stmm.if defined(PROG_CXX)
3593839Stmm	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
3693839Stmm.else
3793839Stmm	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
3893839Stmm.endif
3993839Stmm
4093839Stmm.else !defined(SRCS)
4193839Stmm
4293839Stmm.if !target(${PROG})
4393839Stmm.if defined(PROG_CXX)
4493839StmmSRCS=	${PROG}.cc
4593839Stmm.else
4693839StmmSRCS=	${PROG}.c
4793839Stmm.endif
4893839Stmm
4993839Stmm# Always make an intermediate object file because:
5093839Stmm# - it saves time rebuilding when only the library has changed
51146411Smarius# - the name of the object gets put into the executable symbol table instead of
52146411Smarius#   the name of a variable temporary object.
53146411Smarius# - it's useful to keep objects around for crunching.
54146411SmariusOBJS=	${PROG}.o
55146411Smarius
56146411Smarius${PROG}: ${OBJS}
57146411Smarius.if defined(PROG_CXX)
5893839Stmm	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
5993839Stmm.else
6093839Stmm	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
61146416Smarius.endif
6293839Stmm.endif
63146416Smarius
64146411Smarius.endif
65146416Smarius
6693839Stmm.if	!defined(NOMAN) && !defined(MAN) && \
6793839Stmm	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
68133589Smarius	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
69133589Smarius	!defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
7093839Stmm	!defined(MAN1aout)
7193839StmmMAN=	${PROG}.1
72155726SmariusMAN1=	${MAN}
7393839Stmm.endif
7493839Stmm.endif
7593839Stmm
76137813Smariusall: objwarn ${PROG} ${SCRIPTS} ${FILES}
7793839Stmm.if !defined(NOMAN)
7893839Stmmall: _manpages
7993839Stmm.endif
80146411Smarius
81146411SmariusCLEANFILES+= ${PROG} ${OBJS}
82146411Smarius
83146411Smarius.if defined(PROG)
84146411Smarius_EXTRADEPEND:
85146411Smarius.if ${OBJFORMAT} == aout
86146411Smarius	echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} \
87146411Smarius	    ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE}
88146411Smarius.else
89146411Smarius	echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
90146411Smarius.if defined(PROG_CXX)
91146411Smarius	echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
92146411Smarius.endif
93146411Smarius.endif
94227848Smarius.endif
95146411Smarius
96146411Smarius.if !target(install)
97146411Smarius.if !target(beforeinstall)
98146411Smariusbeforeinstall:
99146411Smarius.endif
100146411Smarius
101146411Smarius_INSTALLFLAGS:=	${INSTALLFLAGS}
102146411Smarius.for ie in ${INSTALLFLAGS_EDIT}
103146411Smarius_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
104146411Smarius.endfor
105146411Smarius
106146411Smarius.if !target(realinstall)
107146411Smariusrealinstall: _proginstall
108133589Smarius_proginstall:
10993839Stmm.if defined(PROG)
110221958Smarius.if defined(PROGNAME)
111201005Smarius	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
112221958Smarius	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
113221958Smarius.else
114221958Smarius	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
115133589Smarius	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
116133589Smarius.endif
117133589Smarius.endif
118133589Smarius.if defined(HIDEGAME)
119133589Smarius	(cd ${DESTDIR}${ORIGBINDIR}; ln -fs dm ${PROG}; \
120133589Smarius	    chown -h ${BINOWN}:${ORIGBINGRP} ${PROG})
121146411Smarius.endif
122137813Smarius
123133589Smariusrealinstall:
124137813Smarius.if defined(LINKS) && !empty(LINKS)
12593839Stmm	@set ${LINKS}; \
126170843Smarius	while test $$# -ge 2; do \
12793839Stmm		l=${DESTDIR}$$1; \
128137813Smarius		shift; \
129137813Smarius		t=${DESTDIR}$$1; \
130146416Smarius		shift; \
131146416Smarius		${ECHO} $$t -\> $$l; \
132146411Smarius		ln -f $$l $$t; \
133201371Smarius	done; true
134201371Smarius.endif
135201371Smarius.if defined(SYMLINKS) && !empty(SYMLINKS)
136146411Smarius	@set ${SYMLINKS}; \
137146416Smarius	while test $$# -ge 2; do \
138146416Smarius		l=$$1; \
139146411Smarius		shift; \
14093839Stmm		t=${DESTDIR}$$1; \
141146411Smarius		shift; \
142146411Smarius		${ECHO} $$t -\> $$l; \
143146411Smarius		ln -fs $$l $$t; \
144146411Smarius	done; true
145146411Smarius.endif
146146411Smarius.endif !target(realinstall)
147155726Smariusrealinstall: beforeinstall
148137813Smarius
149146411Smarius.if defined(SCRIPTS) && !empty(SCRIPTS)
150137813Smariusrealinstall: _scriptsinstall
151155726Smarius
152155726SmariusSCRIPTSDIR?=	${BINDIR}
153155726SmariusSCRIPTSOWN?=	${BINOWN}
154155726SmariusSCRIPTSGRP?=	${BINGRP}
155155726SmariusSCRIPTSMODE?=	${BINMODE}
156155726Smarius
157155726Smarius.for script in ${SCRIPTS}
158155726Smarius.if defined(SCRIPTSNAME)
159155726SmariusSCRIPTSNAME_${script:T}?=	${SCRIPTSNAME}
160155726Smarius.else
161155726SmariusSCRIPTSNAME_${script:T}?=	${script:T:R}
162155726Smarius.endif
163155726SmariusSCRIPTSDIR_${script:T}?=	${SCRIPTSDIR}
164155726SmariusSCRIPTSOWN_${script:T}?=	${SCRIPTSOWN}
165155726SmariusSCRIPTSGRP_${script:T}?=	${SCRIPTSGRP}
166155726SmariusSCRIPTSMODE_${script:T}?=	${SCRIPTSMODE}
167155726Smarius_scriptsinstall: _SCRIPTSINS_${script:T}
168137813Smarius_SCRIPTSINS_${script:T}: ${script}
169137813Smarius	${INSTALL} ${COPY} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
170146411Smarius	    -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
17193839Stmm	    ${.ALLSRC} \
17293839Stmm	    ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
17393839Stmm.endfor
174171553Sdwmalone.endif
175171553Sdwmalone
176171553Sdwmalone.if defined(FILES) && !empty(FILES)
177171553Sdwmalonerealinstall: _filesinstall
178171553Sdwmalone
17993839StmmFILESDIR?=	${BINDIR}
18093839StmmFILESOWN?=	${SHAREOWN}
18193839StmmFILESGRP?=	${SHAREGRP}
182146411SmariusFILESMODE?=	${SHAREMODE}
183146411Smarius
184201371Smarius.for file in ${FILES}
185146416Smarius.if defined(FILESNAME)
186146416SmariusFILESNAME_${file:T}?=	${FILESNAME}
187146411Smarius.else
188146411SmariusFILESNAME_${file:T}?=	${file:T}
18993839Stmm.endif
190FILESDIR_${file:T}?=	${FILESDIR}
191FILESOWN_${file:T}?=	${FILESOWN}
192FILESGRP_${file:T}?=	${FILESGRP}
193FILESMODE_${file:T}?=	${FILESMODE}
194_filesinstall: _FILESINS_${file:T}
195_FILESINS_${file:T}: ${file}
196	${INSTALL} ${COPY} -o ${FILESOWN_${.ALLSRC:T}} \
197	    -g ${FILESGRP_${.ALLSRC:T}} -m ${FILESMODE_${.ALLSRC:T}} \
198	    ${.ALLSRC} \
199	    ${DESTDIR}${FILESDIR_${.ALLSRC:T}}/${FILESNAME_${.ALLSRC:T}}
200.endfor
201.endif
202
203.if !defined(NOMAN)
204realinstall: _maninstall
205.endif
206
207install: afterinstall
208afterinstall: realinstall
209.endif
210
211.if !target(lint)
212lint: ${SRCS}
213.if defined(PROG)
214	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} | more 2>&1
215.endif
216.endif
217
218.if defined(NOTAGS)
219tags:
220.endif
221
222.if !target(tags)
223tags: ${SRCS}
224.if defined(PROG)
225	@cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR}
226.if defined(HTML)
227	@cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
228.endif
229.endif
230.endif
231
232.if !defined(NOMAN)
233.include <bsd.man.mk>
234.endif
235
236.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
237.include <bsd.libnames.mk>
238.endif
239
240.include <bsd.dep.mk>
241
242.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
243${OBJS}: ${SRCS:M*.h}
244.endif
245
246.include <bsd.obj.mk>
247
248.include <bsd.sys.mk>
249