diff options
author | Felix Fietkau <nbd@openwrt.org> | 2007-07-28 02:44:55 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2007-07-28 02:44:55 +0000 |
commit | 81529c47ec26f951a849c54922db22f38848ed95 (patch) | |
tree | b468d3dd463ba5b6d2a35ef630b23eec4d4f6489 /include/subdir.mk | |
parent | f1b2dbceb2dfb162db1dc76cfd71d53eba7fa7be (diff) | |
download | upstream-81529c47ec26f951a849c54922db22f38848ed95.tar.gz upstream-81529c47ec26f951a849c54922db22f38848ed95.tar.bz2 upstream-81529c47ec26f951a849c54922db22f38848ed95.zip |
initial attempt at cleaning up subdirectory handling. tools/Makefile is now being included instead of recursively called
SVN-Revision: 8201
Diffstat (limited to 'include/subdir.mk')
-rw-r--r-- | include/subdir.mk | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/include/subdir.mk b/include/subdir.mk new file mode 100644 index 0000000000..81a6f2a428 --- /dev/null +++ b/include/subdir.mk @@ -0,0 +1,63 @@ +# debug flags: +# +# d: show subdirectory tree +# t: show added targets +# l: show legacy targets + +ifeq ($(DEBUG),all) + build_debug:=dt +else + build_debug:=$(DEBUG) +endif + +define debug +$$(findstring $(2),$$(if $$(DEBUG_DIR),$$(if $$(filter $$(DEBUG_DIR)%,$(1)),$(build_debug)),$(build_debug))) +endef + +define warn +$$(if $(call debug,$(1),$(2)),$$(warning $(3))) +endef + +define warn_eval +$(call warn,$(1),$(2),$(3) $(4)) +$(4) +endef + +dep/compile=$(1)/prepare +dep/install=$(1)/compile +SUBTARGETS:=clean download prepare compile install update refresh prereq + +# Parameters: <subdir> +define subdir + $(call warn,$(1),d,D $(1)) + $(foreach bd,$($(1)/builddirs), + $(call warn,$(1),d,BD $(1)/$(bd)) + $(foreach target,$(SUBTARGETS), + $(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(target): $(call dep/$(target),$(1)/$(bd)) $($(1)/$(bd)/$(target)) $($(1)//$(target))) + @$$(MAKE) -j1 -C $(1)/$(bd) $(target) + + # legacy targets + $(call warn_eval,$(1)/$(bd),l,T,$(1)/$(bd)-$(target): $(1)/$(bd)/$(target)) + ) + ) + $(foreach target,$(SUBTARGETS), + $(call warn_eval,$(1),t,T,$(1)/$(target): $($(1)/) $(foreach bd,$($(1)/builddirs),$(1)/$(bd)/$(target))) + ) +endef + +# Parameters: <subdir> <name> +define stampfile + $(1)/stamp:=$(STAGING_DIR)/stampfiles/.$(2)_installed + $(call rdep,$(1),$$($(1)/stamp)) + + $$($(1)/stamp): + @$(MAKE) $(1)/install + @mkdir -p $$$$(dirname $$($(1)/stamp)) + @touch $$($(1)/stamp) + .PRECIOUS: $$($(1)/stamp) # work around a make bug + + $(1)//clean:=$(1)/stamp/clean + $(1)/stamp/clean: FORCE + @rm -f $$($(1)/stamp) + +endef |