Author: bdrewery
Date: Wed Nov  1 21:22:10 2017
New Revision: 325289
URL: https://svnweb.freebsd.org/changeset/base/325289

Log:
  Add a 'make cleanuniverse'.
  
  This will remove all build files for the source directory
  when MK_UNIFIED_OBJDIR is enabled.
  
  Sponsored by: Dell EMC Isilon

Modified:
  head/Makefile
  head/Makefile.inc1
  head/share/man/man7/build.7

Modified: head/Makefile
==============================================================================
--- head/Makefile       Wed Nov  1 21:22:05 2017        (r325288)
+++ head/Makefile       Wed Nov  1 21:22:10 2017        (r325289)
@@ -122,6 +122,7 @@
 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 \
        delete-old delete-old-dirs delete-old-files delete-old-libs \
        depend distribute distributekernel distributekernel.debug \
        distributeworld distrib-dirs distribution doxygen \

Modified: head/Makefile.inc1
==============================================================================
--- head/Makefile.inc1  Wed Nov  1 21:22:05 2017        (r325288)
+++ head/Makefile.inc1  Wed Nov  1 21:22:10 2017        (r325289)
@@ -2751,14 +2751,21 @@ builddtb: .PHONY
 # in this makefile.  We don't do a cleandir walk if MK_AUTO_OBJ is yes
 # since it is not possible for files to land in the wrong place.
 #
-BW_CANONICALOBJDIR:=${OBJTOP}
-cleanworld: .PHONY
-.if exists(${BW_CANONICALOBJDIR}/)
-       -rm -rf ${BW_CANONICALOBJDIR}/*
+.if make(cleanworld)
+BW_CANONICALOBJDIR:=${OBJTOP}/
+.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
+.if !empty(BW_CANONICALOBJDIR) && exists(${BW_CANONICALOBJDIR})
+       -rm -rf ${BW_CANONICALOBJDIR}*
        -chflags -R 0 ${BW_CANONICALOBJDIR}
-       rm -rf ${BW_CANONICALOBJDIR}/*
+       rm -rf ${BW_CANONICALOBJDIR}*
 .endif
-.if ${MK_AUTO_OBJ} == "no"
+.if make(cleanworld) && ${MK_AUTO_OBJ} == "no"
 .if ${.CURDIR} == ${.OBJDIR} || ${.CURDIR}/obj == ${.OBJDIR}
        #   To be safe in this case, fall back to a 'make cleandir'
        ${_+_}@cd ${.CURDIR}; ${MAKE} cleandir

Modified: head/share/man/man7/build.7
==============================================================================
--- head/share/man/man7/build.7 Wed Nov  1 21:22:05 2017        (r325288)
+++ head/share/man/man7/build.7 Wed Nov  1 21:22:10 2017        (r325289)
@@ -207,8 +207,15 @@ for cross builds and native builds with variable
 set.
 .It Cm cleanworld
 Attempt to clean up targets built by a preceding
-.Cm buildworld
-step.
+.Cm buildworld ,
+or similar step built from this source directory.
+.It Cm cleanuniverse
+When
+.Va WITH_UNIFIED_OBJDIR
+is enabled, attempt to clean up targets built by a preceding
+.Cm buildworld ,
+.Cm universe ,
+or similar step, for any architecture built from this source directory.
 .It Cm distributeworld
 Distribute everything compiled by a preceding
 .Cm buildworld
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to