소스 검색

ft: 优化

master
lijie 3 년 전
부모
커밋
4932c63bc0
1개의 변경된 파일31개의 추가작업 그리고 12개의 파일을 삭제
  1. +31
    -12
      src/eMake.erl

+ 31
- 12
src/eMake.erl 파일 보기

@ -34,7 +34,10 @@ main(Args) ->
end.
eMakeFile() ->
filename:join(code:root_dir(), ".eMake.log").
{ok, CurDir} = file:get_cwd(),
Md5 = erlang:md5(CurDir),
Hex = [(io_lib:format("~2.36.0B", [X])) || <<X:8>> <= Md5],
filename:join(code:root_dir(), [".eMake/" | Hex]).
readEMake() ->
try {ok, [LastTime]} = file:consult(eMakeFile()), LastTime of
@ -45,7 +48,10 @@ readEMake() ->
end.
saveEMake(NowTime) ->
try file:write_file(eMakeFile(), <<(integer_to_binary(NowTime))/binary, ".">>)
try
FileName = eMakeFile(),
filelib:ensure_dir(FileName),
file:write_file(FileName, <<(integer_to_binary(NowTime))/binary, ".">>)
catch _:_ ->
ok
end.
@ -57,15 +63,15 @@ all(WorkerCnt, EMakeFile, Opts) ->
{ok, Files} ->
forMake(Files, WorkerCnt, lists:member(noexec, MakeOpts), load_opt(MakeOpts), []),
EndTime = erlang:system_time(second),
% LastTime = readEMake(),
% case LastTime /= 0 andalso StartTime < LastTime of
% true ->
% %% StartTime < LastTime
% put(compile_all, 1);
% _ ->
% ignore
% end,
% saveEMake(EndTime),
LastTime = readEMake(),
case LastTime /= 0 andalso StartTime < LastTime of
true ->
%% StartTime < LastTime
put(compile_all, 1);
_ ->
ignore
end,
saveEMake(EndTime),
io:format("compile over all is ok use time:~ps", [EndTime - StartTime]);
_Err ->
_Err
@ -132,16 +138,29 @@ transform([{Mod, ModOpts} | EMake], Opts, Files) ->
[] ->
transform(EMake, Opts, Files);
Mods ->
transform(EMake, Opts, [{Mods, Opts ++ ModOpts} | Files])
NewOpts = Opts ++ ModOpts,
ensure_dir(NewOpts),
transform(EMake, Opts, [{Mods, NewOpts} | Files])
end;
transform([Mod | EMake], Opts, Files) ->
case expand(Mod) of
[] ->
transform(EMake, Opts, Files);
Mods ->
ensure_dir(Opts),
transform(EMake, Opts, [{Mods, Opts} | Files])
end.
ensure_dir(Opts) ->
case lists:keysearch(outdir, 1, Opts) of
{value, {outdir, OutDir}} ->
BeamDir = filename:join(OutDir, "tttt.beam"),
filelib:ensure_dir(BeamDir);
_ ->
ignore
end.
expand(Mod) when is_atom(Mod) ->
expand(atom_to_list(Mod));
expand(Mods) when is_list(Mods), not is_integer(hd(Mods)) ->

불러오는 중...
취소
저장