bsd.prog.mk revision 11136
11844Swollman#	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
211136Swollman#	$Id: bsd.prog.mk,v 1.26 1995/05/07 06:39:30 bde 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
131844SwollmanCXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX}
141844Swollman.endif
151638Srgrimes
162827Sjkh.if !defined(DEBUG_FLAGS)
171638SrgrimesSTRIP?=	-s
182827Sjkh.endif
191638Srgrimes
201638SrgrimesBINGRP?=	bin
211638SrgrimesBINOWN?=	bin
221638SrgrimesBINMODE?=	555
231638Srgrimes
241844SwollmanLIBCRT0?=	${DESTDIR}/usr/lib/crt0.o
251844SwollmanLIBC?=		${DESTDIR}/usr/lib/libc.a
261844SwollmanLIBCOMPAT?=	${DESTDIR}/usr/lib/libcompat.a
271844SwollmanLIBCRYPT?=	${DESTDIR}/usr/lib/libcrypt.a
281844SwollmanLIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
294449SbdeLIBDES?=	${DESTDIR}/usr/lib/libdes.a	# XXX doesn't exist
303520SacheLIBDIALOG?=	${DESTDIR}/usr/lib/libdialog.a
314449SbdeLIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
325898SacheLIBFORMS?=	${DESTDIR}/usr/lib/libforms.a
338081SjkhLIBFTP?=	${DESTDIR}/usr/lib/libftp.a
344449SbdeLIBGCC?=	${DESTDIR}/usr/lib/libgcc.a
351844SwollmanLIBGNUMALLOC?=	${DESTDIR}/usr/lib/libgnumalloc.a
361844SwollmanLIBGNUREGEX?=	${DESTDIR}/usr/lib/libgnuregex.a
374449SbdeLIBKDB?=	${DESTDIR}/usr/lib/libkdb.a	# XXX doesn't exist
384449SbdeLIBKRB?=	${DESTDIR}/usr/lib/libkrb.a	# XXX doesn't exist
394449SbdeLIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
401844SwollmanLIBL?=		${DESTDIR}/usr/lib/libl.a
411844SwollmanLIBM?=		${DESTDIR}/usr/lib/libm.a
423701SpstLIBMD?=		${DESTDIR}/usr/lib/libmd.a
434449SbdeLIBMP?=		${DESTDIR}/usr/lib/libmp.a	# XXX doesn't exist
443404SacheLIBMYTINFO?=	${DESTDIR}/usr/lib/libmytinfo.a
453404SacheLIBNCURSES?=	${DESTDIR}/usr/lib/libncurses.a
464449SbdeLIBPC?=		${DESTDIR}/usr/lib/libpc.a	# XXX doesn't exist
476954SolahLIBPCAP?=	${DESTDIR}/usr/lib/libpcap.a
484449SbdeLIBPLOT?=	${DESTDIR}/usr/lib/libplot.a	# XXX doesn't exist
491844SwollmanLIBREADLINE?=	${DESTDIR}/usr/lib/libreadline.a
501844SwollmanLIBRESOLV?=	${DESTDIR}/usr/lib/libresolv.a
511844SwollmanLIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
524449SbdeLIBSCRYPT?=	${DESTDIR}/usr/lib/libscrypt.a	# XXX don't use, use LIBCRYPT
535898SacheLIBSCSI?=	${DESTDIR}/usr/lib/libscsi.a
541844SwollmanLIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
551844SwollmanLIBTELNET?=	${DESTDIR}/usr/lib/libtelnet.a
562676SrgrimesLIBTERMCAP?=	${DESTDIR}/usr/lib/libtermcap.a
571844SwollmanLIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
584449SbdeLIBY?=		${DESTDIR}/usr/lib/liby.a
594449Sbde
601844Swollman.if defined(NOSHARED)
611844SwollmanLDFLAGS+= -static
621844Swollman.endif
631638Srgrimes
641844Swollman.if defined(DESTDIR)
653860SbdeLDDESTDIR+=	-L${DESTDIR}/usr/lib
661844Swollman.endif
671844Swollman
681638Srgrimes.if defined(PROG)
691638Srgrimes.if defined(SRCS)
701638Srgrimes
711844SwollmanDPSRCS+= ${SRCS:M*.h}
725859Sjkh.if !defined(NOOBJ)
731844SwollmanOBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
745856Sjkh.endif
751638Srgrimes
761844Swollman.if defined(LDONLY)
771638Srgrimes
781844Swollman${PROG}: ${LIBCRT0} ${LIBC} ${DPSRCS} ${OBJS} ${DPADD} 
792351Sbde	${LD} ${LDFLAGS} -o ${.TARGET} ${LIBCRT0} ${OBJS} ${LIBC} ${LDDESTDIR} \
801844Swollman		${LDADD}
811638Srgrimes
821844Swollman.else defined(LDONLY)
831844Swollman
841844Swollman${PROG}: ${DPSRCS} ${OBJS} ${LIBC} ${DPADD}
851844Swollman	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
861844Swollman
871844Swollman.endif
881844Swollman
898321Sbde.else !defined(SRCS)
901844Swollman
912351SbdeSRCS=	${PROG}.c
921638Srgrimes
932351Sbde.if 0
941844Swollman${PROG}: ${DPSRCS} ${SRCS} ${LIBC} ${DPADD}
951844Swollman	${CC} ${LDFLAGS} ${CFLAGS} -o ${.TARGET} ${.CURDIR}/${SRCS} \
961844Swollman		${LDDESTDIR} ${LDADD}
975188Sbde
985188SbdeMKDEP=	-p
992351Sbde.else
1002351Sbde# Always make an intermediate object file because:
1012351Sbde# - it saves time rebuilding when only the library has changed
1022351Sbde# - the name of the object gets put into the executable symbol table instead of
1032351Sbde#   the name of a variable temporary object.
1042351Sbde# - it's useful to keep objects around for crunching.
1052351SbdeOBJS=	${PROG}.o
1062351Sbde${PROG}: ${DPSRCS} ${OBJS} ${LIBC} ${DPADD}
1072351Sbde	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
1082351Sbde.endif
1091638Srgrimes
1101638Srgrimes.endif
1111638Srgrimes
1121638Srgrimes.if	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
1131638Srgrimes	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
1141638Srgrimes	!defined(MAN7) && !defined(MAN8) && !defined(NOMAN)
1151844SwollmanMAN1=	${PROG}.1
1161638Srgrimes.endif
1171638Srgrimes.endif
1181638Srgrimes
1191638Srgrimes_PROGSUBDIR: .USE
1201638Srgrimes.if defined(SUBDIR) && !empty(SUBDIR)
1211638Srgrimes	@for entry in ${SUBDIR}; do \
1225607Sjkh		(${ECHODIR} "===> ${DIRPRFX}$$entry"; \
1231638Srgrimes		if test -d ${.CURDIR}/$${entry}.${MACHINE}; then \
1241638Srgrimes			cd ${.CURDIR}/$${entry}.${MACHINE}; \
1251638Srgrimes		else \
1261638Srgrimes			cd ${.CURDIR}/$${entry}; \
1271638Srgrimes		fi; \
1285607Sjkh		${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/); \
1291638Srgrimes	done
1301638Srgrimes.endif
1311638Srgrimes
1326252Sbde# XXX I think MANDEPEND is only used for groff.  It should be named more
1336252Sbde# generally and perhaps not be in the maninstall dependencies now it is
1346252Sbde# here (or does maninstall always work when nothing is made?),
1356252Sbde
1361638Srgrimes.MAIN: all
13711136Swollmanall: ${PROG} all-man _PROGSUBDIR
1381638Srgrimes
1391638Srgrimes.if !target(clean)
1401638Srgrimesclean: _PROGSUBDIR
1411844Swollman	rm -f a.out [Ee]rrs mklog ${PROG} ${OBJS} ${CLEANFILES} 
1421638Srgrimes.endif
1431638Srgrimes
1441638Srgrimes.if !target(cleandir)
1451638Srgrimescleandir: _PROGSUBDIR
1461844Swollman	rm -f a.out [Ee]rrs mklog ${PROG} ${OBJS} ${CLEANFILES}
1471844Swollman	rm -f ${.CURDIR}/tags .depend
1481844Swollman	cd ${.CURDIR}; rm -rf obj;
1491638Srgrimes.endif
1501638Srgrimes
1511638Srgrimes.if !target(install)
1521638Srgrimes.if !target(beforeinstall)
1531638Srgrimesbeforeinstall:
1541638Srgrimes.endif
1551638Srgrimes.if !target(afterinstall)
1561638Srgrimesafterinstall:
1571638Srgrimes.endif
1581638Srgrimes
1591638Srgrimesrealinstall: _PROGSUBDIR
1601638Srgrimes.if defined(PROG)
1611844Swollman	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
1621996Swollman	    ${INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
1631638Srgrimes.endif
1641638Srgrimes.if defined(HIDEGAME)
1651638Srgrimes	(cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG}; \
1661638Srgrimes	    chown games.bin ${PROG})
1671638Srgrimes.endif
1681638Srgrimes.if defined(LINKS) && !empty(LINKS)
1691638Srgrimes	@set ${LINKS}; \
1701638Srgrimes	while test $$# -ge 2; do \
1711638Srgrimes		l=${DESTDIR}$$1; \
1721638Srgrimes		shift; \
1731638Srgrimes		t=${DESTDIR}$$1; \
1741638Srgrimes		shift; \
1752351Sbde		${ECHO} $$t -\> $$l; \
1761638Srgrimes		rm -f $$t; \
1776031Sjkh		ln ${LN_FLAGS} $$l $$t; \
1781638Srgrimes	done; true
1791638Srgrimes.endif
1801638Srgrimes
1811844Swollmaninstall: afterinstall
1821844Swollman.if !defined(NOMAN)
1831844Swollmanafterinstall: realinstall maninstall
1841844Swollman.else
1851638Srgrimesafterinstall: realinstall
1861844Swollman.endif
1871638Srgrimesrealinstall: beforeinstall
1881638Srgrimes.endif
1891638Srgrimes
1905585SjkhDISTRIBUTION?=	bin
1914442Sphk.if !target(distribute)
1924442Sphkdistribute:
1936716Sphk	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${DISTRIBUTION} SHARED=copies
1944442Sphk.endif
1954442Sphk
1961638Srgrimes.if !target(lint)
1971638Srgrimeslint: ${SRCS} _PROGSUBDIR
1981638Srgrimes.if defined(PROG)
1991638Srgrimes	@${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1
2001638Srgrimes.endif
2011638Srgrimes.endif
2021638Srgrimes
2031638Srgrimes.if !target(obj)
2041638Srgrimes.if defined(NOOBJ)
2051638Srgrimesobj: _PROGSUBDIR
2061638Srgrimes.else
2071638Srgrimesobj: _PROGSUBDIR
2081638Srgrimes	@cd ${.CURDIR}; rm -rf obj; \
2091844Swollman	here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \
2102351Sbde	${ECHO} "$$here -> $$dest"; ln -s $$dest obj; \
2111638Srgrimes	if test -d /usr/obj -a ! -d $$dest; then \
2121638Srgrimes		mkdir -p $$dest; \
2131638Srgrimes	else \
2141638Srgrimes		true; \
2151638Srgrimes	fi;
2161638Srgrimes.endif
2171638Srgrimes.endif
2181638Srgrimes
2191638Srgrimes.if !target(tags)
2201638Srgrimestags: ${SRCS} _PROGSUBDIR
2211638Srgrimes.if defined(PROG)
2221844Swollman	-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC} | \
2231844Swollman	    sed "s;\${.CURDIR}/;;" > tags
2241638Srgrimes.endif
2251638Srgrimes.endif
2261638Srgrimes
2271638Srgrimes.if !defined(NOMAN)
2281638Srgrimes.include <bsd.man.mk>
2291844Swollman.elif !target(maninstall)
2301638Srgrimesmaninstall:
23111136Swollmanall-man:
2321638Srgrimes.endif
2331844Swollman
2346252Sbde_DEPSUBDIR=	_PROGSUBDIR
2351844Swollman.include <bsd.dep.mk>
236