diff options
author | Siri Hansen <[email protected]> | 2017-06-28 17:40:08 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2017-06-29 15:19:18 +0200 |
commit | 15cfdd3c010d47b9c3ec6f7f59f738bb734b052b (patch) | |
tree | 97f1979b94a7a3a32bc6ea9fb38d8417b777e0b0 /lib/tools/src/make.erl | |
parent | 040bdce67f88d833bfb59adae130a4ffb4c180f0 (diff) | |
download | otp-15cfdd3c010d47b9c3ec6f7f59f738bb734b052b.tar.gz otp-15cfdd3c010d47b9c3ec6f7f59f738bb734b052b.tar.bz2 otp-15cfdd3c010d47b9c3ec6f7f59f738bb734b052b.zip |
[make] Do not use the interactive tool 'c' from make
Diffstat (limited to 'lib/tools/src/make.erl')
-rw-r--r-- | lib/tools/src/make.erl | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/lib/tools/src/make.erl b/lib/tools/src/make.erl index ce30156db6..6554d338af 100644 --- a/lib/tools/src/make.erl +++ b/lib/tools/src/make.erl @@ -267,15 +267,47 @@ include_opt([]) -> recompile(File, true, _Load, _Opts) -> io:format("Out of date: ~ts\n",[File]); -recompile(File, false, noload, Opts) -> +recompile(File, false, Load, Opts) -> io:format("Recompile: ~ts\n",[File]), - compile:file(File, [report_errors, report_warnings, error_summary |Opts]); -recompile(File, false, load, Opts) -> - io:format("Recompile: ~ts\n",[File]), - c:c(File, Opts); -recompile(File, false, netload, Opts) -> - io:format("Recompile: ~ts\n",[File]), - c:nc(File, Opts). + case compile:file(File, [report_errors, report_warnings |Opts]) of + Ok when is_tuple(Ok), element(1,Ok)==ok -> + maybe_load(element(2,Ok), Load, Opts); + _Error -> + error + end. + +maybe_load(_Mod, noload, _Opts) -> + ok; +maybe_load(Mod, Load, Opts) -> + %% We have compiled File with options Opts. Find out where the + %% output file went to, and load it. + case compile:output_generated(Opts) of + true -> + Dir = proplists:get_value(outdir,Opts,"."), + do_load(Dir, Mod, Load); + false -> + io:format("** Warning: No object file created - nothing loaded **~n"), + ok + end. + +do_load(Dir, Mod, load) -> + code:purge(Mod), + case code:load_abs(filename:join(Dir, Mod),Mod) of + {module,Mod} -> + {ok,Mod}; + Other -> + Other + end; +do_load(Dir, Mod, netload) -> + Obj = atom_to_list(Mod) ++ code:objfile_extension(), + Fname = filename:join(Dir, Obj), + case file:read_file(Fname) of + {ok,Bin} -> + rpc:eval_everywhere(code,load_binary,[Mod,Fname,Bin]), + {ok,Mod}; + Other -> + Other + end. exists(File) -> case file:read_file_info(File) of |