diff options
author | Loïc Hoguin <[email protected]> | 2015-01-08 13:40:43 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2015-01-08 13:40:43 +0100 |
commit | abb11f81f5e23ebda3334f1a8669aa9097a3895d (patch) | |
tree | 101774c96c0c89cf0782d7403a978e1ae7a9f89f | |
parent | 2a6499a167354f2a1259b28b2c3105f08db977d1 (diff) | |
download | erlang.mk-abb11f81f5e23ebda3334f1a8669aa9097a3895d.tar.gz erlang.mk-abb11f81f5e23ebda3334f1a8669aa9097a3895d.tar.bz2 erlang.mk-abb11f81f5e23ebda3334f1a8669aa9097a3895d.zip |
Speed up "erl" invocations
Use "+A0 -noinput -boot start_clean" as start argument.
Use halt/{1,2} to shutdown the VM faster.
-rw-r--r-- | core/core.mk | 6 | ||||
-rw-r--r-- | erlang.mk | 30 | ||||
-rw-r--r-- | plugins/c_src.mk | 4 | ||||
-rw-r--r-- | plugins/edoc.mk | 3 | ||||
-rw-r--r-- | plugins/erlydtl.mk | 4 | ||||
-rw-r--r-- | plugins/escript.mk | 8 | ||||
-rw-r--r-- | plugins/eunit.mk | 5 |
7 files changed, 34 insertions, 26 deletions
diff --git a/core/core.mk b/core/core.mk index a5fbffd..848c8e1 100644 --- a/core/core.mk +++ b/core/core.mk @@ -28,6 +28,10 @@ V ?= 0 gen_verbose_0 = @echo " GEN " $@; gen_verbose = $(gen_verbose_$(V)) +# "erl" command. + +ERL = erl +A0 -noinput -boot start_clean + # Core targets. ifneq ($(words $(MAKECMDGOALS)),1) @@ -76,7 +80,7 @@ define core_http_get endef else define core_http_get - erl -noshell -eval 'ssl:start(), inets:start(), case httpc:request(get, {"$(2)", []}, [{autoredirect, true}], []) of {ok, {{_, 200, _}, _, Body}} -> case file:write_file("$(1)", Body) of ok -> ok; {error, R1} -> halt(R1) end; {error, R2} -> halt(R2) end, halt(0).' + $(ERL) -eval 'ssl:start(), inets:start(), case httpc:request(get, {"$(2)", []}, [{autoredirect, true}], []) of {ok, {{_, 200, _}, _, Body}} -> case file:write_file("$(1)", Body) of ok -> ok; {error, R1} -> halt(R1) end; {error, R2} -> halt(R2) end, halt(0).' endef endif @@ -28,6 +28,10 @@ V ?= 0 gen_verbose_0 = @echo " GEN " $@; gen_verbose = $(gen_verbose_$(V)) +# "erl" command. + +ERL = erl +A0 -noinput -boot start_clean + # Core targets. ifneq ($(words $(MAKECMDGOALS)),1) @@ -76,7 +80,7 @@ define core_http_get endef else define core_http_get - erl -noshell -eval 'ssl:start(), inets:start(), case httpc:request(get, {"$(2)", []}, [{autoredirect, true}], []) of {ok, {{_, 200, _}, _, Body}} -> case file:write_file("$(1)", Body) of ok -> ok; {error, R1} -> halt(R1) end; {error, R2} -> halt(R2) end, halt(0).' + $(ERL) -eval 'ssl:start(), inets:start(), case httpc:request(get, {"$(2)", []}, [{autoredirect, true}], []) of {ok, {{_, 200, _}, _, Body}} -> case file:write_file("$(1)", Body) of ok -> ok; {error, R1} -> halt(R1) end; {error, R2} -> halt(R2) end, halt(0).' endef endif @@ -718,7 +722,7 @@ $(C_SRC_OUTPUT): $(OBJECTS) $(COMPILE_CPP) $(OUTPUT_OPTION) $< $(C_SRC_ENV): - @erl -noshell -noinput -eval "file:write_file(\"$(C_SRC_ENV)\", \ + @$(ERL) -eval "file:write_file(\"$(C_SRC_ENV)\", \ io_lib:format( \ \"ERTS_INCLUDE_DIR ?= ~s/erts-~s/include/~n\" \ \"ERL_INTERFACE_INCLUDE_DIR ?= ~s~n\" \ @@ -726,7 +730,7 @@ $(C_SRC_ENV): [code:root_dir(), erlang:system_info(version), \ code:lib_dir(erl_interface, include), \ code:lib_dir(erl_interface, lib)])), \ - erlang:halt()." + halt()." clean:: clean-c_src @@ -873,8 +877,7 @@ EDOC_OPTS ?= # Core targets. docs:: distclean-edoc - $(gen_verbose) erl -noshell \ - -eval 'edoc:application($(PROJECT), ".", [$(EDOC_OPTS)]), init:stop().' + $(gen_verbose) $(ERL) -eval 'edoc:application($(PROJECT), ".", [$(EDOC_OPTS)]), halt().' distclean:: distclean-edoc @@ -940,7 +943,7 @@ dtl_verbose = $(dtl_verbose_$(V)) # Core targets. define compile_erlydtl - $(dtl_verbose) erl -noshell -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/ -eval ' \ + $(dtl_verbose) $(ERL) -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/ -eval ' \ Compile = fun(F) -> \ S = fun (1) -> re:replace(filename:rootname(string:sub_string(F, 11), ".dtl"), "/", "_", [{return, list}, global]); \ (0) -> filename:basename(F, ".dtl") \ @@ -949,7 +952,7 @@ define compile_erlydtl {ok, _} = erlydtl:compile(F, Module, [{out_dir, "ebin/"}, return_errors, {doc_root, "templates"}]) \ end, \ _ = [Compile(F) || F <- string:tokens("$(1)", " ")], \ - init:stop()' + halt().' endef ifneq ($(wildcard src/),) @@ -970,7 +973,6 @@ ESCRIPT_COMMENT ?= This is an -*- erlang -*- file ESCRIPT_BEAMS ?= "ebin/*", "deps/*/ebin/*" ESCRIPT_SYS_CONFIG ?= "rel/sys.config" ESCRIPT_EMU_ARGS ?= -pa . \ - -noshell -noinput \ -sasl errlog_type error \ -escript main $(ESCRIPT_NAME) ESCRIPT_SHEBANG ?= /usr/bin/env escript @@ -992,6 +994,7 @@ help:: # Modified MIT License, https://github.com/synrc/mad/blob/master/LICENSE : # Software may only be used for the great good and the true happiness of all # sentient beings. + define ESCRIPT_RAW 'Read = fun(F) -> {ok, B} = file:read_file(filename:absname(F)), B end,'\ 'Files = fun(L) -> A = lists:concat([filelib:wildcard(X)||X<- L ]),'\ @@ -1010,12 +1013,14 @@ define ESCRIPT_RAW ' ]),'\ ' file:change_mode(Escript, 8#755)'\ 'end,'\ -'Ez("$(ESCRIPT_NAME)").' +'Ez("$(ESCRIPT_NAME)"),'\ +'halt().' endef + ESCRIPT_COMMAND = $(subst ' ',,$(ESCRIPT_RAW)) escript:: distclean-escript deps app - $(gen_verbose) erl -noshell -eval $(ESCRIPT_COMMAND) -s init stop + $(gen_verbose) $(ERL) -eval $(ESCRIPT_COMMAND) distclean-escript: $(gen_verbose) rm -f $(ESCRIPT_NAME) @@ -1063,12 +1068,11 @@ clean:: clean-eunit # Plugin-specific targets. -EUNIT_RUN = erl \ +EUNIT_RUN = $(ERL) \ -no_auto_compile \ - -noshell \ -pa $(realpath $(EUNIT_DIR)) $(DEPS_DIR)/*/ebin \ -pz $(realpath ebin) \ - -eval 'case eunit:test([$(call str-join,$(TAGGED_EUNIT_TESTS))], [$(EUNIT_OPTS)]) of ok -> erlang:halt(0); error -> erlang:halt(1) end.' + -eval 'case eunit:test([$(call str-join,$(TAGGED_EUNIT_TESTS))], [$(EUNIT_OPTS)]) of ok -> halt(0); error -> halt(1) end.' help-eunit: @printf "%s\n" "" \ diff --git a/plugins/c_src.mk b/plugins/c_src.mk index 7c1fd2e..13d2f62 100644 --- a/plugins/c_src.mk +++ b/plugins/c_src.mk @@ -81,7 +81,7 @@ $(C_SRC_OUTPUT): $(OBJECTS) $(COMPILE_CPP) $(OUTPUT_OPTION) $< $(C_SRC_ENV): - @erl -noshell -noinput -eval "file:write_file(\"$(C_SRC_ENV)\", \ + @$(ERL) -eval "file:write_file(\"$(C_SRC_ENV)\", \ io_lib:format( \ \"ERTS_INCLUDE_DIR ?= ~s/erts-~s/include/~n\" \ \"ERL_INTERFACE_INCLUDE_DIR ?= ~s~n\" \ @@ -89,7 +89,7 @@ $(C_SRC_ENV): [code:root_dir(), erlang:system_info(version), \ code:lib_dir(erl_interface, include), \ code:lib_dir(erl_interface, lib)])), \ - erlang:halt()." + halt()." clean:: clean-c_src diff --git a/plugins/edoc.mk b/plugins/edoc.mk index 5249d08..3f94c43 100644 --- a/plugins/edoc.mk +++ b/plugins/edoc.mk @@ -10,8 +10,7 @@ EDOC_OPTS ?= # Core targets. docs:: distclean-edoc - $(gen_verbose) erl -noshell \ - -eval 'edoc:application($(PROJECT), ".", [$(EDOC_OPTS)]), init:stop().' + $(gen_verbose) $(ERL) -eval 'edoc:application($(PROJECT), ".", [$(EDOC_OPTS)]), halt().' distclean:: distclean-edoc diff --git a/plugins/erlydtl.mk b/plugins/erlydtl.mk index 8d8795f..ffebb33 100644 --- a/plugins/erlydtl.mk +++ b/plugins/erlydtl.mk @@ -13,7 +13,7 @@ dtl_verbose = $(dtl_verbose_$(V)) # Core targets. define compile_erlydtl - $(dtl_verbose) erl -noshell -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/ -eval ' \ + $(dtl_verbose) $(ERL) -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/ -eval ' \ Compile = fun(F) -> \ S = fun (1) -> re:replace(filename:rootname(string:sub_string(F, 11), ".dtl"), "/", "_", [{return, list}, global]); \ (0) -> filename:basename(F, ".dtl") \ @@ -22,7 +22,7 @@ define compile_erlydtl {ok, _} = erlydtl:compile(F, Module, [{out_dir, "ebin/"}, return_errors, {doc_root, "templates"}]) \ end, \ _ = [Compile(F) || F <- string:tokens("$(1)", " ")], \ - init:stop()' + halt().' endef ifneq ($(wildcard src/),) diff --git a/plugins/escript.mk b/plugins/escript.mk index 5a6a0dd..534db61 100644 --- a/plugins/escript.mk +++ b/plugins/escript.mk @@ -11,7 +11,6 @@ ESCRIPT_COMMENT ?= This is an -*- erlang -*- file ESCRIPT_BEAMS ?= "ebin/*", "deps/*/ebin/*" ESCRIPT_SYS_CONFIG ?= "rel/sys.config" ESCRIPT_EMU_ARGS ?= -pa . \ - -noshell -noinput \ -sasl errlog_type error \ -escript main $(ESCRIPT_NAME) ESCRIPT_SHEBANG ?= /usr/bin/env escript @@ -33,6 +32,7 @@ help:: # Modified MIT License, https://github.com/synrc/mad/blob/master/LICENSE : # Software may only be used for the great good and the true happiness of all # sentient beings. + define ESCRIPT_RAW 'Read = fun(F) -> {ok, B} = file:read_file(filename:absname(F)), B end,'\ 'Files = fun(L) -> A = lists:concat([filelib:wildcard(X)||X<- L ]),'\ @@ -51,12 +51,14 @@ define ESCRIPT_RAW ' ]),'\ ' file:change_mode(Escript, 8#755)'\ 'end,'\ -'Ez("$(ESCRIPT_NAME)").' +'Ez("$(ESCRIPT_NAME)"),'\ +'halt().' endef + ESCRIPT_COMMAND = $(subst ' ',,$(ESCRIPT_RAW)) escript:: distclean-escript deps app - $(gen_verbose) erl -noshell -eval $(ESCRIPT_COMMAND) -s init stop + $(gen_verbose) $(ERL) -eval $(ESCRIPT_COMMAND) distclean-escript: $(gen_verbose) rm -f $(ESCRIPT_NAME) diff --git a/plugins/eunit.mk b/plugins/eunit.mk index 75aab0c..1b83a0f 100644 --- a/plugins/eunit.mk +++ b/plugins/eunit.mk @@ -41,12 +41,11 @@ clean:: clean-eunit # Plugin-specific targets. -EUNIT_RUN = erl \ +EUNIT_RUN = $(ERL) \ -no_auto_compile \ - -noshell \ -pa $(realpath $(EUNIT_DIR)) $(DEPS_DIR)/*/ebin \ -pz $(realpath ebin) \ - -eval 'case eunit:test([$(call str-join,$(TAGGED_EUNIT_TESTS))], [$(EUNIT_OPTS)]) of ok -> erlang:halt(0); error -> erlang:halt(1) end.' + -eval 'case eunit:test([$(call str-join,$(TAGGED_EUNIT_TESTS))], [$(EUNIT_OPTS)]) of ok -> halt(0); error -> halt(1) end.' help-eunit: @printf "%s\n" "" \ |