diff options
-rw-r--r-- | plugins/erlydtl.mk | 13 | ||||
-rw-r--r-- | test/plugin_erlydtl.mk | 34 |
2 files changed, 40 insertions, 7 deletions
diff --git a/plugins/erlydtl.mk b/plugins/erlydtl.mk index 67dd5b9..dea6366 100644 --- a/plugins/erlydtl.mk +++ b/plugins/erlydtl.mk @@ -3,7 +3,7 @@ # Configuration. -DTL_FULL_PATH ?= 0 +DTL_FULL_PATH ?= DTL_PATH ?= templates/ DTL_SUFFIX ?= _dtl @@ -16,10 +16,10 @@ dtl_verbose = $(dtl_verbose_$(V)) define erlydtl_compile.erl [begin - Module0 = case $(DTL_FULL_PATH) of - 0 -> + Module0 = case "$(strip $(DTL_FULL_PATH))" of + "" -> filename:basename(F, ".dtl"); - 1 -> + _ -> "$(DTL_PATH)" ++ F2 = filename:rootname(F, ".dtl"), re:replace(F2, "/", "_", [{return, list}, global]) end, @@ -35,7 +35,12 @@ endef ifneq ($(wildcard src/),) DTL_FILES = $(sort $(call core_find,$(DTL_PATH),*.dtl)) + +ifdef DTL_FULL_PATH +BEAM_FILES += $(addprefix ebin/,$(patsubst %.dtl,%_dtl.beam,$(subst /,_,$(DTL_FILES:$(DTL_PATH)%=%)))) +else BEAM_FILES += $(addprefix ebin/,$(patsubst %.dtl,%_dtl.beam,$(notdir $(DTL_FILES)))) +endif ebin/$(PROJECT).app:: $(DTL_FILES) $(if $(strip $?),\ diff --git a/test/plugin_erlydtl.mk b/test/plugin_erlydtl.mk index 2cae220..acfd74c 100644 --- a/test/plugin_erlydtl.mk +++ b/test/plugin_erlydtl.mk @@ -1,6 +1,6 @@ # ErlyDTL plugin. -ERLYDTL_CASES = compile +ERLYDTL_CASES = compile full-path ERLYDTL_TARGETS = $(addprefix erlydtl-,$(ERLYDTL_CASES)) ERLYDTL_CLEAN_TARGETS = $(addprefix clean-,$(ERLYDTL_TARGETS)) @@ -24,7 +24,7 @@ erlydtl-compile: build clean-erlydtl-compile $t perl -ni.bak -e 'print;if ($$.==1) {print "DEPS = erlydtl\n"}' $(APP)/Makefile $i "Generate ErlyDTL templates" - $t mkdir $(APP)/templates + $t mkdir $(APP)/templates/ $t touch $(APP)/templates/$(APP)_one.dtl $t touch $(APP)/templates/$(APP)_two.dtl @@ -33,10 +33,38 @@ erlydtl-compile: build clean-erlydtl-compile $i "Check that ErlyDTL templates are compiled" $t test -f $(APP)/ebin/$(APP)_one_dtl.beam - $t test -f $(APP)/ebin/$(APP)_one_dtl.beam + $t test -f $(APP)/ebin/$(APP)_two_dtl.beam $i "Check that ErlyDTL generated modules are included in .app file" $t $(ERL) -pa $(APP)/ebin/ -eval " \ ok = application:load($(APP)), \ {ok, [$(APP_)_one_dtl, $(APP)_two_dtl]} = application:get_key($(APP), modules), \ halt()" + +erlydtl-full-path: build clean-erlydtl-full-path + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Add ErlyDTL to the list of dependencies; set DTL_FULL_PATH" + $t perl -ni.bak -e 'print;if ($$.==1) {print "DEPS = erlydtl\nDTL_FULL_PATH = 1\n"}' $(APP)/Makefile + + $i "Generate ErlyDTL templates" + $t mkdir -p $(APP)/templates/deep/ + $t touch $(APP)/templates/$(APP)_one.dtl + $t touch $(APP)/templates/deep/$(APP)_two.dtl + + $i "Build the application" + $t $(MAKE) -C $(APP) $v + + $i "Check that ErlyDTL templates are compiled" + $t test -f $(APP)/ebin/$(APP)_one_dtl.beam + $t test -f $(APP)/ebin/deep_$(APP)_two_dtl.beam + + $i "Check that ErlyDTL generated modules are included in .app file" + $t $(ERL) -pa $(APP)/ebin/ -eval " \ + ok = application:load($(APP)), \ + {ok, [deep_$(APP)_two_dtl, $(APP_)_one_dtl]} = application:get_key($(APP), modules), \ + halt()" |