bsd.prog.mk revision 55670
1178354Ssam# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 2178354Ssam# $FreeBSD: head/share/mk/bsd.prog.mk 55670 2000-01-09 15:40:32Z bde $ 3178354Ssam 4178354Ssam.if !target(__initialized__) 5178354Ssam__initialized__: 6178354Ssam.if exists(${.CURDIR}/../Makefile.inc) 7178354Ssam.include "${.CURDIR}/../Makefile.inc" 8178354Ssam.endif 9178354Ssam.endif 10178354Ssam 11178354Ssam.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S 12178354Ssam 13178354SsamCFLAGS+=${COPTS} ${DEBUG_FLAGS} 14178354Ssam.if defined(DESTDIR) 15178354SsamCFLAGS+= -I${DESTDIR}/usr/include 16178354SsamCXXINCLUDES+= -I${DESTDIR}/usr/include/g++ 17178354Ssam.endif 18178354Ssam 19178354Ssam.if !defined(DEBUG_FLAGS) 20178354SsamSTRIP?= -s 21178354Ssam.endif 22178354Ssam 23178354Ssam.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" ) 24178354SsamLDFLAGS+= -static 25178354Ssam.endif 26178354Ssam 27178354Ssam.if defined(PROG) 28178354Ssam.if defined(SRCS) 29178354Ssam 30178354Ssam# If there are Objective C sources, link with Objective C libraries. 31178354Ssam.if ${SRCS:M*.m} != "" 32178354SsamOBJCLIBS?= -lobjc 33178354SsamLDADD+= ${OBJCLIBS} 34178354Ssam.endif 35178354Ssam 36178354SsamOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 37178354Ssam 38178354Ssam${PROG}: ${OBJS} 39178354Ssam ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} 40178354Ssam 41178354Ssam.else !defined(SRCS) 42178354Ssam 43178354Ssam.if !target(${PROG}) 44178354SsamSRCS= ${PROG}.c 45178354Ssam 46178354Ssam# Always make an intermediate object file because: 47178354Ssam# - it saves time rebuilding when only the library has changed 48178354Ssam# - the name of the object gets put into the executable symbol table instead of 49178354Ssam# the name of a variable temporary object. 50178354Ssam# - it's useful to keep objects around for crunching. 51178354SsamOBJS= ${PROG}.o 52178354Ssam 53178354Ssam${PROG}: ${OBJS} 54178354Ssam ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} 55178354Ssam.endif 56178354Ssam 57178354Ssam.endif 58178354Ssam 59178354Ssam.if !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \ 60178354Ssam !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \ 61178354Ssam !defined(MAN7) && !defined(MAN8) && !defined(NOMAN) && \ 62178354Ssam !defined(MAN1aout) 63178354SsamMAN1= ${PROG}.1 64178354Ssam.endif 65178354Ssam.endif 66178354Ssam 67178354Ssam.MAIN: all 68178354Ssamall: objwarn ${PROG} all-man _SUBDIR 69178354Ssam 70178354SsamCLEANFILES+= ${PROG} ${OBJS} 71178354Ssam 72178354Ssam.if defined(PROG) 73178354Ssam_EXTRADEPEND: 74178354Ssam.if ${OBJFORMAT} == aout 75178354Ssam echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} ${LDDESTDIR} \ 76178354Ssam ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE} 77178354Ssam.else 78178354Ssam echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE} 79178354Ssam.endif 80178354Ssam.endif 81178354Ssam 82178354Ssam.if !target(install) 83178354Ssam.if !target(beforeinstall) 84178354Ssambeforeinstall: 85178354Ssam.endif 86178354Ssam 87178354Ssam_INSTALLFLAGS:= ${INSTALLFLAGS} 88178354Ssam.for ie in ${INSTALLFLAGS_EDIT} 89178354Ssam_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 90178354Ssam.endfor 91178354Ssam 92178354Ssamrealinstall: beforeinstall 93178354Ssam.if defined(PROG) 94178354Ssam ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 95178354Ssam ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR} 96178354Ssam.endif 97178354Ssam.if defined(HIDEGAME) 98178354Ssam (cd ${DESTDIR}/${GBINDIR}; rm -f ${PROG}; ln -s dm ${PROG}; \ 99178354Ssam chown games:bin ${PROG}) 100178354Ssam.endif 101178354Ssam.if defined(LINKS) && !empty(LINKS) 102178354Ssam @set ${LINKS}; \ 103178354Ssam while test $$# -ge 2; do \ 104178354Ssam l=${DESTDIR}$$1; \ 105178354Ssam shift; \ 106178354Ssam t=${DESTDIR}$$1; \ 107178354Ssam shift; \ 108178354Ssam ${ECHO} $$t -\> $$l; \ 109178354Ssam ln -f $$l $$t; \ 110178354Ssam done; true 111178354Ssam.endif 112178354Ssam.if defined(SYMLINKS) && !empty(SYMLINKS) 113178354Ssam @set ${SYMLINKS}; \ 114178354Ssam while test $$# -ge 2; do \ 115178354Ssam l=$$1; \ 116178354Ssam shift; \ 117178354Ssam t=${DESTDIR}$$1; \ 118178354Ssam shift; \ 119178354Ssam ${ECHO} $$t -\> $$l; \ 120178354Ssam ln -fs $$l $$t; \ 121178354Ssam done; true 122178354Ssam.endif 123178354Ssam 124178354Ssaminstall: afterinstall _SUBDIR 125178354Ssam.if !defined(NOMAN) 126178354Ssamafterinstall: realinstall maninstall 127178354Ssam.else 128178354Ssamafterinstall: realinstall 129178354Ssam.endif 130178354Ssam.endif 131178354Ssam 132178354SsamDISTRIBUTION?= bin 133178354Ssam.if !target(distribute) 134178354Ssamdistribute: _SUBDIR 135178354Ssam.for dist in ${DISTRIBUTION} 136178354Ssam cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 137178354Ssam.endfor 138178354Ssam.endif 139178354Ssam 140178354Ssam.if !target(lint) 141178354Ssamlint: ${SRCS} _SUBDIR 142178354Ssam.if defined(PROG) 143178354Ssam @${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1 144178354Ssam.endif 145178354Ssam.endif 146178354Ssam 147178354Ssam.if defined(NOTAGS) 148178354Ssamtags: 149178354Ssam.endif 150178354Ssam 151178354Ssam.if !target(tags) 152178354Ssamtags: ${SRCS} _SUBDIR 153178354Ssam.if defined(PROG) 154178354Ssam @cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR} 155178354Ssam.if defined(HTML) 156178354Ssam @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR} 157178354Ssam.endif 158178354Ssam.endif 159178354Ssam.endif 160178354Ssam 161178354Ssam.if !defined(NOMAN) 162178354Ssam.include <bsd.man.mk> 163178354Ssam.elif !target(maninstall) 164178354Ssammaninstall: 165178354Ssamall-man: 166178354Ssam.endif 167178354Ssam 168178354Ssam.if !target(regress) 169178354Ssamregress: 170178354Ssam.endif 171178354Ssam 172178354Ssam.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES) 173178354Ssam.include <bsd.libnames.mk> 174178354Ssam.endif 175178354Ssam 176178354Ssam.include <bsd.dep.mk> 177178354Ssam 178178354Ssam.if defined(PROG) && !exists(${DEPENDFILE}) 179178354Ssam${OBJS}: ${SRCS:M*.h} 180178354Ssam.endif 181178354Ssam 182178354Ssam.include <bsd.obj.mk> 183178354Ssam