bsd.prog.mk revision 38183
1224110Sjchandra# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 2224110Sjchandra# $Id: bsd.prog.mk,v 1.75 1998/06/05 18:38:54 dt Exp $ 3224110Sjchandra 4224110Sjchandra.if !target(__initialized__) 5224110Sjchandra__initialized__: 6224110Sjchandra.if exists(${.CURDIR}/../Makefile.inc) 7224110Sjchandra.include "${.CURDIR}/../Makefile.inc" 8224110Sjchandra.endif 9224110Sjchandra.endif 10224110Sjchandra 11224110Sjchandra# Default executable format 12224110SjchandraBINFORMAT?= aout 13224110Sjchandra 14224110Sjchandra.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S 15224110Sjchandra 16224110SjchandraCFLAGS+=${COPTS} ${DEBUG_FLAGS} 17224110Sjchandra.if defined(DESTDIR) 18224110SjchandraCFLAGS+= -I${DESTDIR}/usr/include 19224110SjchandraCXXINCLUDES+= -I${DESTDIR}/usr/include/g++ 20224110Sjchandra.endif 21224110Sjchandra 22224110Sjchandra.if !defined(DEBUG_FLAGS) 23224110SjchandraSTRIP?= -s 24224110Sjchandra.endif 25224110Sjchandra 26224110Sjchandra.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" ) 27224110SjchandraLDFLAGS+= -static 28224110Sjchandra.endif 29224110Sjchandra 30224110Sjchandra.if defined(PROG) 31224110Sjchandra.if defined(SRCS) 32224110Sjchandra 33224110Sjchandra# If there are Objective C sources, link with Objective C libraries. 34224110Sjchandra.if ${SRCS:M*.m} != "" 35224110SjchandraOBJCLIBS?= -lobjc 36224110SjchandraLDADD+= ${OBJCLIBS} 37224110Sjchandra.endif 38224110Sjchandra 39224110SjchandraOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 40224110Sjchandra 41224110Sjchandra${PROG}: ${OBJS} 42224110Sjchandra ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} 43224110Sjchandra 44224110Sjchandra.else !defined(SRCS) 45224110Sjchandra 46224110Sjchandra.if !target(${PROG}) 47224110SjchandraSRCS= ${PROG}.c 48224110Sjchandra 49224110Sjchandra# Always make an intermediate object file because: 50224110Sjchandra# - it saves time rebuilding when only the library has changed 51224110Sjchandra# - the name of the object gets put into the executable symbol table instead of 52224110Sjchandra# the name of a variable temporary object. 53224110Sjchandra# - it's useful to keep objects around for crunching. 54224110SjchandraOBJS= ${PROG}.o 55224110Sjchandra 56224110Sjchandra${PROG}: ${OBJS} 57224110Sjchandra ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} 58224110Sjchandra.endif 59224110Sjchandra 60224110Sjchandra.endif 61224110Sjchandra 62224110Sjchandra.if !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \ 63224110Sjchandra !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \ 64224110Sjchandra !defined(MAN7) && !defined(MAN8) && !defined(NOMAN) 65224110SjchandraMAN1= ${PROG}.1 66224110Sjchandra.endif 67224110Sjchandra.endif 68224110Sjchandra 69224110Sjchandra.MAIN: all 70224110Sjchandraall: objwarn ${PROG} all-man _SUBDIR 71224110Sjchandra 72224110SjchandraCLEANFILES+= ${PROG} ${OBJS} 73224110Sjchandra 74224110Sjchandra.if defined(PROG) && !defined(NOEXTRADEPEND) 75224110Sjchandra_EXTRADEPEND: 76224110Sjchandra.if ${BINFORMAT} == aout 77224110Sjchandra echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} ${LDDESTDIR} \ 78224110Sjchandra ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE} 79224110Sjchandra.else 80224110Sjchandra.if defined(DPADD) && !empty(DPADD) 81224110Sjchandra echo ${PROG}: ${DPADD} >> ${DEPENDFILE} 82224110Sjchandra.endif 83224110Sjchandra.endif 84224110Sjchandra.endif 85224110Sjchandra 86224110Sjchandra.if !target(install) 87224110Sjchandra.if !target(beforeinstall) 88224110Sjchandrabeforeinstall: 89224110Sjchandra.endif 90224110Sjchandra 91224110Sjchandrarealinstall: beforeinstall 92224110Sjchandra.if defined(PROG) 93224110Sjchandra ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 94224110Sjchandra ${INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR} 95224110Sjchandra.endif 96224110Sjchandra.if defined(HIDEGAME) 97224110Sjchandra (cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG}; \ 98224110Sjchandra chown games:bin ${PROG}) 99224110Sjchandra.endif 100224110Sjchandra.if defined(LINKS) && !empty(LINKS) 101224110Sjchandra @set ${LINKS}; \ 102224110Sjchandra while test $$# -ge 2; do \ 103224110Sjchandra l=${DESTDIR}$$1; \ 104224110Sjchandra shift; \ 105224110Sjchandra t=${DESTDIR}$$1; \ 106224110Sjchandra shift; \ 107224110Sjchandra ${ECHO} $$t -\> $$l; \ 108224110Sjchandra rm -f $$t; \ 109224110Sjchandra ln ${LN_FLAGS} $$l $$t; \ 110224110Sjchandra done; true 111224110Sjchandra.endif 112224110Sjchandra 113224110Sjchandrainstall: afterinstall _SUBDIR 114224110Sjchandra.if !defined(NOMAN) 115224110Sjchandraafterinstall: realinstall maninstall 116224110Sjchandra.else 117224110Sjchandraafterinstall: realinstall 118224110Sjchandra.endif 119224110Sjchandra.endif 120224110Sjchandra 121224110SjchandraDISTRIBUTION?= bin 122224110Sjchandra.if !target(distribute) 123224110Sjchandradistribute: _SUBDIR 124224110Sjchandra.for dist in ${DISTRIBUTION} 125224110Sjchandra cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 126224110Sjchandra.endfor 127224110Sjchandra.endif 128224110Sjchandra 129224110Sjchandra.if !target(lint) 130224110Sjchandralint: ${SRCS} _SUBDIR 131224110Sjchandra.if defined(PROG) 132224110Sjchandra @${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1 133224110Sjchandra.endif 134224110Sjchandra.endif 135224110Sjchandra 136224110Sjchandra.if defined(NOTAGS) 137224110Sjchandratags: 138224110Sjchandra.endif 139224110Sjchandra 140224110Sjchandra.if !target(tags) 141224110Sjchandratags: ${SRCS} _SUBDIR 142224110Sjchandra.if defined(PROG) 143224110Sjchandra @cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR} 144224110Sjchandra.if defined(HTML) 145224110Sjchandra @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR} 146224110Sjchandra.endif 147224110Sjchandra.endif 148224110Sjchandra.endif 149224110Sjchandra 150224110Sjchandra.if !defined(NOMAN) 151224110Sjchandra.include <bsd.man.mk> 152224110Sjchandra.elif !target(maninstall) 153224110Sjchandramaninstall: 154224110Sjchandraall-man: 155224110Sjchandra.endif 156224110Sjchandra 157224110Sjchandra.if !target(regress) 158224110Sjchandraregress: 159224110Sjchandra.endif 160224110Sjchandra 161224110Sjchandra.if ${BINFORMAT} != aout || make(checkdpadd) 162224110Sjchandra.include <bsd.libnames.mk> 163224110Sjchandra.endif 164224110Sjchandra 165224110Sjchandra.include <bsd.dep.mk> 166224110Sjchandra 167224110Sjchandra.if defined(PROG) && !exists(${DEPENDFILE}) 168224110Sjchandra${OBJS}: ${SRCS:M*.h} 169224110Sjchandra.endif 170224110Sjchandra 171224110Sjchandra.include <bsd.obj.mk> 172224110Sjchandra