Skip to content
Snippets Groups Projects
Commit 611aefef authored by Simon Rose's avatar Simon Rose
Browse files

Refactor and rearrange

parent 3ab8e59e
No related branches found
No related tags found
No related merge requests found
...@@ -425,41 +425,47 @@ ifeq ($(filter O.%,$(notdir ${CURDIR})),) ...@@ -425,41 +425,47 @@ ifeq ($(filter O.%,$(notdir ${CURDIR})),)
# Still in source directory, third run. # Still in source directory, third run.
# First, sort out all of the dependencies. This is done recursively using tools from https://github.com/markpiffer/gmtt.git # First, sort out all of the dependencies. This is done recursively using tools from https://github.com/markpiffer/gmtt.git
space := $(strip) $(strip)# space := $(strip) $(strip)#
comma := ,# comma := ,#
list2param = $(subst $(space),$(comma),$(strip $1)) list2param = $(subst $(space),$(comma),$(strip $1))
exec = $(eval -exec=$1)$(eval -exec:=$$(call -exec,$(call list2param,$2)))$(-exec) exec = $(eval -exec=$1)$(eval -exec:=$$(call -exec,$(call list2param,$2)))$(-exec)
while = $(if $(call exec,$1),$(eval $2)$(call while,$1,$2,$3),$(eval $3)) while = $(if $(call exec,$1),$(eval $2)$(call while,$1,$2,$3),$(eval $3))
# Used to select from table-like data; syntax is SELECT what FROM where WHEN condition. This has been tailored to parse .dep files.
select = $(strip $(call -select,$(strip $2),$1,$3)) select = $(strip $(call -select,$(strip $2),$1,$3))
-select = $(if $1,$(if $(call exec,$3,$(call list2param,$(wordlist 1,2,$1))), $(word $2,$1))$(call -select,$(wordlist 3,2147483647,$1),$2,$3)) -select = $(if $1,$(if $(call exec,$3,$(call list2param,$(wordlist 1,2,$1))), $(word $2,$1))$(call -select,$(wordlist 3,2147483647,$1),$2,$3))
str-eq = $(if $(subst x$1,,x$2),,t) str-eq = $(if $(subst x$1,,x$2),,t)
_MODULES :=
REQUIRED :=
# Converts all of the X_DEP_VERSIONs to x_VERSION and records them
define fetch_module_versions
_lm := $$(shell echo $1 | tr '[:upper:]' '[:lower:]')
$$(_lm)_VERSION := $($1_DEP_VERSION)
_MODULES += $$(_lm)
endef
$(foreach m,$(patsubst %_DEP_VERSION,%,$(filter %_DEP_VERSION,$(.VARIABLES))),$(eval $(call fetch_module_versions,$m)))
# Fetches the data from .dep files to be parsed by the above
define fetch_deps define fetch_deps
$(shell cat $(E3_SITEMODS_PATH)/$1/$($1_VERSION)/lib/$(T_A)/$1.dep | sed '1d') $(shell cat $(E3_SITEMODS_PATH)/$1/$($1_VERSION)/lib/$(T_A)/$1.dep | sed '1d')
endef endef
# Used to recurse through versions: updates REQUIRED and fetches all of the dependencies from the given module
define update_dep_versions define update_dep_versions
m := $$(firstword $$(_MODULES)) m := $$(firstword $$(_MODULES))
REQUIRED += $$m REQUIRED += $$m
$$m_TBL := $$(call fetch_deps,$$m) $$m_TBL := $$(call fetch_deps,$$m)
$$m_DEPS := $$(call select,1,$$($$m_TBL),1) $$m_DEPS := $$(call select,1,$$($$m_TBL),1)
_MODULES := $$(filter-out $$(REQUIRED),$$(_MODULES) $$($$m_DEPS)) _MODULES := $$(filter-out $$(REQUIRED),$$(_MODULES) $$($$m_DEPS))
$$(foreach mm,$$($$m_DEPS),$$(eval export $$(mm)_VERSION := $$(call select,2,$$($$m_TBL),$$$$(call str-eq,$$$$1,$$(mm))))) $$(foreach mm,$$($$m_DEPS),$$(eval $$(mm)_VERSION := $$(call select,2,$$($$m_TBL),$$$$(call str-eq,$$$$1,$$(mm)))))
endef endef
# Convert (for example) ASYN_DEP_VERSION to asyn_VERSION and add asyn to the list of modules
_MODULES :=
REQUIRED :=
$(foreach m,$(patsubst %_DEP_VERSION,%,$(filter %_DEP_VERSION,$(.VARIABLES))),\
$(eval _lm := $(shell echo $m | tr '[:upper:]' '[:lower:]'))\
$(eval export $(_lm)_VERSION := $($m_DEP_VERSION))\
$(eval _MODULES += $(_lm)))
$(call while,$$(_MODULES),$(update_dep_versions)) $(call while,$$(_MODULES),$(update_dep_versions))
$(foreach m,$(REQUIRED),$(eval export $m_VERSION))
debug:: debug::
@echo "===================== Pass 3: T_A = $(T_A) =====================" @echo "===================== Pass 3: T_A = $(T_A) ====================="
@echo "BINS = $(BINS)" @echo "BINS = $(BINS)"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment