diff options
author | Loïc Hoguin <[email protected]> | 2016-10-30 16:56:29 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2016-10-30 16:56:29 +0200 |
commit | 01efaa6764088ee0df0d1ec6e5f561707af5ebe0 (patch) | |
tree | 20dc3fb18dd84fc703e83441c588529d67103f5e /test/plugin_escript.mk | |
parent | 373122de2f3e3a6e937e527044ae3b62ba939c96 (diff) | |
download | erlang.mk-01efaa6764088ee0df0d1ec6e5f561707af5ebe0.tar.gz erlang.mk-01efaa6764088ee0df0d1ec6e5f561707af5ebe0.tar.bz2 erlang.mk-01efaa6764088ee0df0d1ec6e5f561707af5ebe0.zip |
Greatly improve the escript support
The plugin can now easily generate escripts as complex as relx
or rebar/rebar3. It generates a proper structure and allows
embedding extra files by extending the escript-zip target.
Documentation and tests have been added.
Diffstat (limited to 'test/plugin_escript.mk')
-rw-r--r-- | test/plugin_escript.mk | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/test/plugin_escript.mk b/test/plugin_escript.mk new file mode 100644 index 0000000..3916094 --- /dev/null +++ b/test/plugin_escript.mk @@ -0,0 +1,89 @@ +# Escript plugin. + +ESCRIPT_CASES = build deps extra +ESCRIPT_TARGETS = $(addprefix escript-,$(ESCRIPT_CASES)) + +.PHONY: escript $(ESCRIPT_TARGETS) + +escript: $(ESCRIPT_TARGETS) + +escript-build: build clean + + $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 "Generate a module containing a function main/1" + $t printf "%s\n" \ + "-module($(APP))." \ + "-export([main/1])." \ + 'main(_) -> io:format("good~n").' > $(APP)/src/$(APP).erl + + $i "Build the escript" + $t $(MAKE) -C $(APP) escript $v + + $i "Check that the escript exists" + $t test -f $(APP)/$(APP) + + $i "Check that the escript runs" + $t $(APP)/$(APP) | grep -q good + + $i "Distclean the application" + $t $(MAKE) -C $(APP) distclean $v + + $i "Check that the escript was removed" + $t test ! -e $(APP)/$(APP) + +escript-deps: build clean + + $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 Ranch to the list of dependencies" + $t perl -ni.bak -e 'print;if ($$.==1) {print "DEPS = ranch\n"}' $(APP)/Makefile + + $i "Generate a module containing a function main/1" + $t printf "%s\n" \ + "-module($(APP))." \ + "-export([main/1])." \ + 'main(_) -> io:format("good~n").' > $(APP)/src/$(APP).erl + + $i "Build the escript" + $t $(MAKE) -C $(APP) escript $v + + $i "Check that the escript runs" + $t $(APP)/$(APP) | grep -q good + + $i "Check that the escript contains the dependency" + $t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q ranch + +escript-extra: build clean + + $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 "Instruct Erlang.mk to add extra files to the escript" + $t printf "%s\n" \ + "escript-zip::" \ + ' $$(verbose) $$(ESCRIPT_ZIP) $$(ESCRIPT_ZIP_FILE) Makefile erlang.mk' >> $(APP)/Makefile + + $i "Generate a module containing a function main/1" + $t printf "%s\n" \ + "-module($(APP))." \ + "-export([main/1])." \ + 'main(_) -> io:format("good~n").' > $(APP)/src/$(APP).erl + + $i "Build the escript" + $t $(MAKE) -C $(APP) escript $v + + $i "Check that the escript runs" + $t $(APP)/$(APP) | grep -q good + + $i "Check that the escript contains the extra files" + $t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q Makefile + $t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q erlang.mk |