Просмотр исходного кода

Make it compatible with {erl_opts, ...}

Sina Samavati 11 лет назад
Родитель
Сommit
6a13df887a
3 измененных файлов с 14 добавлено и 8 удалено
  1. 4 2
      src/mad.erl
  2. 1 1
      src/mad.hrl
  3. 9 5
      src/mad_compile.erl

+ 4 - 2
src/mad.erl

@@ -12,8 +12,10 @@
 main([]) ->
     io:format("no args~n");
 main(Args) ->
-    Conf = mad_utils:consult("rebar.config"),
-    Conf1 = mad_utils:script(".", Conf),
+    Cwd = mad_utils:cwd(),
+    code:add_path(mad_utils:ebin(Cwd)),
+    Conf = mad_utils:consult(mad_utils:rebar_conf_file(Cwd)),
+    Conf1 = mad_utils:script(Cwd, Conf),
     Fun = fun(F) -> F1 = list_to_atom(F), ?MODULE:F1(Conf1) end,
     lists:foreach(Fun, Args).
 

+ 1 - 1
src/mad.hrl

@@ -1,2 +1,2 @@
 -define(DEPS_PATH, filename:join([mad_utils:home(), ".otp", "deps"])).
--define(COMPILE_OPTS(Inc, Ebin), [report, {i, Inc}, {outdir, Ebin}]).
+-define(COMPILE_OPTS(Inc, Ebin), [{i, Inc}, {outdir, Ebin}]).

+ 9 - 5
src/mad_compile.erl

@@ -50,14 +50,17 @@ dep(DepName) ->
         [] ->
             ok;
         Files ->
-            EbinDir = mad_utils:ebin(DepPath),
             IncDir = mad_utils:include(DepPath),
+            EbinDir = mad_utils:ebin(DepPath),
+            Opts = mad_utils:get_value(erl_opts, Conf1, []),
             mad_utils:exec("mkdir", ["-p", EbinDir]),
-            lists:foreach(compile_fun(SrcDir, EbinDir, IncDir), Files),
+            lists:foreach(compile_fun(SrcDir, IncDir, EbinDir, Opts), Files),
             put(DepName, compiled)
     end.
 
 app(Dir) ->
+    Conf = mad_utils:consult(mad_utils:rebar_conf_file(Dir)),
+    Conf1 = mad_utils:script(Dir, Conf),
     SrcDir = mad_utils:src(Dir),
     Files = erl_files(SrcDir) ++ app_src_files(SrcDir),
     case Files of
@@ -66,18 +69,19 @@ app(Dir) ->
         Files ->
             IncDir = mad_utils:include(Dir),
             EbinDir = mad_utils:ebin(Dir),
+            Opts = mad_utils:get_value(erl_opts, Conf1, []),
             mad_utils:exec("mkdir", ["-p", EbinDir]),
-            lists:foreach(compile_fun(SrcDir, EbinDir, IncDir), Files),
+            lists:foreach(compile_fun(SrcDir, IncDir, EbinDir, Opts), Files),
             code:add_path(EbinDir)
     end.
 
-compile_fun(SrcDir, EbinDir, IncDir) ->
+compile_fun(SrcDir, IncDir, EbinDir, Opts) ->
     fun(F) ->
             F1 = filename:join(SrcDir, F),
             case is_app_src(F1) of
                 false ->
                     io:format("Compiling ~s~n", [F1]),
-                    compile:file(F1, ?COMPILE_OPTS(IncDir, EbinDir));
+                    compile:file(F1, ?COMPILE_OPTS(IncDir, EbinDir) ++ Opts);
                 true ->
                     AppFile = filename:join(EbinDir, app_src_to_app(F1)),
                     io:format("Writing ~s~n", [AppFile]),