From 1dae12ba05d30933253afbafccb67cb6ca8b4544 Mon Sep 17 00:00:00 2001 From: Ouss4 Date: Fri, 24 Jul 2020 23:18:37 +0100 Subject: [PATCH] Don't run preconfig, clean or distclean when it's not necessary. --- .gitignore | 1 + Application.mk | 4 +--- Directory.mk | 30 +++++++++++++++--------------- Make.defs | 8 +++++--- Makefile | 2 +- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index 850ed8380..910e0595e 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ *~ .built .depend +.kconfig /*.lock /bin /boot_romfsimg.h diff --git a/Application.mk b/Application.mk index d23492eb1..9549f7ace 100644 --- a/Application.mk +++ b/Application.mk @@ -96,7 +96,7 @@ VPATH += :. # Targets follow all:: .built -.PHONY: clean preconfig depend distclean +.PHONY: clean depend distclean .PRECIOUS: $(BIN) define ELFASSEMBLE @@ -195,8 +195,6 @@ install:: endif # BUILD_MODULE -preconfig:: - ifeq ($(CONFIG_NSH_BUILTIN_APPS),y) ifneq ($(PROGNAME),) ifneq ($(PRIORITY),) diff --git a/Directory.mk b/Directory.mk index 66fbbdab1..fae7cb9d1 100644 --- a/Directory.mk +++ b/Directory.mk @@ -35,38 +35,38 @@ include $(APPDIR)/Make.defs -# Sub-directories +# Sub-directories that have been built or configured. -SUBDIRS = $(dir $(wildcard */Makefile)) +SUBDIRS := $(dir $(wildcard *$(DELIM)Makefile)) +CONFIGSUBDIRS := $(filter-out $(dir $(wildcard *$(DELIM)Kconfig)),$(SUBDIRS)) +CLEANSUBDIRS := $(dir $(wildcard *$(DELIM).built)) +CLEANSUBDIRS += $(dir $(wildcard *$(DELIM).depend)) +CLEANSUBDIRS += $(dir $(wildcard *$(DELIM).kconfig)) all: nothing -.PHONY: nothing context depend clean distclean +.PHONY: nothing clean distclean -$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),preconfig))) -$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),context))) -$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),depend))) -$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),clean))) -$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),distclean))) +$(foreach SDIR, $(CONFIGSUBDIRS), $(eval $(call SDIR_template,$(SDIR),preconfig))) +$(foreach SDIR, $(CLEANSUBDIRS), $(eval $(call SDIR_template,$(SDIR),clean))) +$(foreach SDIR, $(CLEANSUBDIRS), $(eval $(call SDIR_template,$(SDIR),distclean))) nothing: install: -preconfig: $(foreach SDIR, $(SUBDIRS), $(SDIR)_preconfig) +preconfig: $(foreach SDIR, $(CONFIGSUBDIRS), $(SDIR)_preconfig) ifneq ($(MENUDESC),) $(Q) $(MKKCONFIG) -m $(MENUDESC) + $(Q) touch .kconfig endif -context: $(foreach SDIR, $(SUBDIRS), $(SDIR)_context) +clean: $(foreach SDIR, $(CLEANSUBDIRS), $(SDIR)_clean) -depend: $(foreach SDIR, $(SUBDIRS), $(SDIR)_depend) - -clean: $(foreach SDIR, $(SUBDIRS), $(SDIR)_clean) - -distclean: $(foreach SDIR, $(SUBDIRS), $(SDIR)_distclean) +distclean: $(foreach SDIR, $(CLEANSUBDIRS), $(SDIR)_distclean) ifneq ($(MENUDESC),) $(call DELFILE, Kconfig) + $(call DELFILE, .kconfig) endif -include Make.dep diff --git a/Make.defs b/Make.defs index 92cae86a8..f3f99ed40 100644 --- a/Make.defs +++ b/Make.defs @@ -53,9 +53,11 @@ endif # CLEANDIRS is the list of all top-level directories containing Makefiles. # It is used only for cleaning. -BUILDIRS := $(dir $(wildcard $(APPDIR)$(DELIM)*$(DELIM)Make.defs)) -BUILDIRS := $(filter-out $(APPDIR)$(DELIM)import$(DELIM),$(BUILDIRS)) -CLEANDIRS := $(dir $(wildcard $(APPDIR)$(DELIM)*$(DELIM)Makefile)) +BUILDIRS := $(dir $(wildcard $(APPDIR)$(DELIM)*$(DELIM)Make.defs)) +BUILDIRS := $(filter-out $(APPDIR)$(DELIM)import$(DELIM),$(BUILDIRS)) +CONFIGDIRS := $(filter-out $(APPDIR)$(DELIM)builtin$(DELIM),$(BUILDIRS)) +CONFIGDIRS := $(filter-out $(dir $(wildcard $(APPDIR)$(DELIM)*$(DELIM)Kconfig)),$(CONFIGDIRS)) +CLEANDIRS := $(dir $(wildcard $(APPDIR)$(DELIM)*$(DELIM)Makefile)) # CONFIGURED_APPS is the application directories that should be built in # the current configuration. diff --git a/Makefile b/Makefile index 91ef3a91b..394c9a8e8 100644 --- a/Makefile +++ b/Makefile @@ -149,7 +149,7 @@ context_serialize: context: context_serialize Kconfig: - $(foreach SDIR, $(BUILDIRS), $(call MAKE_template,$(SDIR),preconfig)) + $(foreach SDIR, $(CONFIGDIRS), $(call MAKE_template,$(SDIR),preconfig)) $(Q) $(MKKCONFIG) preconfig: Kconfig