bsd.prog.mk revision 26760
11844Swollman#	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
226760Sjkh#	$Id: bsd.prog.mk,v 1.50 1997/05/23 08:38:46 asami Exp $
31638Srgrimes
41844Swollman.if exists(${.CURDIR}/../Makefile.inc)
51638Srgrimes.include "${.CURDIR}/../Makefile.inc"
61638Srgrimes.endif
71638Srgrimes
81844Swollman.SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S
91638Srgrimes
102827SjkhCFLAGS+=${COPTS} ${DEBUG_FLAGS}
111844Swollman.if defined(DESTDIR)
121844SwollmanCFLAGS+= -I${DESTDIR}/usr/include
1326051SasamiCXXINCLUDES+= -I${DESTDIR}/usr/include/g++
141844Swollman.endif
151638Srgrimes
162827Sjkh.if !defined(DEBUG_FLAGS)
171638SrgrimesSTRIP?=	-s
182827Sjkh.endif
191638Srgrimes
201844Swollman.if defined(NOSHARED)
211844SwollmanLDFLAGS+= -static
221844Swollman.endif
231638Srgrimes
241844Swollman.if defined(DESTDIR)
2524750SbdeLDDESTDIR?=	-L${DESTDIR}${SHLIBDIR} -L${DESTDIR}/usr/lib
2624750Sbde# LDDESTDIR+=	-nostdlib
271844Swollman.endif
281844Swollman
291638Srgrimes.if defined(PROG)
301638Srgrimes.if defined(SRCS)
311638Srgrimes
321844SwollmanDPSRCS+= ${SRCS:M*.h}
331844SwollmanOBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
341638Srgrimes
3524750Sbde${PROG}: ${DPSRCS} ${OBJS}
361844Swollman	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
371844Swollman
388321Sbde.else !defined(SRCS)
391844Swollman
402351SbdeSRCS=	${PROG}.c
411638Srgrimes
422351Sbde# Always make an intermediate object file because:
432351Sbde# - it saves time rebuilding when only the library has changed
442351Sbde# - the name of the object gets put into the executable symbol table instead of
452351Sbde#   the name of a variable temporary object.
462351Sbde# - it's useful to keep objects around for crunching.
472351SbdeOBJS=	${PROG}.o
4824750Sbde${PROG}: ${DPSRCS} ${OBJS}
492351Sbde	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
501638Srgrimes
511638Srgrimes.endif
521638Srgrimes
531638Srgrimes.if	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
541638Srgrimes	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
551638Srgrimes	!defined(MAN7) && !defined(MAN8) && !defined(NOMAN)
561844SwollmanMAN1=	${PROG}.1
571638Srgrimes.endif
581638Srgrimes.endif
591638Srgrimes
601638Srgrimes.MAIN: all
6118340Sswallaceall: objwarn ${PROG} all-man _SUBDIR
621638Srgrimes
631638Srgrimes.if !target(clean)
6416663Sjkhclean: _SUBDIR
6514444Swosch	rm -f a.out Errs errs mklog ${PROG} ${OBJS} ${CLEANFILES} 
6616826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS)
6716437Sphk	rm -rf ${CLEANDIRS}
681638Srgrimes.endif
6916437Sphk.endif
701638Srgrimes
7124750Sbde.if defined(PROG)
7224750Sbde_EXTRADEPEND:
7324750Sbde	echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} ${LDDESTDIR} \
7425110Sbde	    ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE}
7524750Sbde.endif
7624750Sbde
771638Srgrimes.if !target(install)
781638Srgrimes.if !target(beforeinstall)
791638Srgrimesbeforeinstall:
801638Srgrimes.endif
811638Srgrimes
8216663Sjkhrealinstall: beforeinstall
831638Srgrimes.if defined(PROG)
841844Swollman	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
851996Swollman	    ${INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
861638Srgrimes.endif
871638Srgrimes.if defined(HIDEGAME)
881638Srgrimes	(cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG}; \
8923542Sbde	    chown games:bin ${PROG})
901638Srgrimes.endif
911638Srgrimes.if defined(LINKS) && !empty(LINKS)
921638Srgrimes	@set ${LINKS}; \
931638Srgrimes	while test $$# -ge 2; do \
941638Srgrimes		l=${DESTDIR}$$1; \
951638Srgrimes		shift; \
961638Srgrimes		t=${DESTDIR}$$1; \
971638Srgrimes		shift; \
982351Sbde		${ECHO} $$t -\> $$l; \
991638Srgrimes		rm -f $$t; \
1006031Sjkh		ln ${LN_FLAGS} $$l $$t; \
1011638Srgrimes	done; true
1021638Srgrimes.endif
1031638Srgrimes
10416663Sjkhinstall: afterinstall _SUBDIR
1051844Swollman.if !defined(NOMAN)
1061844Swollmanafterinstall: realinstall maninstall
1071844Swollman.else
1081638Srgrimesafterinstall: realinstall
1091844Swollman.endif
1101638Srgrimes.endif
1111638Srgrimes
1125585SjkhDISTRIBUTION?=	bin
1134442Sphk.if !target(distribute)
11416663Sjkhdistribute: _SUBDIR
11526760Sjkh.for dist in ${DISTRIBUTION}
11626760Sjkh	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
11726760Sjkh.endfor
1184442Sphk.endif
1194442Sphk
1201638Srgrimes.if !target(lint)
12116663Sjkhlint: ${SRCS} _SUBDIR
1221638Srgrimes.if defined(PROG)
1231638Srgrimes	@${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1
1241638Srgrimes.endif
1251638Srgrimes.endif
1261638Srgrimes
12724861Sjkh.if defined(NOTAGS)
12824861Sjkhtags:
12924861Sjkh.endif
13024861Sjkh
1311638Srgrimes.if !target(tags)
13216663Sjkhtags: ${SRCS} _SUBDIR
1331638Srgrimes.if defined(PROG)
13424861Sjkh	@cd ${.CURDIR} && gtags ${GTAGSFLAGS}
13524861Sjkh.if defined(HTML)
13624861Sjkh	@cd ${.CURDIR} && htags ${HTAGSFLAGS}
1371638Srgrimes.endif
1381638Srgrimes.endif
13924861Sjkh.endif
1401638Srgrimes
1411638Srgrimes.if !defined(NOMAN)
1421638Srgrimes.include <bsd.man.mk>
1431844Swollman.elif !target(maninstall)
1441638Srgrimesmaninstall:
14511136Swollmanall-man:
1461638Srgrimes.endif
1471844Swollman
1481844Swollman.include <bsd.dep.mk>
14916663Sjkh.include <bsd.obj.mk>
150