summaryrefslogtreecommitdiffstats
path: root/share/mk/bsd.obj.mk
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1996-06-24 04:26:21 +0000
committerjkh <jkh@FreeBSD.org>1996-06-24 04:26:21 +0000
commit8eb37231d4405088a481324c2ec41ac851e8d8f7 (patch)
treedc80da53186aab7c56424c2574b0cd7928930721 /share/mk/bsd.obj.mk
parent3acbd3cce674dab9a0afdee1f6e50196f4585ffa (diff)
downloadFreeBSD-src-8eb37231d4405088a481324c2ec41ac851e8d8f7.zip
FreeBSD-src-8eb37231d4405088a481324c2ec41ac851e8d8f7.tar.gz
Bring in my changes for removing the pestilent obj links (unless you
really want them) from /usr/src. This is the final version of the patches, incorporating the feedback I've received from -current.
Diffstat (limited to 'share/mk/bsd.obj.mk')
-rw-r--r--share/mk/bsd.obj.mk99
1 files changed, 51 insertions, 48 deletions
diff --git a/share/mk/bsd.obj.mk b/share/mk/bsd.obj.mk
index 200434c..1612344 100644
--- a/share/mk/bsd.obj.mk
+++ b/share/mk/bsd.obj.mk
@@ -1,4 +1,4 @@
-# $Id: bsd.obj.mk,v 1.3 1996/04/22 23:31:39 wosch Exp $
+# $Id: bsd.obj.mk,v 1.4 1996/05/27 23:05:54 wosch Exp $
#
# The include file <bsd.obj.mk> handles creating 'obj' directory
# and cleaning up object files, log files etc.
@@ -6,26 +6,19 @@
#
# +++ variables +++
#
-# BSDSRCDIR The real path to the system sources, so that 'make obj'
-# will work correctly. [/usr/src]
-#
-# BSDOBJDIR The real path to the system 'obj' tree, so that 'make obj'
-# will work correctly. [/usr/obj]
-#
# CLEANFILES Additional files to remove for the clean and cleandir targets.
#
-# MAKEOBJDIR A file name to the directory where the targets
-# are built. Note: MAKEOBJDIR is an *enviroment* variable
+# MAKEOBJDIR Specify somewhere other than /usr/obj to root the object
+# tree. Note: MAKEOBJDIR is an *enviroment* variable
# and does work proper only if set as enviroment variable,
# not as global or command line variable! [obj]
#
-# E.g. use `env MAKEOBJDIR=obj-amd make'
-#
-# NOOBJ Do not create 'obj' directory if defined. [not set]
+# E.g. use `env MAKEOBJDIR=/somewhere/obj make'
#
-# NOOBJLINK Create 'obj' directory in current directory instead
-# a symbolic link to the 'obj' tree if defined. [not set]
+# NOOBJ Do not create build directory in object tree.
#
+# OBJLINK Create a symbolic link from ${.TARGETOBJDIR} to ${.CURDIR}/obj
+# Note: This BREAKS the read-only src tree rule!
#
# +++ targets +++
#
@@ -33,67 +26,77 @@
# remove a.out Errs errs mklog ${CLEANFILES}
#
# cleandir:
-# remove all of the files removed by the target clean,
-# cleandepend (see bsd.dep.mk) and 'obj' directory.
+# remove the build directory (and all its contents) created by obj
#
# obj:
-# create 'obj' directory.
+# create build directory.
#
-.if defined(MAKEOBJDIR) && !empty(MAKEOBJDIR)
-__objdir = ${MAKEOBJDIR}
-.else
-
-.if defined(MACHINE) && !empty(MACHINE)
-__objdir = obj # obj.${MACHINE}
-.else
-__objdir = obj
-.endif
-.endif
-
-
.if !target(obj)
.if defined(NOOBJ)
obj:
.else
-
-obj: _SUBDIRUSE cleanobj
-.if defined(NOOBJLINK)
- mkdir ${.CURDIR}/${__objdir}
+.if !defined(OBJLINK)
+obj: _SUBDIR
+ @if ! test -d ${.TARGETOBJDIR}; then \
+ mkdir -p ${.TARGETOBJDIR}; \
+ if ! test -d ${.TARGETOBJDIR}; then \
+ ${ECHO} "Unable to create ${.TARGETOBJDIR}."; \
+ exit 1; \
+ fi; \
+ ${ECHO} "${.TARGETOBJDIR} created for ${.CURDIR}"; \
+ fi
.else
- @if test -d ${BSDOBJDIR}; then \
- cd ${.CURDIR}; here=${.CURDIR}; \
- dest=${BSDOBJDIR}`echo $$here | \
- sed "s,^${BSDSRCDIR},,"`/${__objdir}; \
- ${ECHO} "$$here/${__objdir} -> $$dest"; \
- ln -s $$dest ${__objdir}; \
- if test ! -d $$dest; then \
- mkdir -p $$dest; \
- fi; \
- else \
- ${ECHO} "obj tree \"${BSDOBJDIR}\" does not exist."; \
+obj: _SUBDIR
+ @if ! test -d ${.TARGETOBJDIR}; then \
+ mkdir -p ${.TARGETOBJDIR}; \
+ if ! test -d ${.TARGETOBJDIR}; then \
+ ${ECHO} "Unable to create ${.TARGETOBJDIR}."; \
+ exit 1; \
+ fi; \
+ ln -fs ${.TARGETOBJDIR} ${.CURDIR}/obj; \
+ ${ECHO} "${.CURDIR} -> ${.TARGETOBJDIR}"; \
fi
.endif
.endif
.endif
+.if !target(objlink)
+objlink: _SUBDIR
+ @if test -d ${.TARGETOBJDIR}; then \
+ ln -fs ${.TARGETOBJDIR} ${.CURDIR}/obj; \
+ else \
+ echo "No ${.TARGETOBJDIR} to link to - do a make obj."; \
+ fi
+.endif
+
#
# cleanup
#
-cleanobj:
- rm -f -r ${.CURDIR}/${__objdir}
+cleanobj:
+ @if [ -d ${.TARGETOBJDIR} ]; then \
+ rm -rf ${.TARGETOBJDIR}; \
+ else \
+ cd ${.CURDIR} && ${MAKE} clean cleandepend; \
+ fi
+.if defined(OBJLINK)
+ @if [ -h ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi
+.endif
+.if !target(cleanfiles)
cleanfiles:
rm -f a.out Errs errs mklog ${CLEANFILES}
+.endif
# see bsd.dep.mk
.if !target(cleandepend)
cleandepend:
+ @rm -f .depend
.endif
.if !target(clean)
-clean: _SUBDIRUSE cleanfiles
+clean: cleanfiles _SUBDIR
.endif
-cleandir: _SUBDIRUSE cleanfiles cleandepend cleanobj
+cleandir: cleanobj _SUBDIR
OpenPOWER on IntegriCloud