diff --git a/.gitattributes b/.gitattributes index 61f1c9fffc0f39be81eca7a4c8a7f878a47f66ea..eb36040b943e3bc03fa229c249874d1ab1adb883 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 2e1c4998f0003722288b4955a6345c7aad0a9cb0..c247bd85cfc9bcd7a241160ced4b667b94de81e8 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 cab4d86a715fb4109bf9311f3dc5a41df7b0ec22..fa8bc901629e0f8726e6fd74d9f8fbe8e793aeae 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 3e55f63e6c163af1e98d8a6b3768131400b8478f..3e89ca0241c7820bba23511e1eb49cd6e9444308 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);