bsd.obj.mk revision 18051
1# $Id: bsd.obj.mk,v 1.7 1996/07/14 11:09:12 peter Exp $ 2# 3# The include file <bsd.obj.mk> handles creating 'obj' directory 4# and cleaning up object files, log files etc. 5# 6# 7# +++ variables +++ 8# 9# CLEANFILES Additional files to remove for the clean and cleandir targets. 10# 11# MAKEOBJDIR Specify somewhere other than /usr/obj to root the object 12# tree. Note: MAKEOBJDIR is an *enviroment* variable 13# and does work proper only if set as enviroment variable, 14# not as global or command line variable! [obj] 15# 16# E.g. use `env MAKEOBJDIR=/somewhere/obj make' 17# 18# NOOBJ Do not create build directory in object tree. 19# 20# OBJLINK Create a symbolic link from ${.TARGETOBJDIR} to ${.CURDIR}/obj 21# Note: This BREAKS the read-only src tree rule! 22# 23# +++ targets +++ 24# 25# clean: 26# remove a.out Errs errs mklog ${CLEANFILES} 27# 28# cleandir: 29# remove the build directory (and all its contents) created by obj 30# 31# obj: 32# create build directory. 33# 34 35 36.if !target(obj) 37.if defined(NOOBJ) 38obj: 39.else 40.if !defined(OBJLINK) 41obj: _SUBDIR 42 @if ! test -d ${.TARGETOBJDIR}; then \ 43 mkdir -p ${.TARGETOBJDIR}; \ 44 if ! test -d ${.TARGETOBJDIR}; then \ 45 ${ECHO} "Unable to create ${.TARGETOBJDIR}."; \ 46 exit 1; \ 47 fi; \ 48 ${ECHO} "${.TARGETOBJDIR} created for ${.CURDIR}"; \ 49 fi 50.else 51obj: _SUBDIR 52 @if ! test -d ${.TARGETOBJDIR}; then \ 53 mkdir -p ${.TARGETOBJDIR}; \ 54 if ! test -d ${.TARGETOBJDIR}; then \ 55 ${ECHO} "Unable to create ${.TARGETOBJDIR}."; \ 56 exit 1; \ 57 fi; \ 58 rm -f ${.CURDIR}/obj; \ 59 ln -s ${.TARGETOBJDIR} ${.CURDIR}/obj; \ 60 ${ECHO} "${.CURDIR} -> ${.TARGETOBJDIR}"; \ 61 fi 62.endif 63.endif 64.endif 65 66.if !target(objlink) 67objlink: _SUBDIR 68 @if test -d ${.TARGETOBJDIR}; then \ 69 rm -f ${.CURDIR}/obj; \ 70 ln -s ${.TARGETOBJDIR} ${.CURDIR}/obj; \ 71 else \ 72 echo "No ${.TARGETOBJDIR} to link to - do a make obj."; \ 73 fi 74.endif 75 76# 77# where would that obj directory be? 78# 79.if !target(whereobj) 80whereobj: 81.if defined(NOOBJ) 82 @echo ${.CURDIR} 83.else 84 @if ! test -d ${.TARGETOBJDIR}; then \ 85 echo ${.CURDIR}; \ 86 else \ 87 echo ${.TARGETOBJDIR}; \ 88 fi 89.endif 90.endif 91 92# 93# cleanup 94# 95cleanobj: 96 @if [ -d ${.TARGETOBJDIR} ]; then \ 97 rm -rf ${.TARGETOBJDIR}; \ 98 else \ 99 cd ${.CURDIR} && ${MAKE} clean cleandepend; \ 100 fi 101.if defined(OBJLINK) 102 @if [ -h ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi 103.endif 104 105.if !target(cleanfiles) 106cleanfiles: 107 rm -f a.out Errs errs mklog ${CLEANFILES} 108.endif 109 110# see bsd.dep.mk 111.if !target(cleandepend) 112cleandepend: 113 @rm -f .depend 114.endif 115 116.if !target(clean) 117clean: cleanfiles _SUBDIR 118.endif 119 120cleandir: cleanobj _SUBDIR 121