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