diff options
Diffstat (limited to 'make/subdir.mk')
-rw-r--r-- | make/subdir.mk | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/make/subdir.mk b/make/subdir.mk deleted file mode 100644 index f81c25f03..000000000 --- a/make/subdir.mk +++ /dev/null @@ -1,92 +0,0 @@ -# This file is intended to be included from each subdirectory makefile. -# -# Subdirectory makefiles must define: -# SubDirs - The subdirectories to traverse. -# -# Subdirectory makefiles may define: -# ModuleName - The library name for objects in that directory. -# ObjNames - The objects available in that directory. -# Implementation - The library configuration the objects should go in (Generic -# or Optimized) -# Dependencies - Any dependences for the object files. -# OnlyArchs - Only build the objects for the listed archs. -# OnlyConfigs - Only build the objects for the listed configurations. - -ifeq ($(Dir),) - $(error "No Dir variable defined.") -endif - -### -# Include child makefile fragments - -# The list of variables which are intended to be overridden in a subdirectory -# makefile. -RequiredSubdirVariables := SubDirs -OptionalSubdirVariables := ModuleName OnlyArchs OnlyConfigs \ - ObjNames Implementation Dependencies - -# Template: subdir_traverse_template subdir -define subdir_traverse_template -$(call Set,Dir,$(1)) -ifneq ($(DEBUGMAKE),) - $$(info MAKE: $(Dir): Processing subdirectory) -endif - -# Construct the variable key for this directory. -$(call Set,DirKey,SubDir.$(subst .,,$(subst /,__,$(1)))) -$(call Append,SubDirKeys,$(DirKey)) -$(call Set,$(DirKey).Dir,$(Dir)) - -# Reset subdirectory specific variables to sentinel value. -$$(foreach var,$$(RequiredSubdirVariables) $$(OptionalSubdirVariables),\ - $$(call Set,$$(var),UNDEFINED)) - -# Get the subdirectory variables. -include $(1)/Makefile.mk - -ifeq ($(DEBUGMAKE),2) -$$(foreach var,$(RequiredSubdirVariables) $(OptionalSubdirVariables),\ - $$(if $$(call strneq,UNDEFINED,$$($$(var))), \ - $$(info MAKE: $(Dir): $$(var) is defined), \ - $$(info MAKE: $(Dir): $$(var) is undefined))) -endif - -# Check for undefined required variables, and unset sentinel value from optional -# variables. -$$(foreach var,$(RequiredSubdirVariables),\ - $$(if $$(call strneq,UNDEFINED,$$($$(var))),, \ - $$(error $(Dir): variable '$$(var)' was not undefined))) -$$(foreach var,$(OptionalSubdirVariables),\ - $$(if $$(call strneq,UNDEFINED,$$($$(var))),, \ - $$(call Set,$$(var),))) - -# Collect all subdirectory variables for subsequent use. -$$(foreach var,$(RequiredSubdirVariables) $(OptionalSubdirVariables),\ - $$(call Set,$(DirKey).$$(var),$$($$(var)))) - -# Recurse. -include make/subdir.mk - -# Restore directory variable, for cleanliness. -$$(call Set,Dir,$(1)) - -ifneq ($(DEBUGMAKE),) - $$(info MAKE: $$(Dir): Done processing subdirectory) -endif -endef - -# Evaluate this now so we do not have to worry about order of evaluation. - -SubDirsList := $(strip \ - $(if $(call streq,.,$(Dir)),\ - $(SubDirs),\ - $(SubDirs:%=$(Dir)/%))) -ifeq ($(SubDirsList),) -else - ifneq ($(DEBUGMAKE),) - $(info MAKE: Descending into subdirs: $(SubDirsList)) - endif - - $(foreach subdir,$(SubDirsList),\ - $(eval $(call subdir_traverse_template,$(subdir)))) -endif |