150476Speter# $FreeBSD$ 215353Swosch# 318566Sbde# The include file <bsd.obj.mk> handles creating the 'obj' directory 431859Sbde# and cleaning up object files, etc. 515353Swosch# 615353Swosch# +++ variables +++ 715353Swosch# 833815Sbde# CLEANDIRS Additional directories to remove for the clean target. 915948Swosch# 1033815Sbde# CLEANFILES Additional files to remove for the clean target. 1133815Sbde# 12139761Skrion# MAKEOBJDIR A pathname for the directory where the targets 1399202Sru# are built. Note: MAKEOBJDIR is an *environment* variable 1499202Sru# and works properly only if set as an environment variable, 1518566Sbde# not as a global or command line variable! 1615353Swosch# 1718566Sbde# E.g. use `env MAKEOBJDIR=temp-obj make' 1818566Sbde# 1918566Sbde# MAKEOBJDIRPREFIX Specifies somewhere other than /usr/obj to root the object 2099202Sru# tree. Note: MAKEOBJDIRPREFIX is an *environment* variable 2199202Sru# and works properly only if set as an environment variable, 2218566Sbde# not as a global or command line variable! 2318566Sbde# 2418340Sswallace# E.g. use `env MAKEOBJDIRPREFIX=/somewhere/obj make' 2515948Swosch# 26139103Sru# NO_OBJ Do not create object directories. This should not be set 2718566Sbde# if anything is built. 2815353Swosch# 2915353Swosch# +++ targets +++ 3015353Swosch# 3115353Swosch# clean: 3233815Sbde# remove ${CLEANFILES}; remove ${CLEANDIRS} and all contents. 3315353Swosch# 3415353Swosch# cleandir: 3516663Sjkh# remove the build directory (and all its contents) created by obj 3615353Swosch# 3715353Swosch# obj: 3816663Sjkh# create build directory. 3915353Swosch# 4014801Swosch 4194940Sru.if !target(__<bsd.obj.mk>__) 4294940Sru__<bsd.obj.mk>__: 4394940Sru.include <bsd.own.mk> 4494940Sru 4564784Ssheldonh.if defined(MAKEOBJDIRPREFIX) 4618340SswallaceCANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR} 47252048Ssjg.elif defined(MAKEOBJDIR) && ${MAKEOBJDIR:M/*} != "" 48252048SsjgCANONICALOBJDIR:=${MAKEOBJDIR} 4918340Sswallace.else 5018340SswallaceCANONICALOBJDIR:=/usr/obj${.CURDIR} 5118340Sswallace.endif 5214801Swosch 5318340Sswallace# 5476896Sru# Warn of unorthodox object directory. 5518340Sswallace# 5676896Sru# The following directories are tried in order for ${.OBJDIR}: 5776896Sru# 5876896Sru# 1. ${MAKEOBJDIRPREFIX}/`pwd` 5976896Sru# 2. ${MAKEOBJDIR} 6076896Sru# 3. obj.${MACHINE} 6176896Sru# 4. obj 6276896Sru# 5. /usr/obj/`pwd` 6376896Sru# 6. ${.CURDIR} 6476896Sru# 6576896Sru# If ${.OBJDIR} is constructed using canonical cases 1 or 5, or 6676896Sru# case 2 (using MAKEOBJDIR), don't issue a warning. Otherwise, 6776896Sru# issue a warning differentiating between cases 6 and (3 or 4). 6876896Sru# 6918340Sswallaceobjwarn: 70139103Sru.if !defined(NO_OBJ) && ${.OBJDIR} != ${CANONICALOBJDIR} && \ 7176896Sru !(defined(MAKEOBJDIRPREFIX) && exists(${CANONICALOBJDIR}/)) && \ 7276896Sru !(defined(MAKEOBJDIR) && exists(${MAKEOBJDIR}/)) 7318340Sswallace.if ${.OBJDIR} == ${.CURDIR} 7418373Speter @${ECHO} "Warning: Object directory not changed from original ${.CURDIR}" 7576896Sru.elif exists(${.CURDIR}/obj.${MACHINE}/) || exists(${.CURDIR}/obj/) 7618373Speter @${ECHO} "Warning: Using ${.OBJDIR} as object directory instead of\ 7718340Sswallace canonical ${CANONICALOBJDIR}" 7818340Sswallace.endif 7918340Sswallace.endif 8018340Sswallace 81139103Sru.if !defined(NO_OBJ) 8298546Sru.if !target(obj) 83128188Sruobj: .PHONY 8425316Sbde @if ! test -d ${CANONICALOBJDIR}/; then \ 8518340Sswallace mkdir -p ${CANONICALOBJDIR}; \ 8625316Sbde if ! test -d ${CANONICALOBJDIR}/; then \ 8718340Sswallace ${ECHO} "Unable to create ${CANONICALOBJDIR}."; \ 8816663Sjkh exit 1; \ 8916663Sjkh fi; \ 9018340Sswallace ${ECHO} "${CANONICALOBJDIR} created for ${.CURDIR}"; \ 9116663Sjkh fi 9214801Swosch.endif 9314801Swosch 9444922Sbde.if !target(objlink) 9595306Sruobjlink: 9644922Sbde @if test -d ${CANONICALOBJDIR}/; then \ 9744922Sbde rm -f ${.CURDIR}/obj; \ 9844922Sbde ln -s ${CANONICALOBJDIR} ${.CURDIR}/obj; \ 9944922Sbde else \ 10044922Sbde echo "No ${CANONICALOBJDIR} to link to - do a make obj."; \ 10144922Sbde fi 10244922Sbde.endif 103144893Sharti.endif # !defined(NO_OBJ) 10444922Sbde 10515166Swosch# 10617116Spst# where would that obj directory be? 10717116Spst# 10817116Spst.if !target(whereobj) 10917116Spstwhereobj: 11036641Speter @echo ${.OBJDIR} 11117116Spst.endif 11217116Spst 113124061Sgreen.if ${CANONICALOBJDIR} != ${.CURDIR} && exists(${CANONICALOBJDIR}/) 11416663Sjkhcleanobj: 11576021Sru @rm -rf ${CANONICALOBJDIR} 11676021Sru.else 117124061Sgreencleanobj: clean cleandepend 11876021Sru.endif 119102660Skris @if [ -L ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi 12015166Swosch 121252048Ssjg# Tell bmake not to look for generated files via .PATH 122252048Ssjg.if !empty(CLEANFILES) 123252048Ssjg.NOPATH: ${CLEANFILES} 124252048Ssjg.endif 125252048Ssjg 12631859Sbde.if !target(clean) 12795306Sruclean: 12831859Sbde.if defined(CLEANFILES) && !empty(CLEANFILES) 129139761Skrion rm -f ${CLEANFILES} 13016663Sjkh.endif 13133815Sbde.if defined(CLEANDIRS) && !empty(CLEANDIRS) 13233815Sbde rm -rf ${CLEANDIRS} 13315166Swosch.endif 13433815Sbde.endif 13515166Swosch 13695306Srucleandir: cleanobj 13735789Sbde 13895306Sru.include <bsd.subdir.mk> 13935789Sbde 140144893Sharti.endif # !target(__<bsd.obj.mk>__) 141