OSDN Git Service

kbuild: use more subdir- for visiting subdirectories while cleaning
authorMasahiro Yamada <masahiroy@kernel.org>
Wed, 13 Oct 2021 06:36:22 +0000 (15:36 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sun, 24 Oct 2021 04:49:46 +0000 (13:49 +0900)
Documentation/kbuild/makefiles.rst suggests to use "archclean" for
cleaning arch/$(SRCARCH)/boot/, but it is not a hard requirement.

Since commit d92cc4d51643 ("kbuild: require all architectures to have
arch/$(SRCARCH)/Kbuild"), we can use the "subdir- += boot" trick for
all architectures. This can take advantage of the parallel option (-j)
for "make clean".

I also cleaned up the comments in arch/$(SRCARCH)/Makefile. The "archdep"
target no longer exists.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
42 files changed:
Documentation/kbuild/makefiles.rst
arch/alpha/Kbuild
arch/alpha/Makefile
arch/arc/Kbuild
arch/arc/Makefile
arch/arm/Kbuild
arch/arm/Makefile
arch/arm64/Kbuild
arch/arm64/Makefile
arch/arm64/kernel/Makefile
arch/csky/Kbuild
arch/csky/Makefile
arch/h8300/Kbuild
arch/h8300/Makefile
arch/ia64/Makefile
arch/m68k/Makefile
arch/microblaze/Kbuild
arch/microblaze/Makefile
arch/mips/Kbuild
arch/mips/Makefile
arch/mips/boot/Makefile
arch/nds32/Kbuild
arch/nds32/Makefile
arch/nios2/Kbuild
arch/nios2/Makefile
arch/openrisc/Kbuild
arch/openrisc/Makefile
arch/parisc/Kbuild
arch/parisc/Makefile
arch/powerpc/Kbuild
arch/powerpc/Makefile
arch/riscv/Kbuild
arch/riscv/Makefile
arch/s390/Kbuild
arch/s390/Makefile
arch/sh/Kbuild
arch/sh/Makefile
arch/sparc/Kbuild
arch/sparc/Makefile
arch/x86/Kbuild
arch/x86/Makefile
arch/xtensa/Makefile

index db3af0b..b008b90 100644 (file)
@@ -1050,22 +1050,9 @@ is not sufficient this sometimes needs to be explicit.
 The above assignment instructs kbuild to descend down in the
 directory compressed/ when "make clean" is executed.
 
-To support the clean infrastructure in the Makefiles that build the
-final bootimage there is an optional target named archclean:
-
-       Example::
-
-               #arch/x86/Makefile
-               archclean:
-                       $(Q)$(MAKE) $(clean)=arch/x86/boot
-
-When "make clean" is executed, make will descend down in arch/x86/boot,
-and clean as usual. The Makefile located in arch/x86/boot/ may use
-the subdir- trick to descend further down.
-
 Note 1: arch/$(SRCARCH)/Makefile cannot use "subdir-", because that file is
-included in the top level makefile, and the kbuild infrastructure
-is not operational at that point.
+included in the top level makefile. Instead, arch/$(SRCARCH)/Kbuild can use
+"subdir-".
 
 Note 2: All directories listed in core-y, libs-y, drivers-y and net-y will
 be visited during "make clean".
index c230201..345d79d 100644 (file)
@@ -1,3 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 obj-y                  += kernel/ mm/
 obj-$(CONFIG_MATHEMU)  += math-emu/
+
+# for cleaning
+subdir- += boot
index 52529ee..881cb91 100644 (file)
@@ -55,9 +55,6 @@ $(boot)/vmlinux.gz: vmlinux
 bootimage bootpfile bootpzfile: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 archheaders:
        $(Q)$(MAKE) $(build)=arch/alpha/kernel/syscalls all
 
index 699d8ca..b94102f 100644 (file)
@@ -1,3 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 obj-y += kernel/
 obj-y += mm/
+
+# for cleaning
+subdir- += boot
index 8782a03..f252e7b 100644 (file)
@@ -112,6 +112,3 @@ uImage: $(uimage-default-y)
        @$(kecho) '  Image $(boot)/uImage is ready'
 
 CLEAN_FILES += $(boot)/uImage
-
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
index 5208f70..b506622 100644 (file)
@@ -9,3 +9,6 @@ obj-y                           += kernel/ mm/ common/
 obj-y                          += probes/
 obj-y                          += net/
 obj-y                          += crypto/
+
+# for cleaning
+subdir- += boot
index 847c31e..07ea71f 100644 (file)
@@ -317,10 +317,6 @@ ifeq ($(CONFIG_VDSO),y)
        $(Q)$(MAKE) $(build)=arch/arm/vdso $@
 endif
 
-# We use MRPROPER_FILES and CLEAN_FILES now
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 # My testing targets (bypasses dependencies)
 bp:;   $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/bootpImage
 
index ea7ab4c..5bfbf7d 100644 (file)
@@ -4,3 +4,6 @@ obj-$(CONFIG_KVM)       += kvm/
 obj-$(CONFIG_XEN)      += xen/
 obj-$(subst m,y,$(CONFIG_HYPERV))      += hyperv/
 obj-$(CONFIG_CRYPTO)   += crypto/
+
+# for cleaning
+subdir- += boot
index c744b1e..e8cfc58 100644 (file)
@@ -182,13 +182,6 @@ ifeq ($(CONFIG_ARM64_USE_LSE_ATOMICS),y)
   endif
 endif
 
-
-# We use MRPROPER_FILES and CLEAN_FILES now
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-       $(Q)$(MAKE) $(clean)=arch/arm64/kernel/vdso
-       $(Q)$(MAKE) $(clean)=arch/arm64/kernel/vdso32
-
 ifeq ($(KBUILD_EXTMOD),)
 # We need to generate vdso-offsets.h before compiling certain files in kernel/.
 # In order to do that, we should use the archprepare target, but we can't since
index 3f1490b..88b3e2a 100644 (file)
@@ -81,3 +81,6 @@ extra-y                                       += $(head-y) vmlinux.lds
 ifeq ($(CONFIG_DEBUG_EFI),y)
 AFLAGS_head.o += -DVMLINUX_PATH="\"$(realpath $(objtree)/vmlinux)\""
 endif
+
+# for cleaning
+subdir- += vdso vdso32
index a4e40e5..4e39f7a 100644 (file)
@@ -1 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
+
+# for cleaning
+subdir- += boot
index 37f593a..8668050 100644 (file)
@@ -76,9 +76,6 @@ all: zImage
 zImage Image uImage: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 define archhelp
   echo  '* zImage       - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
   echo  '  Image        - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
index b2583e7..e4703f3 100644 (file)
@@ -1,2 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
 obj-y  += kernel/ mm/ boot/dts/
+
+# for cleaning
+subdir- += boot
index eb4cb8f..807f41e 100644 (file)
@@ -34,9 +34,6 @@ libs-y        += arch/$(ARCH)/lib/
 
 boot := arch/h8300/boot
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 vmlinux.srec vmlinux.bin zImage uImage.bin: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 
index 7e548c6..3b3ac3e 100644 (file)
@@ -67,8 +67,6 @@ vmlinux.bin: vmlinux FORCE
 unwcheck: vmlinux
        -$(Q)READELF=$(READELF) $(PYTHON3) $(srctree)/arch/ia64/scripts/unwcheck.py $<
 
-archclean:
-
 archheaders:
        $(Q)$(MAKE) $(build)=arch/ia64/kernel/syscalls all
 
index dd0c0ec..740fc97 100644 (file)
@@ -2,9 +2,7 @@
 # m68k/Makefile
 #
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" and "archdep" for cleaning up and making dependencies for
-# this architecture
+# architecture-specific flags and dependencies.
 #
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
index a1c5978..077a0b8 100644 (file)
@@ -3,3 +3,6 @@ obj-y                   += kernel/
 obj-y                  += mm/
 obj-$(CONFIG_PCI)      += pci/
 obj-y                  += boot/dts/
+
+# for cleaning
+subdir- += boot
index 9adc6b6..e775a69 100644 (file)
@@ -60,9 +60,6 @@ export DTB
 
 all: linux.bin
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 archheaders:
        $(Q)$(MAKE) $(build)=arch/microblaze/kernel/syscalls all
 
index d5d6ef9..9e8071f 100644 (file)
@@ -25,3 +25,6 @@ obj-y += vdso/
 ifdef CONFIG_KVM
 obj-y += kvm/
 endif
+
+# for cleaning
+subdir- += boot
index ea3cd08..e036fc0 100644 (file)
@@ -8,8 +8,7 @@
 # Copyright (C) 2002, 2003, 2004  Maciej W. Rozycki
 #
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" cleaning up for this architecture.
+# architecture-specific flags and dependencies.
 #
 
 archscripts: scripts_basic
@@ -426,11 +425,6 @@ endif
        $(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE)
        $(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE)
 
-archclean:
-       $(Q)$(MAKE) $(clean)=arch/mips/boot
-       $(Q)$(MAKE) $(clean)=arch/mips/boot/compressed
-       $(Q)$(MAKE) $(clean)=arch/mips/boot/tools
-
 archheaders:
        $(Q)$(MAKE) $(build)=arch/mips/kernel/syscalls all
 
index a3da2c5..196c44f 100644 (file)
@@ -171,3 +171,6 @@ $(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE
 
 $(obj)/vmlinux.%.itb: $(obj)/vmlinux.%.its $(obj)/vmlinux.bin.% FORCE
        $(call if_changed,itb-image,$<)
+
+# for cleaning
+subdir- += compressed tools
index a4e40e5..4e39f7a 100644 (file)
@@ -1 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
+
+# for cleaning
+subdir- += boot
index c17fc3a..797ad9b 100644 (file)
@@ -64,9 +64,6 @@ prepare: vdso_prepare
 vdso_prepare: prepare0
        $(Q)$(MAKE) $(build)=arch/nds32/kernel/vdso include/generated/vdso-offsets.h
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 define archhelp
   echo  '  Image         - kernel image (arch/$(ARCH)/boot/Image)'
 endef
index a4e40e5..4e39f7a 100644 (file)
@@ -1 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
+
+# for cleaning
+subdir- += boot
index 72e8ff0..02d6785 100644 (file)
@@ -8,8 +8,7 @@
 # Written by Fredrik Markstrom
 #
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" cleaning up for this architecture.
+# architecture-specific flags and dependencies.
 #
 # Nios2 port by Wind River Systems Inc trough:
 #   fredrik.markstrom@gmail.com and ivarholmqvist@gmail.com
@@ -53,9 +52,6 @@ core-y        += $(nios2-boot)/dts/
 
 all: vmImage
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(nios2-boot)
-
 $(BOOT_TARGETS): vmlinux
        $(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
 
index 4234b4c..b0b0f2b 100644 (file)
@@ -1,3 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 obj-y += lib/ kernel/ mm/
 obj-y += boot/dts/
+
+# for cleaning
+subdir- += boot
index c52de52..760b734 100644 (file)
@@ -1,9 +1,7 @@
 # BK Id: %F% %I% %G% %U% %#%
 #
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" and "archdep" for cleaning up and making dependencies for
-# this architecture
+# architecture-specific flags and dependencies.
 #
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
@@ -48,6 +46,3 @@ PHONY += vmlinux.bin
 
 vmlinux.bin: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
-
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
index 3c068b7..a6d3b28 100644 (file)
@@ -1,2 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
 obj-y  += mm/ kernel/ math-emu/
+
+# for cleaning
+subdir- += boot
index fcde3ff..8db4af4 100644 (file)
@@ -2,9 +2,7 @@
 # parisc/Makefile
 #
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" and "archdep" for cleaning up and making dependencies for
-# this architecture
+# architecture-specific flags and dependencies.
 #
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
@@ -181,8 +179,5 @@ define archhelp
        @echo  '  zinstall      - Install compressed vmlinuz kernel'
 endef
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 archheaders:
        $(Q)$(MAKE) $(build)=arch/parisc/kernel/syscalls all
index 5e2f9ea..22cd0d5 100644 (file)
@@ -16,3 +16,6 @@ obj-$(CONFIG_KVM)  += kvm/
 obj-$(CONFIG_PERF_EVENTS) += perf/
 obj-$(CONFIG_KEXEC_CORE)  += kexec/
 obj-$(CONFIG_KEXEC_FILE)  += purgatory/
+
+# for cleaning
+subdir- += boot
index aa6808e..b61d8be 100644 (file)
@@ -1,7 +1,5 @@
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" and "archdep" for cleaning up and making dependencies for
-# this architecture.
+# architecture-specific flags and dependencies.
 #
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
@@ -411,9 +409,6 @@ install:
        sh -x $(srctree)/$(boot)/install.sh "$(KERNELRELEASE)" vmlinux \
        System.map "$(INSTALL_PATH)"
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 ifeq ($(KBUILD_EXTMOD),)
 # We need to generate vdso-offsets.h before compiling certain files in kernel/.
 # In order to do that, we should use the archprepare target, but we can't since
index 4614c01..fb33972 100644 (file)
@@ -2,3 +2,6 @@
 
 obj-y += kernel/ mm/ net/
 obj-$(CONFIG_BUILTIN_DTB) += boot/dts/
+
+# for cleaning
+subdir- += boot
index 0eb4568..753e13f 100644 (file)
@@ -1,7 +1,5 @@
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" and "archdep" for cleaning up and making dependencies for
-# this architecture
+# architecture-specific flags and dependencies.
 #
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
@@ -137,6 +135,3 @@ zinstall: install-image = Image.gz
 install zinstall:
        $(CONFIG_SHELL) $(srctree)/$(boot)/install.sh $(KERNELRELEASE) \
        $(boot)/$(install-image) System.map "$(INSTALL_PATH)"
-
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
index 8b98c50..76e3622 100644 (file)
@@ -8,3 +8,6 @@ obj-$(CONFIG_APPLDATA_BASE)     += appldata/
 obj-y                          += net/
 obj-$(CONFIG_PCI)              += pci/
 obj-$(CONFIG_ARCH_HAS_KEXEC_PURGATORY) += purgatory/
+
+# for cleaning
+subdir- += boot tools
index 450b351..69c45f6 100644 (file)
@@ -3,9 +3,7 @@
 # s390/Makefile
 #
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" and "archdep" for cleaning up and making dependencies for
-# this architecture
+# architecture-specific flags and dependencies.
 #
 # Copyright (C) 1994 by Linus Torvalds
 #
@@ -147,10 +145,6 @@ zfcpdump:
 vdso_install:
        $(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso64 $@
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-       $(Q)$(MAKE) $(clean)=$(tools)
-
 archheaders:
        $(Q)$(MAKE) $(build)=$(syscalls) uapi
 
index 48c2a09..be17188 100644 (file)
@@ -2,3 +2,6 @@
 obj-y                          += kernel/ mm/ boards/
 obj-$(CONFIG_SH_FPU_EMU)       += math-emu/
 obj-$(CONFIG_USE_BUILTIN_DTB)  += boot/dts/
+
+# for cleaning
+subdir- += boot
index 7814639..b39412b 100644 (file)
@@ -198,9 +198,6 @@ compressed: zImage
 archprepare:
        $(Q)$(MAKE) $(build)=arch/sh/tools include/generated/machtypes.h
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 archheaders:
        $(Q)$(MAKE) $(build)=arch/sh/kernel/syscalls all
 
index c9e5749..71cb3d9 100644 (file)
@@ -9,3 +9,6 @@ obj-y += math-emu/
 obj-y += net/
 obj-y += crypto/
 obj-$(CONFIG_SPARC64) += vdso/
+
+# for cleaning
+subdir- += boot
index 24fb5a9..c7008bb 100644 (file)
@@ -75,9 +75,6 @@ install:
        sh $(srctree)/$(boot)/install.sh $(KERNELRELEASE) $(KBUILD_IMAGE) \
                System.map "$(INSTALL_PATH)"
 
-archclean:
-       $(Q)$(MAKE) $(clean)=$(boot)
-
 archheaders:
        $(Q)$(MAKE) $(build)=arch/sparc/kernel/syscalls all
 
index 30dec01..f384cb1 100644 (file)
@@ -25,3 +25,6 @@ obj-y += platform/
 obj-y += net/
 
 obj-$(CONFIG_KEXEC_FILE) += purgatory/
+
+# for cleaning
+subdir- += boot tools
index 7488cfb..67d7c26 100644 (file)
@@ -283,8 +283,6 @@ endif
 archclean:
        $(Q)rm -rf $(objtree)/arch/i386
        $(Q)rm -rf $(objtree)/arch/x86_64
-       $(Q)$(MAKE) $(clean)=$(boot)
-       $(Q)$(MAKE) $(clean)=arch/x86/tools
 
 define archhelp
   echo  '* bzImage             - Compressed kernel image (arch/x86/boot/bzImage)'
index 96714ef..9778216 100644 (file)
@@ -7,9 +7,7 @@
 # Copyright (C) 2014 Cadence Design Systems Inc.
 #
 # This file is included by the global makefile so that you can add your own
-# architecture-specific flags and dependencies. Remember to do have actions
-# for "archclean" and "archdep" for cleaning up and making dependencies for
-# this architecture
+# architecture-specific flags and dependencies.
 
 # Core configuration.
 # (Use VAR=<xtensa_config> to use another default compiler.)