git: 3e65b7d94dfc - main - cleankernel: A target to delete the kernel compile file
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 11 Feb 2022 19:52:25 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=3e65b7d94dfc866cfa3f725ddbe44c8bef525d6c
commit 3e65b7d94dfc866cfa3f725ddbe44c8bef525d6c
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2022-02-11 19:50:51 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2022-02-11 19:51:24 +0000
cleankernel: A target to delete the kernel compile file
With the meta-build, it's always a NO_CLEAN build. Provide a way to
remove so one can rebuild from scratch. 'cleankernel' will delete the
kernel and modules object directories. Document this in build(7).
Sponsored by: Netflix
Reviewed by: debdrup, markj
Differential Revision: https://reviews.freebsd.org/D32978
---
Makefile | 6 +++---
Makefile.inc1 | 8 +++++---
share/man/man7/build.7 | 7 ++++++-
3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/Makefile b/Makefile
index 2b39f814250c..8bd9e37dc016 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
#
# $FreeBSD$
#
-# The user-driven targets are:
+# The common user-driven targets are (for a complete list, see build(7)):
#
# universe - *Really* build *everything* (buildworld and
# all kernels on all architectures). Define
@@ -148,8 +148,8 @@ __DO_KERNELS?=yes
TGTS= all all-man buildenv buildenvvars buildkernel buildworld \
check check-old check-old-dirs check-old-files check-old-libs \
- checkdpadd checkworld clean cleandepend cleandir cleanworld \
- cleanuniverse \
+ checkdpadd checkworld clean cleandepend cleandir cleankernel \
+ cleanworld cleanuniverse \
delete-old delete-old-dirs delete-old-files delete-old-libs \
depend distribute distributekernel distributekernel.debug \
distributeworld distrib-dirs distribution doxygen \
diff --git a/Makefile.inc1 b/Makefile.inc1
index cbbb2bc83ffc..b7aff83a31d2 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -3420,18 +3420,20 @@ builddtb: .PHONY
#
.if make(cleanworld)
BW_CANONICALOBJDIR:=${OBJTOP}/
+.elif make(cleankernel)
+BW_CANONICALOBJDIR:=${KRNLOBJDIR}/${KERNCONF}/
.elif make(cleanuniverse)
BW_CANONICALOBJDIR:=${OBJROOT}
.if ${MK_UNIFIED_OBJDIR} == "no"
.error ${.TARGETS} only supported with WITH_UNIFIED_OBJDIR enabled.
.endif
.endif
-cleanworld cleanuniverse: .PHONY
+cleanworld cleanuniverse cleankernel: .PHONY
.if !empty(BW_CANONICALOBJDIR) && exists(${BW_CANONICALOBJDIR}) && \
${.CURDIR:tA} != ${BW_CANONICALOBJDIR:tA}
- -rm -rf ${BW_CANONICALOBJDIR}*
+ -(cd ${BW_CANONICALOBJDIR} && rm -rf *)
-chflags -R 0 ${BW_CANONICALOBJDIR}
- rm -rf ${BW_CANONICALOBJDIR}*
+ -(cd ${BW_CANONICALOBJDIR} && rm -rf *)
.endif
.if make(cleanworld) && ${MK_AUTO_OBJ} == "no" && \
(empty(BW_CANONICALOBJDIR) || ${.CURDIR:tA} == ${BW_CANONICALOBJDIR:tA})
diff --git a/share/man/man7/build.7 b/share/man/man7/build.7
index 7a9ef72fda65..4e499c81b45c 100644
--- a/share/man/man7/build.7
+++ b/share/man/man7/build.7
@@ -216,10 +216,15 @@ for native builds, and
for cross builds and native builds with variable
.Va CROSS_BUILD_TESTING
set.
+.It Cm cleankernel
+Attempts to clean up targets built by a preceding
+.Cm buildkernel ,
+or similar step, built from the same source directory and
+.Va KERNCONF .
.It Cm cleanworld
Attempt to clean up targets built by a preceding
.Cm buildworld ,
-or similar step built from this source directory.
+or similar step, built from this source directory.
.It Cm cleanuniverse
When
.Va WITH_UNIFIED_OBJDIR