diff options
author | Erlang/OTP <[email protected]> | 2017-06-30 15:20:48 +0200 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2017-06-30 15:20:48 +0200 |
commit | 921c88d10ef1e92d30d71aea38af07d63a5c2611 (patch) | |
tree | 087d818a9a42f106c9b3a8a10196e0d50a8b708c /lib/common_test | |
parent | c73d8d9feb9b0ebc988bd44ed340988df12c53b2 (diff) | |
parent | 3defef54fba953cb4ab5298dacc15af9c9bd25ec (diff) | |
download | otp-921c88d10ef1e92d30d71aea38af07d63a5c2611.tar.gz otp-921c88d10ef1e92d30d71aea38af07d63a5c2611.tar.bz2 otp-921c88d10ef1e92d30d71aea38af07d63a5c2611.zip |
Merge branch 'siri/make/default-outdir/ERL-438/OTP-14489' into maint-20
* 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/common_test')
-rw-r--r-- | lib/common_test/src/ct_make.erl | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/lib/common_test/src/ct_make.erl b/lib/common_test/src/ct_make.erl index 4d66796b83..220cb0473d 100644 --- a/lib/common_test/src/ct_make.erl +++ b/lib/common_test/src/ct_make.erl @@ -280,15 +280,47 @@ recompile(File, NoExec, Load, Opts) -> do_recompile(_File, true, _Load, _Opts) -> out_of_date; -do_recompile(File, false, noload, Opts) -> +do_recompile(File, false, Load, Opts) -> io:format("Recompile: ~ts\n",[File]), - compile:file(File, [report_errors, report_warnings, error_summary |Opts]); -do_recompile(File, false, load, Opts) -> - io:format("Recompile: ~ts\n",[File]), - c:c(File, Opts); -do_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 |