diff options
author | jlam <jlam@pkgsrc.org> | 2006-01-19 16:11:10 +0000 |
---|---|---|
committer | jlam <jlam@pkgsrc.org> | 2006-01-19 16:11:10 +0000 |
commit | caab19c860a4fe9b6d6ead382eb330e0baac3698 (patch) | |
tree | 057ea51b49839a244adf7ee593f25d87914c2248 /mk/bsd.pkg.clean.mk | |
parent | 4f13cb236859bfc1eb6068b65358ffe2c6e63a82 (diff) | |
download | pkgsrc-caab19c860a4fe9b6d6ead382eb330e0baac3698.tar.gz |
* Split out the "clean" targets and variables and put them into a separate
file pkgsrc/mk/bsd.pkg.clean.mk.
* Reimplement the clean target so that we don't need to invoke a separate
make process just to do clean-depends.
* Reimplement clean-depends using a pipe to avoid command-line length
issues.
Diffstat (limited to 'mk/bsd.pkg.clean.mk')
-rw-r--r-- | mk/bsd.pkg.clean.mk | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/mk/bsd.pkg.clean.mk b/mk/bsd.pkg.clean.mk new file mode 100644 index 00000000000..1defd501b11 --- /dev/null +++ b/mk/bsd.pkg.clean.mk @@ -0,0 +1,85 @@ +# $NetBSD: bsd.pkg.clean.mk,v 1.1 2006/01/19 16:11:10 jlam Exp $ +# +# This Makefile fragment is included to bsd.pkg.mk and defines the +# relevant variables and targets for the "clean" phase. +# +# The following variables may be set by the package Makefile and +# specify how cleaning happens: +# +# CLEANDEPENDS specifies the whether "cleaning" will also clean +# in all dependencies, implied and direct. CLEANDEPENDS +# defaults to "no". +# +# The following targets are defined by bsd.pkg.clean.mk: +# +# clean-depends is the target which descends into dependencies' +# package directories and invokes the "clean" action. +# +# do-clean is the target that does the actual cleaning, which +# involves removing the work directory and other temporary +# files used by the package. +# +# clean is the target that is invoked by the user to perform +# the "clean" action. +# +# cleandir is an alias for "clean". +# + +CLEANDEPENDS?= no + +.PHONY: clean-depends +clean-depends: + ${_PKG_SILENT}${_PKG_DEBUG} \ + ${_DEPENDS_WALK_CMD} ${PKGPATH} | \ + while read dir; do \ + cd ${.CURDIR}/../../$$dir && \ + ${MAKE} ${MAKEFLAGS} CLEANDEPENDS=no clean; \ + done + +.PHONY: pre-clean +.if !target(pre-clean) +pre-clean: + @${DO_NADA} +.endif + +.PHONY: post-clean +.if !target(post-clean) +post-clean: + @${DO_NADA} +.endif + +.PHONY: do-clean +.if !target(do-clean) +do-clean: + @${ECHO_MSG} "${_PKGSRC_IN}> Cleaning for ${PKGNAME}" + ${_PKG_SILENT}${_PKG_DEBUG} \ + if ${TEST} -d ${WRKDIR:Q}; then \ + if ${TEST} -w ${WRKDIR:Q}; then \ + ${RM} -fr ${WRKDIR:Q}; \ + else \ + ${ECHO_MSG} "${_PKGSRC_IN}> "${WRKDIR:Q}" not writable, skipping"; \ + fi; \ + fi +. if defined(WRKOBJDIR) + -${_PKG_SILENT}${_PKG_DEBUG} \ + ${RMDIR} ${BUILD_DIR} 2>/dev/null; \ + ${RM} -f ${WRKDIR_BASENAME} +. endif +.endif + +_CLEAN_TARGETS+= pre-clean +.if empty(CLEANDEPENDS:M[nN][oO]) +_CLEAN_TARGETS+= clean-depends +.endif +_CLEAN_TARGETS+= do-clean +_CLEAN_TARGETS+= post-clean + +.ORDER: ${_CLEAN_TARGETS} + +.PHONY: clean +.if !target(clean) +clean: ${_CLEAN_TARGETS} +.endif + +.PHONY: cleandir +cleandir: clean |