diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl index a476790..760111f 100644 --- a/src/rebar_erlc_compiler.erl +++ b/src/rebar_erlc_compiler.erl @@ -41,13 +41,13 @@ -spec compile(Config::#config{}, AppFile::string()) -> 'ok'. compile(Config, _AppFile) -> rebar_base_compiler:run(Config, - rebar_config:get_list(Config, xrl_yrl_first_files, []), + rebar_config:get_list(Config, xrl_first_files, []), "src", ".xrl", "src", ".erl", - fun compile_xrl_yrl/3), + fun compile_xrl/3), rebar_base_compiler:run(Config, - rebar_config:get_list(Config, xrl_yrl_first_files, []), + rebar_config:get_list(Config, yrl_first_files, []), "src", ".yrl", "src", ".erl", - fun compile_xrl_yrl/3), + fun compile_yrl/3), doterl_compile(Config, "ebin"), rebar_base_compiler:run(Config, rebar_config:get_list(Config, mib_first_files, []), "mibs", ".mib", "priv/mibs", ".bin", @@ -211,12 +211,24 @@ compile_mib(Source, Target, Config) -> ?FAIL end. --spec compile_xrl_yrl(Source::string(), Target::string(), Config::#config{}) -> 'ok'. -compile_xrl_yrl(Source, Target, Config) -> - case xrl_yrl_needs_compile(Source, Target) of +-spec compile_xrl(Source::string(), Target::string(), Config::#config{}) -> 'ok'. +compile_xrl(Source, Target, Config) -> + Opts = [{scannerfile, Target}, {return, true} + |rebar_config:get(Config, xrl_opts, [])], + compile_xrl_yrl(Source, Target, Config, Opts, leex). + +-spec compile_yrl(Source::string(), Target::string(), Config::#config{}) -> 'ok'. +compile_yrl(Source, Target, Config) -> + Opts = [{parserfile, Target}, {return, true} + |rebar_config:get(Config, yrl_opts, [])], + compile_xrl_yrl(Source, Target, Config, Opts, yecc). + +-spec compile_xrl_yrl(Source::string(), Target::string(), Config::#config{}, + Opts::list(), Mod::atom()) -> 'ok'. +compile_xrl_yrl(Source, Target, Config, Opts, Mod) -> + case needs_compile(Source, Target, []) of true -> - {match, [Ext]} = re:run(Source, "[x|y]rl$", [{capture, first, list}]), - case compile_xrl_yrl1(Source, Target, Config, Ext) of + case Mod:file(Source, Opts) of {ok, _, []} -> ok; {ok, _, _Warnings} -> @@ -233,19 +245,6 @@ compile_xrl_yrl(Source, Target, Config) -> skipped end. -compile_xrl_yrl1(Source, Target, Config, "yrl") -> - Opts = [{parserfile, Target}, {return, true} - |rebar_config:get(Config, yrl_opts, [])], - yecc:file(Source, Opts); -compile_xrl_yrl1(Source, Target, Config, "xrl") -> - Opts = [{scannerfile, Target}, {return, true} - |rebar_config:get(Config, xrl_opts, [])], - leex:file(Source, Opts). - --spec xrl_yrl_needs_compile(Source::string(), Target::string()) -> boolean(). -xrl_yrl_needs_compile(Source, Target) -> - filelib:last_modified(Target) < filelib:last_modified(Source). - gather_src([], Srcs) -> Srcs; gather_src([Dir|Rest], Srcs) ->