bsd.obj.mk revision 33815
133815Sbde# $Id: bsd.obj.mk,v 1.21 1997/12/19 18:48:45 bde Exp $ 215353Swosch# 318566Sbde# The include file <bsd.obj.mk> handles creating the 'obj' directory 431859Sbde# and cleaning up object files, etc. 515353Swosch# 615353Swosch# 715353Swosch# +++ variables +++ 815353Swosch# 933815Sbde# CLEANDIRS Additional directories to remove for the clean target. 1015948Swosch# 1133815Sbde# CLEANFILES Additional files to remove for the clean target. 1233815Sbde# 1318566Sbde# MAKEOBJDIR A pathname for the directory where the targets 1418566Sbde# are built. Note: MAKEOBJDIR is an *enviroment* variable 1518566Sbde# and works properly only if set as an enviroment variable, 1618566Sbde# not as a global or command line variable! 1715353Swosch# 1818566Sbde# E.g. use `env MAKEOBJDIR=temp-obj make' 1918566Sbde# 2018566Sbde# MAKEOBJDIRPREFIX Specifies somewhere other than /usr/obj to root the object 2118566Sbde# tree. Note: MAKEOBJDIRPREFIX is an *enviroment* variable 2218566Sbde# and works properly only if set as an enviroment variable, 2318566Sbde# not as a global or command line variable! 2418566Sbde# 2518340Sswallace# E.g. use `env MAKEOBJDIRPREFIX=/somewhere/obj make' 2615948Swosch# 2718566Sbde# NOOBJ Do not create object directories. This should not be set 2818566Sbde# if anything is built. 2915353Swosch# 3018566Sbde# OBJLINK Create a symbolic link from ${.CURDIR}/obj to 3118566Sbde# ${CANONICALOBJDIR}. Note: this BREAKS the read-only source 3218566Sbde# tree rule! 3315353Swosch# 3415353Swosch# +++ targets +++ 3515353Swosch# 3615353Swosch# clean: 3733815Sbde# remove ${CLEANFILES}; remove ${CLEANDIRS} and all contents. 3815353Swosch# 3915353Swosch# cleandir: 4016663Sjkh# remove the build directory (and all its contents) created by obj 4115353Swosch# 4215353Swosch# obj: 4316663Sjkh# create build directory. 4415353Swosch# 4514801Swosch 4618340Sswallace.if defined(MAKEOBJDIRPREFIX) 4718340SswallaceCANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR} 4818340Sswallace.else 4918340SswallaceCANONICALOBJDIR:=/usr/obj${.CURDIR} 5018340Sswallace.endif 5114801Swosch 5218340Sswallace# 5318340Sswallace# Warn of unorthodox object directory 5418340Sswallace# 5518340Sswallaceobjwarn: 5618566Sbde.if !defined(NOOBJ) && ${.OBJDIR} != ${CANONICALOBJDIR} 5718340Sswallace.if ${.OBJDIR} == ${.CURDIR} 5818373Speter @${ECHO} "Warning: Object directory not changed from original ${.CURDIR}" 5918566Sbde.elif !defined(MAKEOBJDIR) && !defined(MAKEOBJDIRPREFIX) && !defined(OBJLINK) 6018373Speter @${ECHO} "Warning: Using ${.OBJDIR} as object directory instead of\ 6118340Sswallace canonical ${CANONICALOBJDIR}" 6218340Sswallace.endif 6318340Sswallace.endif 6418340Sswallace 6514801Swosch.if !target(obj) 6614801Swosch.if defined(NOOBJ) 6714801Swoschobj: 6814801Swosch.else 6916663Sjkh.if !defined(OBJLINK) 7016663Sjkhobj: _SUBDIR 7125316Sbde @if ! test -d ${CANONICALOBJDIR}/; then \ 7218340Sswallace mkdir -p ${CANONICALOBJDIR}; \ 7325316Sbde if ! test -d ${CANONICALOBJDIR}/; then \ 7418340Sswallace ${ECHO} "Unable to create ${CANONICALOBJDIR}."; \ 7516663Sjkh exit 1; \ 7616663Sjkh fi; \ 7718340Sswallace ${ECHO} "${CANONICALOBJDIR} created for ${.CURDIR}"; \ 7816663Sjkh fi 7915353Swosch.else 8016663Sjkhobj: _SUBDIR 8125316Sbde @if ! test -d ${CANONICALOBJDIR}/; then \ 8218340Sswallace mkdir -p ${CANONICALOBJDIR}; \ 8325316Sbde if ! test -d ${CANONICALOBJDIR}/; then \ 8418340Sswallace ${ECHO} "Unable to create ${CANONICALOBJDIR}."; \ 8516663Sjkh exit 1; \ 8616663Sjkh fi; \ 8718051Sbde rm -f ${.CURDIR}/obj; \ 8818340Sswallace ln -s ${CANONICALOBJDIR} ${.CURDIR}/obj; \ 8918340Sswallace ${ECHO} "${.CURDIR} -> ${CANONICALOBJDIR}"; \ 9014801Swosch fi 9114801Swosch.endif 9214801Swosch.endif 9315353Swosch.endif 9414801Swosch 9516663Sjkh.if !target(objlink) 9616663Sjkhobjlink: _SUBDIR 9725316Sbde @if test -d ${CANONICALOBJDIR}/; then \ 9818051Sbde rm -f ${.CURDIR}/obj; \ 9918340Sswallace ln -s ${CANONICALOBJDIR} ${.CURDIR}/obj; \ 10016663Sjkh else \ 10118340Sswallace echo "No ${CANONICALOBJDIR} to link to - do a make obj."; \ 10216663Sjkh fi 10316663Sjkh.endif 10416663Sjkh 10515166Swosch# 10617116Spst# where would that obj directory be? 10717116Spst# 10817116Spst.if !target(whereobj) 10917116Spstwhereobj: 11018426Sbde @cd ${.CURDIR}; ${MAKE} -V .OBJDIR 11117116Spst.endif 11217116Spst 11316663Sjkhcleanobj: 11425316Sbde @if [ -d ${CANONICALOBJDIR}/ ]; then \ 11518340Sswallace rm -rf ${CANONICALOBJDIR}; \ 11616663Sjkh else \ 11716663Sjkh cd ${.CURDIR} && ${MAKE} clean cleandepend; \ 11816663Sjkh fi 11916663Sjkh @if [ -h ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi 12015166Swosch 12131859Sbde.if !target(clean) 12231859Sbdeclean: _SUBDIR 12331859Sbde.if defined(CLEANFILES) && !empty(CLEANFILES) 12431859Sbde rm -f ${CLEANFILES} 12516663Sjkh.endif 12633815Sbde.if defined(CLEANDIRS) && !empty(CLEANDIRS) 12733815Sbde rm -rf ${CLEANDIRS} 12815166Swosch.endif 12933815Sbde.endif 13015166Swosch 13118427Sbde.if !target(checkdpadd) 13218427Sbdecheckdpadd: _SUBDIR 13318427Sbde.if (defined(DPADD) || defined(LDADD)) 13418427Sbdecheckdpadd: 13531859Sbde.if ${BINFORMAT} != aout 13618427Sbde @if [ "${DPADD:S;^/usr/lib/lib;-l;S;.a$;;}" != "${LDADD}" ] ; then \ 13718427Sbde echo ${.CURDIR} ; \ 13818427Sbde echo "DPADD -> " ${DPADD:S;^/usr/lib/lib;-l;S;.a$;;} ; \ 13918427Sbde echo "LDADD = " ${LDADD} ; \ 14018427Sbde fi 14131859Sbde.else 14231859Sbde @dpadd=`echo \`ld -Bstatic -f ${LDDESTDIR} ${LDADD}\`` ; \ 14331859Sbde if [ "$$dpadd" != "${DPADD}" ] ; then \ 14431859Sbde echo ${.CURDIR} ; \ 14531859Sbde echo "LDADD -> " $$dpadd ; \ 14631859Sbde echo "DPADD = " ${DPADD} ; \ 14731859Sbde fi 14818427Sbde.endif 14918427Sbde.endif 15031859Sbde.endif 15118427Sbde 15216663Sjkhcleandir: cleanobj _SUBDIR 153