From fd8794dae791c80bfe8e4ab1aa3a9c97370695a9 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Wed, 25 Nov 2009 21:00:22 -0700 Subject: Renaming compiler module --HG-- rename : src/rebar_doterl_compiler.erl => src/rebar_erlc_compiler.erl --- src/rebar_doterl_compiler.erl | 108 ------------------------------------------ src/rebar_erlc_compiler.erl | 108 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 108 deletions(-) delete mode 100644 src/rebar_doterl_compiler.erl create mode 100644 src/rebar_erlc_compiler.erl (limited to 'src') diff --git a/src/rebar_doterl_compiler.erl b/src/rebar_doterl_compiler.erl deleted file mode 100644 index 60baa59..0000000 --- a/src/rebar_doterl_compiler.erl +++ /dev/null @@ -1,108 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% rebar: Erlang Build Tools -%% -%% Copyright (c) 2009 Dave Smith (dizzyd@dizzyd.com) -%% -%% Permission is hereby granted, free of charge, to any person obtaining a copy -%% of this software and associated documentation files (the "Software"), to deal -%% in the Software without restriction, including without limitation the rights -%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -%% copies of the Software, and to permit persons to whom the Software is -%% furnished to do so, subject to the following conditions: -%% -%% The above copyright notice and this permission notice shall be included in -%% all copies or substantial portions of the Software. -%% -%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -%% THE SOFTWARE. -%% ------------------------------------------------------------------- --module(rebar_doterl_compiler). - --export([compile/2, - clean/2]). - --include("rebar.hrl"). - -%% =================================================================== -%% Public API -%% =================================================================== - -compile(Config, Dir) -> - do_compile(Config, "src/*.erl", "ebin", ".erl", ".beam", - fun compile_erl/2), - do_compile(Config, "mibs/*.mib", "priv/mibs", ".mib", ".bin", - fun compile_mib/2). - -clean(Config, Dir) -> - %% TODO: This would be more portable if it used Erlang to traverse - %% the dir structure and delete each file; however it would also - %% much slower. - [] = os:cmd("rm -f ebin/*.beam priv/mibs/*.bin"), - ok. - - - -%% =================================================================== -%% Internal functions -%% =================================================================== - -do_compile(Config, SrcWildcard, OutDir, InExt, OutExt, CompileFn) -> - case filelib:wildcard(SrcWildcard) of - [] -> - ok; - Srcs when is_list(Srcs) -> - %% Build list of output files - Targets = [target_file(S, OutDir, InExt, OutExt) || S <- Srcs], - Files = lists:zip(Targets, Srcs), - - %% Make sure target directory exists - ok = filelib:ensure_dir(hd(Targets)), - - %% Start compiling - compile_each(Files, Config, CompileFn) - end. - - -compile_each([], _Config, _CompileFn) -> - ok; -compile_each([{Target, Src} | Rest], Config, CompileFn) -> - case needs_compile(Target, Src) of - true -> - ?CONSOLE("Compiling ~s\n", [Src]), - CompileFn(Src, Config); - false -> - ok - end, - compile_each(Rest, Config, CompileFn). - -needs_compile(Target, Src) -> - filelib:last_modified(Target) < filelib:last_modified(Src). - - -target_file(F, TargetDir, InExt, OutExt) -> - filename:join([TargetDir, filename:basename(F, InExt) ++ OutExt]). - - -compile_erl(Source, Config) -> - Opts = rebar_config:get_list(Config, erlc_opts, []), - case compile:file(Source, [{i, "include"}, {outdir, "ebin"}, report] ++ Opts) of - {ok, _} -> - ok; - error -> - ?FAIL - end. - -compile_mib(Source, Config) -> - Opts = rebar_config:get_list(Config, mibc_opts, []), - case snmpc:compile(Source, [{outdir, "priv/mibs"}, {i, ["priv/mibs"]}] ++ Opts) of - {ok, _} -> - ok; - {error, compilation_failed} -> - ?FAIL - end. diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl new file mode 100644 index 0000000..1c157f6 --- /dev/null +++ b/src/rebar_erlc_compiler.erl @@ -0,0 +1,108 @@ +%% ------------------------------------------------------------------- +%% +%% rebar: Erlang Build Tools +%% +%% Copyright (c) 2009 Dave Smith (dizzyd@dizzyd.com) +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the "Software"), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in +%% all copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +%% THE SOFTWARE. +%% ------------------------------------------------------------------- +-module(rebar_erlc_compiler). + +-export([compile/2, + clean/2]). + +-include("rebar.hrl"). + +%% =================================================================== +%% Public API +%% =================================================================== + +compile(Config, Dir) -> + do_compile(Config, "src/*.erl", "ebin", ".erl", ".beam", + fun compile_erl/2), + do_compile(Config, "mibs/*.mib", "priv/mibs", ".mib", ".bin", + fun compile_mib/2). + +clean(Config, Dir) -> + %% TODO: This would be more portable if it used Erlang to traverse + %% the dir structure and delete each file; however it would also + %% much slower. + [] = os:cmd("rm -f ebin/*.beam priv/mibs/*.bin"), + ok. + + + +%% =================================================================== +%% Internal functions +%% =================================================================== + +do_compile(Config, SrcWildcard, OutDir, InExt, OutExt, CompileFn) -> + case filelib:wildcard(SrcWildcard) of + [] -> + ok; + Srcs when is_list(Srcs) -> + %% Build list of output files + Targets = [target_file(S, OutDir, InExt, OutExt) || S <- Srcs], + Files = lists:zip(Targets, Srcs), + + %% Make sure target directory exists + ok = filelib:ensure_dir(hd(Targets)), + + %% Start compiling + compile_each(Files, Config, CompileFn) + end. + + +compile_each([], _Config, _CompileFn) -> + ok; +compile_each([{Target, Src} | Rest], Config, CompileFn) -> + case needs_compile(Target, Src) of + true -> + ?CONSOLE("Compiling ~s\n", [Src]), + CompileFn(Src, Config); + false -> + ok + end, + compile_each(Rest, Config, CompileFn). + +needs_compile(Target, Src) -> + filelib:last_modified(Target) < filelib:last_modified(Src). + + +target_file(F, TargetDir, InExt, OutExt) -> + filename:join([TargetDir, filename:basename(F, InExt) ++ OutExt]). + + +compile_erl(Source, Config) -> + Opts = rebar_config:get_list(Config, erlc_opts, []), + case compile:file(Source, [{i, "include"}, {outdir, "ebin"}, report] ++ Opts) of + {ok, _} -> + ok; + error -> + ?FAIL + end. + +compile_mib(Source, Config) -> + Opts = rebar_config:get_list(Config, mibc_opts, []), + case snmpc:compile(Source, [{outdir, "priv/mibs"}, {i, ["priv/mibs"]}] ++ Opts) of + {ok, _} -> + ok; + {error, compilation_failed} -> + ?FAIL + end. -- cgit v1.1