diff options
author | Siri Hansen <[email protected]> | 2017-07-03 17:51:03 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2017-07-03 17:51:03 +0200 |
commit | c5a6e3d99144c94ef557da5787c76f12737044d9 (patch) | |
tree | 88692263714be5013829496eb0fd79e9a359c037 /lib/tools/src | |
parent | 08d48990d9669d8123366a218f31697169390a27 (diff) | |
parent | 3defef54fba953cb4ab5298dacc15af9c9bd25ec (diff) | |
download | otp-c5a6e3d99144c94ef557da5787c76f12737044d9.tar.gz otp-c5a6e3d99144c94ef557da5787c76f12737044d9.tar.bz2 otp-c5a6e3d99144c94ef557da5787c76f12737044d9.zip |
Merge branch 'siri/make/default-outdir/ERL-438/OTP-14489' into maint
* siri/make/default-outdir/ERL-438/OTP-14489:
[ct_make] Do not use the interactive tool 'c' from ct_make
Use current dir as default outdir for c:c/1,2
[make] Do not use the interactive tool 'c' from make
Diffstat (limited to 'lib/tools/src')
-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 |