|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [XEN PATCH v2 04/12] xen/build: extract clean target from Rules.mk
From: Anthony PERARD <anthony.perard@xxxxxxxxx>
Most of the code executed by Rules.mk isn't necessary for the clean
target, especially not the CFLAGS. This make running make clean much
faster.
This extract the code into a different Makefile. It doesn't want to
include Config.mk either so variables DEPS_RM and DEPS_INCLUDE are
extracted from Config.mk as well. DEPS_INCLUDE is put into
Kbuild.include so it could be use by other Makefiles.
This is inspired by Kbuild, with Makefile.clean partially copied from
Linux v5.4.
Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
xen/Rules.mk | 13 -------------
xen/scripts/Kbuild.include | 7 ++++++-
xen/scripts/Makefile.clean | 33 +++++++++++++++++++++++++++++++++
3 files changed, 39 insertions(+), 14 deletions(-)
create mode 100644 xen/scripts/Makefile.clean
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 120323717d87..deab0abd63e1 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -94,8 +94,6 @@ LDFLAGS += $(LDFLAGS-y)
include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk
-DEPS = .*.d
-
include Makefile
define gendep
@@ -113,11 +111,6 @@ __subdir-y := $(filter %/, $(obj-y))
subdir-y += $(__subdir-y)
obj-y := $(patsubst %/, %/built_in.o, $(obj-y))
-subdir-n := $(subdir-n) $(subdir-) \
- $(filter %/, $(obj-n) $(obj-))
-
-subdir-all := $(subdir-y) $(subdir-n)
-
$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS +=
-DINIT_SECTIONS_ONLY
ifeq ($(CONFIG_COVERAGE),y)
@@ -181,12 +174,6 @@ FORCE:
%/built_in_bin.o: FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk -C $* built_in_bin.o
-.PHONY: clean
-clean:: $(addprefix _clean_, $(subdir-all))
- rm -f *.o .*.o.tmp *~ core $(DEPS_RM)
-_clean_%/: FORCE
- $(MAKE) $(clean) $*
-
SRCPATH := $(patsubst $(BASEDIR)/%,%,$(CURDIR))
%.o: %.c Makefile
diff --git a/xen/scripts/Kbuild.include b/xen/scripts/Kbuild.include
index 2465cc4060c3..6a9b0c39da53 100644
--- a/xen/scripts/Kbuild.include
+++ b/xen/scripts/Kbuild.include
@@ -2,6 +2,11 @@
####
# kbuild: Generic definitions
+###
+# dependencies
+DEPS = .*.d
+DEPS_INCLUDE = $(addsuffix .d2, $(basename $(wildcard $(DEPS))))
+
# cc-ifversion
# Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ] && echo $(3) ||
echo $(4))
@@ -9,4 +14,4 @@ cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ]
&& echo $(3) || e
# Shorthand for $(MAKE) clean
# Usage:
# $(MAKE) $(clean) dir
-clean := -f $(BASEDIR)/Rules.mk clean -C
+clean := -f $(BASEDIR)/scripts/Makefile.clean clean -C
diff --git a/xen/scripts/Makefile.clean b/xen/scripts/Makefile.clean
new file mode 100644
index 000000000000..31cf2b59594e
--- /dev/null
+++ b/xen/scripts/Makefile.clean
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: GPL-2.0
+# ==========================================================================
+# Cleaning up
+# ==========================================================================
+
+clean::
+
+include $(BASEDIR)/scripts/Kbuild.include
+
+include Makefile
+
+# Figure out what we need to build from the various variables
+# ==========================================================================
+__subdir-y := $(filter %/, $(obj-y))
+subdir-y += $(__subdir-y)
+subdir-n := $(subdir-n) $(subdir-) \
+ $(filter %/, $(obj-n) $(obj-))
+subdir-all := $(subdir-y) $(subdir-n)
+
+DEPS_RM = $(DEPS) $(DEPS_INCLUDE)
+.PHONY: clean
+clean:: $(addprefix _clean_, $(subdir-all))
+ rm -f *.o .*.o.tmp *~ core $(DEPS_RM)
+
+# Descending
+# ---------------------------------------------------------------------------
+
+_clean_%/: FORCE
+ $(MAKE) $(clean) $*
+
+# Force execution of pattern rules (for which PHONY cannot be directly used).
+.PHONY: FORCE
+FORCE:
--
Anthony PERARD
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |