bsd.obj.mk revision 17116
1# $Id: bsd.obj.mk,v 1.5 1996/06/24 04:24:06 jkh 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 ln -fs ${.TARGETOBJDIR} ${.CURDIR}/obj; \ 59 ${ECHO} "${.CURDIR} -> ${.TARGETOBJDIR}"; \ 60 fi 61.endif 62.endif 63.endif 64 65.if !target(objlink) 66objlink: _SUBDIR 67 @if test -d ${.TARGETOBJDIR}; then \ 68 ln -fs ${.TARGETOBJDIR} ${.CURDIR}/obj; \ 69 else \ 70 echo "No ${.TARGETOBJDIR} to link to - do a make obj."; \ 71 fi 72.endif 73 74# 75# where would that obj directory be? 76# 77.if !target(whereobj) 78whereobj: 79.if defined(NOOBJ) 80 @echo ${.CURDIR} 81.else 82 @if ! test -d ${.TARGETOBJDIR}; then \ 83 @echo ${.CURDIR}; \ 84 else 85 @echo ${.TARGETOBJDIR}; \ 86 fi 87.endif 88.endif 89 90# 91# cleanup 92# 93cleanobj: 94 @if [ -d ${.TARGETOBJDIR} ]; then \ 95 rm -rf ${.TARGETOBJDIR}; \ 96 else \ 97 cd ${.CURDIR} && ${MAKE} clean cleandepend; \ 98 fi 99.if defined(OBJLINK) 100 @if [ -h ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi 101.endif 102 103.if !target(cleanfiles) 104cleanfiles: 105 rm -f a.out Errs errs mklog ${CLEANFILES} 106.endif 107 108# see bsd.dep.mk 109.if !target(cleandepend) 110cleandepend: 111 @rm -f .depend 112.endif 113 114.if !target(clean) 115clean: cleanfiles _SUBDIR 116.endif 117 118cleandir: cleanobj _SUBDIR 119