]> xenbits.xensource.com Git - people/liuw/freebsd.git/commitdiff
Move 'make cleandir' from Makefile to Makefile.inc1.
authorbdrewery <bdrewery@FreeBSD.org>
Mon, 9 Nov 2015 23:36:46 +0000 (23:36 +0000)
committerbdrewery <bdrewery@FreeBSD.org>
Mon, 9 Nov 2015 23:36:46 +0000 (23:36 +0000)
This leads the way for fixing cross-build cleanup, and eventually replacing
'cleandir' with it during the build.

Sponsored by: EMC / Isilon Storage Division
MFC after: 2 weeks

Makefile
Makefile.inc1

index ce4c0f6963e8c40e1fafa837f7bb479ccc5cf648..9d64e504411591218c26c383ddd557dd585e5a64 100644 (file)
--- a/Makefile
+++ b/Makefile
 
 TGTS=  all all-man buildenv buildenvvars buildkernel buildworld \
        check-old check-old-dirs check-old-files check-old-libs \
-       checkdpadd clean cleandepend cleandir \
+       checkdpadd clean cleandepend cleandir cleanworld \
        delete-old delete-old-dirs delete-old-files delete-old-libs \
        depend distribute distributekernel distributekernel.debug \
        distributeworld distrib-dirs distribution doxygen \
@@ -211,38 +211,6 @@ ${TGTS}: upgrade_checks
 buildworld: upgrade_checks
 .endif
 
-#
-# This 'cleanworld' target is not included in TGTS, because it is not a
-# recursive target.  All of the work for it is done right here.   It is
-# expected that BW_CANONICALOBJDIR == the CANONICALOBJDIR as would be
-# created by bsd.obj.mk, except that we don't want to .include that file
-# in this makefile.  
-#
-# In the following, the first 'rm' in a series will usually remove all
-# files and directories.  If it does not, then there are probably some
-# files with file flags set, so this unsets them and tries the 'rm' a
-# second time.  There are situations where this target will be cleaning
-# some directories via more than one method, but that duplication is
-# needed to correctly handle all the possible situations.  Removing all
-# files without file flags set in the first 'rm' instance saves time,
-# because 'chflags' will need to operate on fewer files afterwards.
-#
-BW_CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR}
-cleanworld:
-.if ${.CURDIR} == ${.OBJDIR} || ${.CURDIR}/obj == ${.OBJDIR}
-.if exists(${BW_CANONICALOBJDIR}/)
-       -rm -rf ${BW_CANONICALOBJDIR}/*
-       -chflags -R 0 ${BW_CANONICALOBJDIR}
-       rm -rf ${BW_CANONICALOBJDIR}/*
-.endif
-       #   To be safe in this case, fall back to a 'make cleandir'
-       ${_+_}@cd ${.CURDIR}; ${_MAKE} cleandir
-.else
-       -rm -rf ${.OBJDIR}/*
-       -chflags -R 0 ${.OBJDIR}
-       rm -rf ${.OBJDIR}/*
-.endif
-
 #
 # Handle the user-driven targets, using the source relative mk files.
 #
index c49bc4ce89caaa6cae2a4fab9702d373a5864a61..d6942f0822f2757f75fbfa20dde6bd925500d05c 100644 (file)
@@ -2205,6 +2205,36 @@ builddtb:
 
 ###############
 
+# cleanworld
+# In the following, the first 'rm' in a series will usually remove all
+# files and directories.  If it does not, then there are probably some
+# files with file flags set, so this unsets them and tries the 'rm' a
+# second time.  There are situations where this target will be cleaning
+# some directories via more than one method, but that duplication is
+# needed to correctly handle all the possible situations.  Removing all
+# files without file flags set in the first 'rm' instance saves time,
+# because 'chflags' will need to operate on fewer files afterwards.
+#
+# It is expected that BW_CANONICALOBJDIR == the CANONICALOBJDIR as would be
+# created by bsd.obj.mk, except that we don't want to .include that file
+# in this makefile.
+#
+BW_CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR}
+cleanworld: .PHONY
+.if ${.CURDIR} == ${.OBJDIR} || ${.CURDIR}/obj == ${.OBJDIR}
+.if exists(${BW_CANONICALOBJDIR}/)
+       -rm -rf ${BW_CANONICALOBJDIR}/*
+       -chflags -R 0 ${BW_CANONICALOBJDIR}
+       rm -rf ${BW_CANONICALOBJDIR}/*
+.endif
+       #   To be safe in this case, fall back to a 'make cleandir'
+       ${_+_}@cd ${.CURDIR}; ${MAKE} cleandir
+.else
+       -rm -rf ${.OBJDIR}/*
+       -chflags -R 0 ${.OBJDIR}
+       rm -rf ${.OBJDIR}/*
+.endif
+
 .if defined(TARGET) && defined(TARGET_ARCH)
 
 .if ${TARGET} == ${MACHINE} && ${TARGET_ARCH} == ${MACHINE_ARCH}