bsd.prog.mk revision 155264
1207753Smm# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 2207753Smm# $FreeBSD: head/share/mk/bsd.prog.mk 155264 2006-02-03 16:50:32Z ru $ 3207753Smm 4207753Smm.include <bsd.init.mk> 5207753Smm 6207753Smm.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .ln .s .S .asm 7207753Smm 8207753Smm# XXX The use of COPTS in modern makefiles is discouraged. 9207753Smm.if defined(COPTS) 10207753SmmCFLAGS+=${COPTS} 11207753Smm.endif 12207753Smm 13207753Smm.if defined(DEBUG_FLAGS) 14207753SmmCFLAGS+=${DEBUG_FLAGS} 15207753Smm.endif 16207753Smm 17207753Smm.if defined(CRUNCH_CFLAGS) 18207753SmmCFLAGS+=${CRUNCH_CFLAGS} 19207753Smm.endif 20207753Smm 21207753Smm.if !defined(DEBUG_FLAGS) 22207753SmmSTRIP?= -s 23207753Smm.endif 24207753Smm 25207753Smm.if defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO") 26207753SmmLDFLAGS+= -static 27207753Smm.endif 28207753Smm 29207753Smm.if defined(PROG_CXX) 30207753SmmPROG= ${PROG_CXX} 31207753Smm.endif 32207753Smm 33207753Smm.if defined(PROG) 34207753Smm.if defined(SRCS) 35207753Smm 36207753Smm# If there are Objective C sources, link with Objective C libraries. 37207753Smm.if !empty(SRCS:M*.m) 38207753SmmOBJCLIBS?= -lobjc -lpthread 39207753SmmLDADD+= ${OBJCLIBS} 40207753Smm.endif 41207753Smm 42207753SmmOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 43207753Smm 44207753Smm${PROG}: ${OBJS} 45207753Smm.if defined(PROG_CXX) 46207753Smm ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} 47207753Smm.else 48207753Smm ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} 49207753Smm.endif 50207753Smm 51207753Smm.else # !defined(SRCS) 52207753Smm 53207753Smm.if !target(${PROG}) 54207753Smm.if defined(PROG_CXX) 55207753SmmSRCS= ${PROG}.cc 56207753Smm.else 57207753SmmSRCS= ${PROG}.c 58207753Smm.endif 59207753Smm 60207753Smm# Always make an intermediate object file because: 61207753Smm# - it saves time rebuilding when only the library has changed 62207753Smm# - the name of the object gets put into the executable symbol table instead of 63207753Smm# the name of a variable temporary object. 64207753Smm# - it's useful to keep objects around for crunching. 65207753SmmOBJS= ${PROG}.o 66207753Smm 67207753Smm${PROG}: ${OBJS} 68207753Smm.if defined(PROG_CXX) 69207753Smm ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} 70207753Smm.else 71207753Smm ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} 72207753Smm.endif 73207753Smm.endif 74207753Smm 75207753Smm.endif 76207753Smm 77207753Smm.if !defined(NO_MAN) && !defined(MAN) && \ 78207753Smm !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \ 79207753Smm !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \ 80207753Smm !defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \ 81207753Smm !defined(MAN1aout) 82207753SmmMAN= ${PROG}.1 83207753SmmMAN1= ${MAN} 84207753Smm.endif 85207753Smm.endif 86207753Smm 87207753Smmall: objwarn ${PROG} ${SCRIPTS} 88207753Smm.if !defined(NO_MAN) 89207753Smmall: _manpages 90207753Smm.endif 91207753Smm 92207753Smm.if defined(PROG) 93207753SmmCLEANFILES+= ${PROG} 94207753Smm.endif 95207753Smm 96207753Smm.if defined(OBJS) 97207753SmmCLEANFILES+= ${OBJS} 98207753Smm.endif 99207753Smm 100207753Smm.include <bsd.libnames.mk> 101207753Smm 102207753Smm.if defined(PROG) 103207753Smm_EXTRADEPEND: 104207753Smm.if defined(LDFLAGS) && !empty(LDFLAGS:M-nostdlib) 105207753Smm.if defined(DPADD) && !empty(DPADD) 106207753Smm echo ${PROG}: ${DPADD} >> ${DEPENDFILE} 107207753Smm.endif 108207753Smm.else 109207753Smm echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE} 110207753Smm.if defined(PROG_CXX) 111207753Smm echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE} 112207753Smm.endif 113207753Smm.endif 114207753Smm.endif 115207753Smm 116207753Smm.if !target(install) 117207753Smm 118207753Smm.if defined(PRECIOUSPROG) 119207753Smm.if !defined(NO_FSCHG) 120207753SmmINSTALLFLAGS+= -fschg 121207753Smm.endif 122207753SmmINSTALLFLAGS+= -S 123207753Smm.endif 124207753Smm 125207753Smm_INSTALLFLAGS:= ${INSTALLFLAGS} 126207753Smm.for ie in ${INSTALLFLAGS_EDIT} 127207753Smm_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 128207753Smm.endfor 129207753Smm 130207753Smm.if !target(realinstall) && !defined(INTERNALPROG) 131207753Smmrealinstall: _proginstall 132207753Smm.ORDER: beforeinstall _proginstall 133207753Smm_proginstall: 134207753Smm.if defined(PROG) 135207753Smm.if defined(PROGNAME) 136207753Smm ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 137207753Smm ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME} 138207753Smm.else 139207753Smm ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 140207753Smm ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR} 141207753Smm.endif 142207753Smm.endif 143207753Smm.endif # !target(realinstall) 144207753Smm 145207753Smm.if defined(SCRIPTS) && !empty(SCRIPTS) 146207753Smmrealinstall: _scriptsinstall 147207753Smm.ORDER: beforeinstall _scriptsinstall 148207753Smm 149207753SmmSCRIPTSDIR?= ${BINDIR} 150207753SmmSCRIPTSOWN?= ${BINOWN} 151207753SmmSCRIPTSGRP?= ${BINGRP} 152207753SmmSCRIPTSMODE?= ${BINMODE} 153207753Smm 154207753Smm.for script in ${SCRIPTS} 155207753Smm.if defined(SCRIPTSNAME) 156207753SmmSCRIPTSNAME_${script:T}?= ${SCRIPTSNAME} 157207753Smm.else 158207753SmmSCRIPTSNAME_${script:T}?= ${script:T:R} 159207753Smm.endif 160207753SmmSCRIPTSDIR_${script:T}?= ${SCRIPTSDIR} 161207753SmmSCRIPTSOWN_${script:T}?= ${SCRIPTSOWN} 162207753SmmSCRIPTSGRP_${script:T}?= ${SCRIPTSGRP} 163207753SmmSCRIPTSMODE_${script:T}?= ${SCRIPTSMODE} 164207753Smm_scriptsinstall: _SCRIPTSINS_${script:T} 165207753Smm_SCRIPTSINS_${script:T}: ${script} 166207753Smm ${INSTALL} -o ${SCRIPTSOWN_${.ALLSRC:T}} \ 167207753Smm -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \ 168207753Smm ${.ALLSRC} \ 169207753Smm ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}} 170207753Smm.endfor 171207753Smm.endif 172207753Smm 173207753SmmNLSNAME?= ${PROG} 174207753Smm.include <bsd.nls.mk> 175207753Smm 176207753Smm.include <bsd.files.mk> 177207753Smm.include <bsd.incs.mk> 178207753Smm.include <bsd.links.mk> 179207753Smm 180207753Smm.if !defined(NO_MAN) 181207753Smmrealinstall: _maninstall 182207753Smm.ORDER: beforeinstall _maninstall 183207753Smm.endif 184207753Smm 185207753Smm.endif 186207753Smm 187207753Smm.if !target(lint) 188207753Smmlint: ${SRCS:M*.c} 189207753Smm.if defined(PROG) 190207753Smm ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 191207753Smm.endif 192207753Smm.endif 193207753Smm 194207753Smm.if !defined(NO_MAN) 195207753Smm.include <bsd.man.mk> 196207753Smm.endif 197207753Smm 198207753Smm.include <bsd.dep.mk> 199207753Smm 200207753Smm.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE}) 201207753Smm${OBJS}: ${SRCS:M*.h} 202207753Smm.endif 203207753Smm 204207753Smm.include <bsd.obj.mk> 205207753Smm 206207753Smm.include <bsd.sys.mk> 207207753Smm 208207753Smm.if defined(PORTNAME) 209207753Smm.include <bsd.pkg.mk> 210207753Smm.endif 211207753Smm