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