From 686ed6af6b4177dc76ea1f33be42040942cd5ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Tue, 1 Sep 1998 13:23:59 -0700 Subject: [PATCH] bugfixes and some minor new features Rev: NT/init_nt:1.13 Rev: NT/tools/lib.pike:1.4 Rev: NT/tools/rntcc:1.17 --- .gitattributes | 1 + NT/init_nt | 2 ++ NT/tools/lib.pike | 3 ++- NT/tools/rntcc | 59 ++++++++++++++++++++++++++++++++++++----------- 4 files changed, 50 insertions(+), 15 deletions(-) diff --git a/.gitattributes b/.gitattributes index 61f1c9fffc..eb36040b94 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,6 +5,7 @@ *.gz binary *.ppm binary *.rs binary +init_nt -text -crlf lib -text -crlf testfont binary diff --git a/NT/init_nt b/NT/init_nt index 2e1c4998f0..c247bd85cf 100755 --- a/NT/init_nt +++ b/NT/init_nt @@ -32,6 +32,8 @@ else MNTREPLACE="s@$NTMOUNT@@g " fi +IFS=' + ' export NTHOST NTDRIVE NTCC CC PATH NTTOOLS MNTREPLACE MNTREPLACE NTPORT USE_SPRSH diff --git a/NT/tools/lib.pike b/NT/tools/lib.pike index cab4d86a71..fa8bc90162 100644 --- a/NT/tools/lib.pike +++ b/NT/tools/lib.pike @@ -60,6 +60,7 @@ int silent_do_cmd(string *cmd, mixed|void filter, int|void silent) sscanf(f->read(4),"%4c",int len); if(!len) break; s=f->read(len); + s=replace(s,"\r\n","\n"); if(!silent) write(s); ret+=s; } @@ -123,7 +124,7 @@ string find_next_in_path(string argv0,string cmd) { if(argv0) { - if(argv0==s) + if(argv0==fname) argv0=0; }else{ return fname; diff --git a/NT/tools/rntcc b/NT/tools/rntcc index 3e55f63e6c..3e89ca0241 100755 --- a/NT/tools/rntcc +++ b/NT/tools/rntcc @@ -11,6 +11,15 @@ inherit "lib.pike"; int verbose=1; +// Temporary variable +int linking_failed; + +string get_ext(string file) +{ + sscanf(file=lower_case(reverse(file)),"%s.",file); + return reverse(file); +} + int compile(string *sources, string dest, string errorfile, @@ -28,13 +37,21 @@ int compile(string *sources, dest=fixpath(dest); sources=Array.map(sources,fixpath); - if(lower_case(sources[0][strlen(sources[0])-3..])==".s") + switch(get_ext(sources[0])) { - cmd=({ "wasm", "-fe"+errorfile, "-fo"+dest,})+ sources; - }else{ - cmd=({ "wcc386" }) + cflags + ({"-fr"+errorfile, "-fo"+dest}) + sources; - } + case "c": + cmd=({ "wcc386" }) + cflags + ({"-fr"+errorfile, "-fo"+dest}) + sources; + break; + + case "cpp": + case "cc": + cmd=({ "wpp386" }) + cflags + ({"-fr"+errorfile, "-fo"+dest}) + sources; + break; + case "s": + cmd=({ "wasm", "-fe"+errorfile, "-fo"+dest,})+ sources; + } + if(verbose) return do_cmd(cmd); else @@ -65,7 +82,7 @@ int main(int argc, string *argv) { string target; string operation="link"; - string *cflags=({}); + string *cflags=({"-d__WIN32__","-d_WIN32"}); string *ldopts=({"OPTION","STACK=8m"}); string *libraries=({}); string *objects=({}); @@ -196,22 +213,20 @@ int main(int argc, string *argv) argv=Getopt.get_args(argv); foreach(argv[1..], string tmp) { - string ext; if(tmp[0]=='-') { werror("Unrecognized option "+tmp+".\n"); exit(1); } - sscanf(reverse(tmp),"%s.",ext); // Recognize which files need to be compiled - switch(ext) + switch(get_ext(tmp)) { - case "bil": case "o": - case "jbo": case "a": - case "lld": + case "obj": + case "dll": + case "lib": objects+=({tmp}); break; @@ -240,7 +255,18 @@ int main(int argc, string *argv) case "preprocess": { - int ret=silent_do_cmd( ({"wcc386","-p","-fr"+errorfile}) + cflags + Array.map(sources, fixpath)); + switch(get_ext(sources[0])) + { + default: + case "c": + int ret=silent_do_cmd( ({"wcc386","-p","-fr"+errorfile}) + cflags + Array.map(sources, fixpath)); + break; + + case "cc": + case "cpp": + int ret=silent_do_cmd( ({"wpp386","-p","-fr"+errorfile}) + cflags + Array.map(sources, fixpath)); + break; + } break; } @@ -256,10 +282,12 @@ int main(int argc, string *argv) check_errorfile(errorfile); } +// objects+=({"BINMODE.OBJ"}); string ldfile="TMP"+getpid()+".lk"; if(!output) output="a.out"; rm(ldfile); + target=output; if(!share) target+=".exe"; @@ -275,15 +303,18 @@ int main(int argc, string *argv) Process.system("cat "+ldfile); write("\n"); #endif + linking_failed=0; silent_do_cmd( ({"wlink","@"+ldfile }), lambda(string data) { if(search(data," W1008:")!=-1) - exit(1); + linking_failed++; }); if(getenv("CLEANUP")!="no") rm(ldfile); + + if(linking_failed) exit(1); } check_errorfile(errorfile); -- GitLab