git: 3e65b7d94dfc - main - cleankernel: A target to delete the kernel compile file

From: Warner Losh <imp_at_FreeBSD.org>
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