unit ide;
interface
uses
parser,symtable,tree,asmgen,globals,scanner,dos;
type
toutinfo = record
data_size : longint;
end;
tininfo = record
end;
function compile(const name : string;const ininfo : tininfo;var outinfo : toutinfo) : byte;
implementation
var
end_pointer : pointer;
procedure end_of_compilation;
begin
end;
function compile(const name : string;const ininfo : tininfo;var outinfo : toutinfo) : byte;
procedure error(const s : string);
begin
end_of_compilation;
end;
procedure init;
var
s,opts : string;
p : pathstr;
d : dirstr;
n : namestr;
e : extstr;
i,j : integer;
resf : text;
res,endofparas : boolean;
code : word;
hs : string;
as_res : text;
mac : pmacrosym;
asmfilename : string;
begin
objext:='.o';
res:=false;
i:=0;
p:=name;
if p='' then
error('Keine Eingabedatei angegeben');
fsplit(p,d,n,e);
if e='' then e:='.PP';
inputfile:=d+n;
inputdir:=d;
asmfilename:=inputfile+'.S';
assign(asmfile,asmfilename);
assign(as_res,'AS.RES');
rewrite(as_res);
writeln(as_res,'-o ',inputfile+objext+' '+asmfilename);
close(as_res);
if gen_makefile then
begin
assign(makefile,inputfile+'.MAK');
{$I-}
rewrite(makefile);
{$I+}
if ioresult<>0 then
error('Makedatei kann nicht erzeugt werden');
end;
if gendeffile then
begin
if target<>target_OS2 then
error('DEF-Datei kann nur für OS/2 erzeugt werden');
assign(defdatei,inputfile+'.DEF');
{$I-}
rewrite(defdatei);
{$I+}
if ioresult<>0 then
error('DEF-Datei kann nicht erzeugt werden');
write(defdatei,'NAME '+upper(inputfile));
if genpm then
write(defdatei,' WINDOWAPI');
writeln(defdatei,#13#10#13#10'PROTMODE'#13#10);
writeln(defdatei,'DESCRIPTION '+''''+description+''''#13#10);
writeln(defdatei,'DATA'#9'MULTIPLE'#13#10);
writeln(defdatei,'STACKSIZE'#9+tostr(stacksize));
writeln(defdatei,'HEAPSIZE'#9+tostr(heapsize)+#13#10);
write(defdatei,'EXPORTS');
end;
end;
label
ende;
begin
end_pointer:=@ende;
init_tree;
init_symtable;
globalsinit;
init;
if gendeffile then
close(defdatei);
initscanner(inputfile+'.PP');
asmgeninit;
outinfo.data_size:=parse;
ende:
{ Heap löschen }
heapptr:=heaporg;
freelist:=nil;
end;
end.