summaryrefslogtreecommitdiff
path: root/mk/bsd.pkg.clean.mk
diff options
context:
space:
mode:
authorjlam <jlam@pkgsrc.org>2006-01-19 16:11:10 +0000
committerjlam <jlam@pkgsrc.org>2006-01-19 16:11:10 +0000
commitcaab19c860a4fe9b6d6ead382eb330e0baac3698 (patch)
tree057ea51b49839a244adf7ee593f25d87914c2248 /mk/bsd.pkg.clean.mk
parent4f13cb236859bfc1eb6068b65358ffe2c6e63a82 (diff)
downloadpkgsrc-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.mk85
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