diff options
-rw-r--r-- | core/erlc.mk | 16 | ||||
-rw-r--r-- | plugins/erlydtl.mk | 10 | ||||
-rw-r--r-- | test/core_app.mk | 2 |
3 files changed, 23 insertions, 5 deletions
diff --git a/core/erlc.mk b/core/erlc.mk index d2fd88b..5bb4078 100644 --- a/core/erlc.mk +++ b/core/erlc.mk @@ -216,13 +216,23 @@ define makedep.erl endef ifeq ($(if $(NO_MAKEDEP),$(wildcard $(PROJECT).d),),) -$(PROJECT).d:: $(ERL_FILES) $(call core_find,include/,*.hrl) +$(PROJECT).d:: $(ERL_FILES) $(call core_find,include/,*.hrl) $(MAKEFILE_LIST) $(makedep_verbose) $(call erlang,$(call makedep.erl,$@)) endif +ifneq ($(words $(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES)),0) # Rebuild everything when the Makefile changes. -$(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES):: $(MAKEFILE_LIST) - @touch $@ +$(ERLANG_MK_TMP)/last-makefile-change: $(MAKEFILE_LIST) + $(verbose) mkdir -p $(ERLANG_MK_TMP) + $(verbose) if test -f $@; then \ + touch $(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES); \ + touch -c $(PROJECT).d; \ + fi + $(verbose) touch $@ + +$(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES):: $(ERLANG_MK_TMP)/last-makefile-change +ebin/$(PROJECT).app:: $(ERLANG_MK_TMP)/last-makefile-change +endif -include $(PROJECT).d diff --git a/plugins/erlydtl.mk b/plugins/erlydtl.mk index a8d4cea..4f04e14 100644 --- a/plugins/erlydtl.mk +++ b/plugins/erlydtl.mk @@ -24,10 +24,18 @@ DTL_NAMES = $(addsuffix $(DTL_SUFFIX),$(DTL_FILES:$(DTL_PATH)/%.dtl=%)) DTL_MODULES = $(if $(DTL_FULL_PATH),$(subst /,_,$(DTL_NAMES)),$(notdir $(DTL_NAMES))) BEAM_FILES += $(addsuffix .beam,$(addprefix ebin/,$(DTL_MODULES))) +ifneq ($(words $(DTL_FILES)),0) # Rebuild templates when the Makefile changes. -$(DTL_FILES): $(MAKEFILE_LIST) +$(ERLANG_MK_TMP)/last-makefile-change-erlydtl: $(MAKEFILE_LIST) + @mkdir -p $(ERLANG_MK_TMP) + @if test -f $@; then \ + touch $(DTL_FILES); \ + fi @touch $@ +ebin/$(PROJECT).app:: $(ERLANG_MK_TMP)/last-makefile-change-erlydtl +endif + define erlydtl_compile.erl [begin Module0 = case "$(strip $(DTL_FULL_PATH))" of diff --git a/test/core_app.mk b/test/core_app.mk index 2d6a40b..36c7438 100644 --- a/test/core_app.mk +++ b/test/core_app.mk @@ -850,7 +850,7 @@ core-app-makefile-change: build clean $t touch $(APP)/Makefile $t $(SLEEP) $t $(MAKE) -C $(APP) $v - $t find $(APP) -type f -newer $(APP)/Makefile | sort | diff $(APP)/EXPECT - + $t find $(APP) -type f -newer $(APP)/Makefile -not -path "$(APP)/.erlang.mk/*" | sort | diff $(APP)/EXPECT - $t rm $(APP)/EXPECT core-app-mib: build clean |