Skip to content
Snippets Groups Projects
Commit da5cd990 authored by Fredrik Hübinette (Hubbe)'s avatar Fredrik Hübinette (Hubbe)
Browse files

first attemt att supporting compilation through WINE...

Rev: NT/init_nt:1.15
Rev: NT/tools/lib.pike:1.5
Rev: NT/tools/rntcc:1.19
parent fb2f6607
No related branches found
No related tags found
No related merge requests found
#!/bin/sh
#This can be 'sprsh' or 'wine'
REMOTE_METHOD=sprsh
# Edit
NTHOST=10.0.4.10
NTDRIVE='j:'
......@@ -14,6 +17,10 @@ USE_SPRSH=yes
# Port for sprsh
NTPORT=4711
#These are only used if you use wine
watcom=D:\\CDROM
INCLUDE="$watcom\\H;$watcom\\H\\NT"
# Don't edit
base=`pwd`
......@@ -35,18 +42,23 @@ fi
IFS='
'
export NTHOST NTDRIVE NTCC CC PATH NTTOOLS MNTREPLACE MNTREPLACE NTPORT USE_SPRSH NTMOUNT IFS
export NTHOST NTDRIVE NTCC CC PATH NTTOOLS MNTREPLACE MNTREPLACE
export NTPORT USE_SPRSH NTMOUNT IFS REMOTE_METHOD watcom INCLUDE
case /$SHELL-$TERM in
*/bash-xterm)
PROMPT_COMMAND="echo -n ]2\; Remote NT compile ]1\; rntcc"
PROMPT_COMMAND="echo -n ]2\; $REMOTE_METHOD NT compile ]1\; rntcc"
export PROMPT_COMMAND
;;
esac
case /$SHELL in
*/bash)
if [ $REMOTE_METHOD = sprsh ]; then
PS1="NT $NTHOST \\$ "
else
PS1="WINE \\$ "
fi
export PS1
;;
esac
......
......@@ -15,45 +15,73 @@ string fixabspath(string s)
return replace(s,"/","\\");
}
string handle_input(object o)
{
if(o->proxy)
o->proxy(Stdio.File("stdin"));
else
thread_create(lambda(object o)
int silent_do_cmd(string *cmd, mixed|void filter, int|void silent)
{
object stdin=Stdio.File("stdin");
while(string s=stdin->read(1000,1))
o->write(s);
},o);
}
string ret="";
object(Stdio.File) f=Stdio.File();
switch(getenv("REMOTE_METHOD"))
{
default:
werror("Unknown REMOTE method %s\n",getenv("REMOTE_METHOD"));
break;
object low_do_cmd(string *cmd)
case "wine":
case "WINE":
#if 0
if(!silent && !filter)
{
object(Stdio.File) f=Stdio.File();
if(!f->connect(getenv("NTHOST"),(int)getenv("NTPORT")))
return Process.create_process(({"wine",cmd*" "}))->wait();
}
else
#endif
{
werror("Failed to connect "+strerror(errno())+".\n");
exit(1);
object o=f->pipe(Stdio.PROP_BIDIRECTIONAL | Stdio.PROP_IPC);
object proc=Process.create_process(({"wine",
"-debugmsg","fixme-all",
cmd*" "}),
(["stdout":o]));
destruct(o);
while(1)
{
string s=f->read(8192,1);
if(!s || !strlen(s)) break;
s=replace(s,"\r\n","\n");
if(!silent) write(s);
ret+=s;
}
if(filter) filter(ret);
destruct(f);
return proc->wait();
}
case 0:
case "sprsh":
case "SPRSH":
string tmp=getcwd();
string mnt=getenv("NTMOUNT");
if(mnt && strlen(mnt)) tmp=replace(tmp,mnt,"");
cmd=({getenv("NTDRIVE")+replace(tmp,"/","\\")})+cmd;
if(!f->connect(getenv("NTHOST"),(int)getenv("NTPORT")))
{
werror("Failed to connect "+strerror(errno())+".\n");
exit(1);
}
f->write(sprintf("%4c",sizeof(cmd)));
for(int e=0;e<sizeof(cmd);e++)
f->write(sprintf("%4c%s",strlen(cmd[e]),cmd[e]));
return f;
}
int silent_do_cmd(string *cmd, mixed|void filter, int|void silent)
if(f->proxy)
f->proxy(Stdio.File("stdin"));
else
thread_create(lambda(object f)
{
object(Stdio.File) f=low_do_cmd(cmd);
object stdin=Stdio.File("stdin");
while(string s=stdin->read(1000,1))
f->write(s);
},f);
handle_input(f);
string ret="";
while(1)
{
string s;
......@@ -71,6 +99,7 @@ int silent_do_cmd(string *cmd, mixed|void filter, int|void silent)
destruct(f);
return code;
}
}
string tmp;
......@@ -84,20 +113,21 @@ string popen_cmd(string *cmd)
string getntenv(string var)
{
string s="";
object(Stdio.File) f=low_do_cmd( ({"getenv",var}) );
while(1)
switch(getenv("REMOTE_METHOD"))
{
sscanf(f->read(4),"%4c", int len);
if(!len) break;
s+=f->read(len);
}
default:
werror("Unknown REMOTE method %s\n",getenv("REMOTE_METHOD"));
break;
sscanf(f->read(4),"%4c",int code);
f->close("r");
f->close("w");
destruct(f);
return s;
case "wine":
case "WINE":
return getenv(var) || getenv(lower_case(var));
case 0:
case "sprsh":
case "SPRSH":
return popen_cmd( ({"getenv",var}) );
}
}
......
......@@ -50,6 +50,10 @@ int compile(string *sources,
case "s":
cmd=({ "wasm", "-fe"+errorfile, "-fo"+dest,})+ sources;
default:
werror("Don't know how to compile %s\n",sources[0]);
exit(1);
}
if(verbose)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment