|
@@ -188,7 +188,12 @@ define makedep.erl
|
|
|
(F, Mod, include_lib, "$1/include/" ++ Hrl) -> AddHd(F, Mod, "include/" ++ Hrl);
|
|
|
(F, Mod, include_lib, Hrl) -> AddHd(F, Mod, "include/" ++ Hrl);
|
|
|
(F, Mod, import, {Imp, _}) ->
|
|
|
- case filelib:is_file("src/" ++ atom_to_list(Imp) ++ ".erl") of
|
|
|
+ IsFile =
|
|
|
+ case lists:keyfind(Imp, 1, Modules) of
|
|
|
+ false -> false;
|
|
|
+ {_, FilePath} -> filelib:is_file(FilePath)
|
|
|
+ end,
|
|
|
+ case IsFile of
|
|
|
false -> ok;
|
|
|
true -> Add(Mod, Imp)
|
|
|
end;
|
|
@@ -212,9 +217,17 @@ define makedep.erl
|
|
|
end || F <- ErlFiles],
|
|
|
Depend = sofs:to_external(sofs:relation_to_family(sofs:relation(ets:tab2list(E)))),
|
|
|
CompileFirst = [X || X <- lists:reverse(digraph_utils:topsort(G)), [] =/= digraph:in_neighbours(G, X)],
|
|
|
+ TargetPath = fun(Target) ->
|
|
|
+ case lists:keyfind(Target, 1, Modules) of
|
|
|
+ false -> "";
|
|
|
+ {_, DepFile} ->
|
|
|
+ DirSubname = tl(string:tokens(filename:dirname(DepFile), "/")),
|
|
|
+ string:join(DirSubname ++ [atom_to_list(Target)], "/")
|
|
|
+ end
|
|
|
+ end,
|
|
|
ok = file:write_file("$(1)", [
|
|
|
[[F, "::", [[" ", D] || D <- Deps], "; @touch \$$@\n"] || {F, Deps} <- Depend],
|
|
|
- "\nCOMPILE_FIRST +=", [[" ", atom_to_list(CF)] || CF <- CompileFirst], "\n"
|
|
|
+ "\nCOMPILE_FIRST +=", [[" ", TargetPath(CF)] || CF <- CompileFirst], "\n"
|
|
|
]),
|
|
|
halt()
|
|
|
endef
|