bsd.prog.mk revision 94501
11556Srgrimes#	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
21556Srgrimes# $FreeBSD: head/share/mk/bsd.prog.mk 94501 2002-04-12 11:21:09Z ru $
31556Srgrimes
41556Srgrimes.if !target(__initialized__)
51556Srgrimes__initialized__:
61556Srgrimes.if exists(${.CURDIR}/../Makefile.inc)
71556Srgrimes.include "${.CURDIR}/../Makefile.inc"
81556Srgrimes.endif
91556Srgrimes.endif
101556Srgrimes
111556Srgrimes.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S
121556Srgrimes
131556SrgrimesCFLAGS+=${COPTS} ${DEBUG_FLAGS}
141556Srgrimes
151556Srgrimes.if !defined(DEBUG_FLAGS)
161556SrgrimesSTRIP?=	-s
171556Srgrimes.endif
181556Srgrimes
191556Srgrimes.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" )
201556SrgrimesLDFLAGS+= -static
211556Srgrimes.endif
221556Srgrimes
231556Srgrimes.if defined(PROG_CXX)
241556SrgrimesPROG=	${PROG_CXX}
251556Srgrimes.endif
261556Srgrimes
271556Srgrimes.if defined(PROG)
281556Srgrimes.if !target(${PROG})
291556Srgrimes.if defined(SRCS)
301556Srgrimes
311556Srgrimes# If there are Objective C sources, link with Objective C libraries.
321556Srgrimes.if ${SRCS:M*.m} != ""
331556SrgrimesOBJCLIBS?= -lobjc
341556SrgrimesLDADD+=	${OBJCLIBS}
351556Srgrimes.endif
361556Srgrimes
371556SrgrimesOBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
3827967Ssteve
3927967Ssteve.else !defined(SRCS)
4027967Ssteve
4127958Ssteve.if defined(PROG_CXX)
4250471SpeterSRCS=	${PROG}.cc
4327967Ssteve.else
441556SrgrimesSRCS=	${PROG}.c
451556Srgrimes.endif
461556Srgrimes
471556Srgrimes# Always make an intermediate object file because:
481556Srgrimes# - it saves time rebuilding when only the library has changed
491556Srgrimes# - the name of the object gets put into the executable symbol table instead of
501556Srgrimes#   the name of a variable temporary object.
511556Srgrimes# - it's useful to keep objects around for crunching.
521556SrgrimesOBJS=	${PROG}.o
531556Srgrimes.endif
541556Srgrimes
551556Srgrimes${PROG}: ${OBJS}
561556Srgrimes.if defined(PROG_CXX)
571556Srgrimes	${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
581556Srgrimes.else
5961294Sache	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
6061294Sache.endif
6161294Sache
6261294Sache.endif
6361294Sache
6461294Sache.if	!defined(NOMAN) && !defined(MAN) && \
651556Srgrimes	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
661556Srgrimes	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
671556Srgrimes	!defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
681556Srgrimes	!defined(MAN1aout)
691556SrgrimesMAN=	${PROG}.1
701556SrgrimesMAN1=	${MAN}
711556Srgrimes.endif
721556Srgrimes.endif
731556Srgrimes
741556Srgrimes.MAIN: all
751556Srgrimesall: objwarn ${PROG} ${SCRIPTS} ${FILES}
7661268Sjoe.if !defined(NOMAN)
7761178Sjoeall: all-man 
7861178Sjoe.endif
7961178Sjoeall: _SUBDIR
8061178Sjoe
8161178SjoeCLEANFILES+= ${PROG} ${OBJS}
8261178Sjoe
8361178Sjoe.if defined(PROG)
8461178Sjoe_EXTRADEPEND:
8561178Sjoe.if ${OBJFORMAT} == aout
8661178Sjoe	echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} \
8761178Sjoe	    ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE}
8861178Sjoe.else
8961178Sjoe	echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
9061178Sjoe.if defined(PROG_CXX)
9161178Sjoe	echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
9261178Sjoe.endif
9361178Sjoe.endif
9461178Sjoe.endif
9561178Sjoe
9661268Sjoe.if !target(install)
9761178Sjoe.if !target(beforeinstall)
981556Srgrimesbeforeinstall:
991556Srgrimes.endif
1001556Srgrimes
1011556Srgrimes_INSTALLFLAGS:=	${INSTALLFLAGS}
1021556Srgrimes.for ie in ${INSTALLFLAGS_EDIT}
1031556Srgrimes_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
1041556Srgrimes.endfor
1051556Srgrimes
1061556Srgrimesrealinstall: beforeinstall
1071556Srgrimes.if defined(PROG)
1081556Srgrimes.if defined(PROGNAME)
1091556Srgrimes	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
1101556Srgrimes	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
1111556Srgrimes.else
1121556Srgrimes	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
1131556Srgrimes	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
1141556Srgrimes.endif
1151556Srgrimes.endif
1161556Srgrimes.if defined(HIDEGAME)
1171556Srgrimes	(cd ${DESTDIR}${ORIGBINDIR}; ln -fs dm ${PROG}; \
1181556Srgrimes	    chown -h ${BINOWN}:${ORIGBINGRP} ${PROG})
1191556Srgrimes.endif
12061292Sache.if defined(LINKS) && !empty(LINKS)
12161292Sache	@set ${LINKS}; \
12261292Sache	while test $$# -ge 2; do \
1231556Srgrimes		l=${DESTDIR}$$1; \
1241556Srgrimes		shift; \
1251556Srgrimes		t=${DESTDIR}$$1; \
1261556Srgrimes		shift; \
1271556Srgrimes		${ECHO} $$t -\> $$l; \
1281556Srgrimes		ln -f $$l $$t; \
1291556Srgrimes	done; true
1301556Srgrimes.endif
1311556Srgrimes.if defined(SYMLINKS) && !empty(SYMLINKS)
13220417Ssteve	@set ${SYMLINKS}; \
1331556Srgrimes	while test $$# -ge 2; do \
1341556Srgrimes		l=$$1; \
1351556Srgrimes		shift; \
1361556Srgrimes		t=${DESTDIR}$$1; \
1371556Srgrimes		shift; \
1381556Srgrimes		${ECHO} $$t -\> $$l; \
1391556Srgrimes		ln -fs $$l $$t; \
1401556Srgrimes	done; true
1411556Srgrimes.endif
1421556Srgrimes
1431556Srgrimes.if defined(SCRIPTS) && !empty(SCRIPTS)
14455514Sbderealinstall: _scriptsinstall
14513120Sjoerg
14655514SbdeSCRIPTSDIR?=	${BINDIR}
14755514SbdeSCRIPTSOWN?=	${BINOWN}
14813120SjoergSCRIPTSGRP?=	${BINGRP}
14913120SjoergSCRIPTSMODE?=	${BINMODE}
15013120Sjoerg
1511556Srgrimes.for script in ${SCRIPTS}
1521556Srgrimes.if defined(SCRIPTSNAME)
1531556SrgrimesSCRIPTSNAME_${script:T}?=	${SCRIPTSNAME}
1541556Srgrimes.else
1551556SrgrimesSCRIPTSNAME_${script:T}?=	${script:T:R}
1561556Srgrimes.endif
1571556SrgrimesSCRIPTSDIR_${script:T}?=	${SCRIPTSDIR}
1581556SrgrimesSCRIPTSOWN_${script:T}?=	${SCRIPTSOWN}
1591556SrgrimesSCRIPTSGRP_${script:T}?=	${SCRIPTSGRP}
1601556SrgrimesSCRIPTSMODE_${script:T}?=	${SCRIPTSMODE}
1611556Srgrimes_scriptsinstall: _SCRIPTSINS_${script:T}
16261268Sjoe_SCRIPTSINS_${script:T}: ${script}
16361178Sjoe	${INSTALL} ${COPY} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
16461291Sache	    -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
16561268Sjoe	    ${_INSTALLFLAGS} ${.ALLSRC} \
16635417Sdes	    ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
16735373Sdes.endfor
16861268Sjoe.endif
16961291Sache
17061268Sjoe.if defined(FILES) && !empty(FILES)
17161268Sjoerealinstall: _filesinstall
1721556Srgrimes
1731556SrgrimesFILESDIR?=	${BINDIR}
1741556SrgrimesFILESOWN?=	${SHAREOWN}
1751556SrgrimesFILESGRP?=	${SHAREGRP}
1761556SrgrimesFILESMODE?=	${SHAREMODE}
1771556Srgrimes
1781556Srgrimes.for file in ${FILES}
1791556Srgrimes.if defined(FILESNAME)
1801556SrgrimesFILESNAME_${file:T}?=	${FILESNAME}
1811556Srgrimes.else
1821556SrgrimesFILESNAME_${file:T}?=	${file:T}
1831556Srgrimes.endif
1841556SrgrimesFILESDIR_${file:T}?=	${FILESDIR}
1851556SrgrimesFILESOWN_${file:T}?=	${FILESOWN}
1861556SrgrimesFILESGRP_${file:T}?=	${FILESGRP}
1871556SrgrimesFILESMODE_${file:T}?=	${FILESMODE}
1881556Srgrimes_filesinstall: _FILESINS_${file:T}
1891556Srgrimes_FILESINS_${file:T}: ${file}
19037932Shoek	${INSTALL} ${COPY} -o ${FILESOWN_${.ALLSRC:T}} \
1911556Srgrimes	    -g ${FILESGRP_${.ALLSRC:T}} -m ${FILESMODE_${.ALLSRC:T}} \
19237932Shoek	    ${_INSTALLFLAGS} ${.ALLSRC} \
19337932Shoek	    ${DESTDIR}${FILESDIR_${.ALLSRC:T}}/${FILESNAME_${.ALLSRC:T}}
19437932Shoek.endfor
19537932Shoek.endif
19637932Shoek
1971556Srgrimesinstall: afterinstall _SUBDIR
1981556Srgrimes.if !defined(NOMAN)
1991556Srgrimesafterinstall: realinstall maninstall
2001556Srgrimes.else
2011556Srgrimesafterinstall: realinstall
2021556Srgrimes.endif
2031556Srgrimes.endif
2041556Srgrimes
2051556SrgrimesDISTRIBUTION?=	bin
2061556Srgrimes.if !target(distribute)
2071556Srgrimesdistribute: _SUBDIR
2081556Srgrimes.for dist in ${DISTRIBUTION}
2091556Srgrimes	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
2101556Srgrimes.endfor
2111556Srgrimes.endif
2121556Srgrimes
2131556Srgrimes.if !target(lint)
2141556Srgrimeslint: ${SRCS} _SUBDIR
2151556Srgrimes.if defined(PROG)
2161556Srgrimes	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} | more 2>&1
2171556Srgrimes.endif
2181556Srgrimes.endif
2191556Srgrimes
2201556Srgrimes.if defined(NOTAGS)
22137932Shoektags:
2221556Srgrimes.endif
2231556Srgrimes
2241556Srgrimes.if !target(tags)
2251556Srgrimestags: ${SRCS} _SUBDIR
2261556Srgrimes.if defined(PROG)
2271556Srgrimes	@cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR}
2281556Srgrimes.if defined(HTML)
2291556Srgrimes	@cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
2301556Srgrimes.endif
2311556Srgrimes.endif
2321556Srgrimes.endif
2331556Srgrimes
2341556Srgrimes.if !defined(NOMAN)
2351556Srgrimes.include <bsd.man.mk>
2361556Srgrimes.else
2371556Srgrimes.if !target(all-man)
2381556Srgrimesall-man:
2391556Srgrimes.endif
2401556Srgrimes.if !target(maninstall)
24161268Sjoemaninstall:
24261178Sjoe.endif
24361178Sjoe.endif
24461178Sjoe
24561178Sjoe.if !target(regress)
24661178Sjoeregress:
24761178Sjoe.endif
24861178Sjoe
24961178Sjoe.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
25061178Sjoe.include <bsd.libnames.mk>
25161178Sjoe.endif
25261268Sjoe
25337932Shoek.include <bsd.dep.mk>
25437932Shoek
25537932Shoek.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
2561556Srgrimes${OBJS}: ${SRCS:M*.h}
2571556Srgrimes.endif
2581556Srgrimes
2591556Srgrimes.include <bsd.obj.mk>
2601556Srgrimes
2611556Srgrimes.include <bsd.sys.mk>
2621556Srgrimes