bsd.prog.mk revision 50476
1169689Skan# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 2169689Skan# $FreeBSD: head/share/mk/bsd.prog.mk 50476 1999-08-28 00:22:10Z peter $ 3169689Skan 4169689Skan.if !target(__initialized__) 5169689Skan__initialized__: 6169689Skan.if exists(${.CURDIR}/../Makefile.inc) 7169689Skan.include "${.CURDIR}/../Makefile.inc" 8169689Skan.endif 9169689Skan.endif 10169689Skan 11169689Skan.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S 12169689Skan 13169689SkanCFLAGS+=${COPTS} ${DEBUG_FLAGS} 14169689Skan.if defined(DESTDIR) 15169689SkanCFLAGS+= -I${DESTDIR}/usr/include 16169689SkanCXXINCLUDES+= -I${DESTDIR}/usr/include/g++ 17169689Skan.endif 18169689Skan 19169689Skan.if !defined(DEBUG_FLAGS) 20169689SkanSTRIP?= -s 21169689Skan.endif 22169689Skan 23169689Skan.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" ) 24169689SkanLDFLAGS+= -static 25169689Skan.endif 26169689Skan 27169689Skan.if defined(PROG) 28169689Skan.if defined(SRCS) 29169689Skan 30169689Skan# If there are Objective C sources, link with Objective C libraries. 31169689Skan.if ${SRCS:M*.m} != "" 32169689SkanOBJCLIBS?= -lobjc 33169689SkanLDADD+= ${OBJCLIBS} 34169689Skan.endif 35169689Skan 36169689SkanOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 37169689Skan 38169689Skan${PROG}: ${OBJS} 39169689Skan ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} 40169689Skan 41169689Skan.else !defined(SRCS) 42169689Skan 43169689Skan.if !target(${PROG}) 44169689SkanSRCS= ${PROG}.c 45169689Skan 46169689Skan# Always make an intermediate object file because: 47169689Skan# - it saves time rebuilding when only the library has changed 48169689Skan# - the name of the object gets put into the executable symbol table instead of 49169689Skan# the name of a variable temporary object. 50169689Skan# - it's useful to keep objects around for crunching. 51169689SkanOBJS= ${PROG}.o 52169689Skan 53169689Skan${PROG}: ${OBJS} 54169689Skan ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} 55169689Skan.endif 56169689Skan 57169689Skan.endif 58169689Skan 59169689Skan.if !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \ 60169689Skan !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \ 61169689Skan !defined(MAN7) && !defined(MAN8) && !defined(NOMAN) && \ 62169689Skan !defined(MAN1aout) 63169689SkanMAN1= ${PROG}.1 64169689Skan.endif 65169689Skan.endif 66169689Skan 67169689Skan.MAIN: all 68169689Skanall: objwarn ${PROG} all-man _SUBDIR 69169689Skan 70169689SkanCLEANFILES+= ${PROG} ${OBJS} 71169689Skan 72169689Skan.if defined(PROG) && !defined(NOEXTRADEPEND) 73169689Skan_EXTRADEPEND: 74169689Skan.if ${OBJFORMAT} == aout 75169689Skan echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} ${LDDESTDIR} \ 76169689Skan ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE} 77169689Skan.else 78169689Skan echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE} 79169689Skan.endif 80169689Skan.endif 81169689Skan 82169689Skan.if !target(install) 83169689Skan.if !target(beforeinstall) 84169689Skanbeforeinstall: 85169689Skan.endif 86169689Skan 87169689Skan_INSTALLFLAGS:= ${INSTALLFLAGS} 88169689Skan.for ie in ${INSTALLFLAGS_EDIT} 89169689Skan_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 90169689Skan.endfor 91169689Skan 92169689Skanrealinstall: beforeinstall 93169689Skan.if defined(PROG) 94169689Skan ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 95169689Skan ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR} 96169689Skan.endif 97169689Skan.if defined(HIDEGAME) 98169689Skan (cd ${DESTDIR}/${GBINDIR}; rm -f ${PROG}; ln -s dm ${PROG}; \ 99169689Skan chown games:bin ${PROG}) 100169689Skan.endif 101169689Skan.if defined(LINKS) && !empty(LINKS) 102169689Skan @set ${LINKS}; \ 103 while test $$# -ge 2; do \ 104 l=${DESTDIR}$$1; \ 105 shift; \ 106 t=${DESTDIR}$$1; \ 107 shift; \ 108 ${ECHO} $$t -\> $$l; \ 109 ln -f $$l $$t; \ 110 done; true 111.endif 112.if defined(SYMLINKS) && !empty(SYMLINKS) 113 @set ${SYMLINKS}; \ 114 while test $$# -ge 2; do \ 115 l=$$1; \ 116 shift; \ 117 t=${DESTDIR}$$1; \ 118 shift; \ 119 ${ECHO} $$t -\> $$l; \ 120 ln -fs $$l $$t; \ 121 done; true 122.endif 123 124install: afterinstall _SUBDIR 125.if !defined(NOMAN) 126afterinstall: realinstall maninstall 127.else 128afterinstall: realinstall 129.endif 130.endif 131 132DISTRIBUTION?= bin 133.if !target(distribute) 134distribute: _SUBDIR 135.for dist in ${DISTRIBUTION} 136 cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 137.endfor 138.endif 139 140.if !target(lint) 141lint: ${SRCS} _SUBDIR 142.if defined(PROG) 143 @${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1 144.endif 145.endif 146 147.if defined(NOTAGS) 148tags: 149.endif 150 151.if !target(tags) 152tags: ${SRCS} _SUBDIR 153.if defined(PROG) 154 @cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR} 155.if defined(HTML) 156 @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR} 157.endif 158.endif 159.endif 160 161.if !defined(NOMAN) 162.include <bsd.man.mk> 163.elif !target(maninstall) 164maninstall: 165all-man: 166.endif 167 168.if !target(regress) 169regress: 170.endif 171 172.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES) 173.include <bsd.libnames.mk> 174.endif 175 176.include <bsd.dep.mk> 177 178.if defined(PROG) && !exists(${DEPENDFILE}) 179${OBJS}: ${SRCS:M*.h} 180.endif 181 182.include <bsd.obj.mk> 183