index 1797a6daea7243ad6e985d42520b5313a4e42300..5461907738b518d28937737892394e19b1a00c6f 100644 (file)
IMPORT Kernel, HostFiles, Files, Console, Strings, DswDocuments,
DevCPM, DevCPT, DevCPB, DevCPP, DevCPE, DevCPV := DevCPV486, DevCPS,
- DevCPH;
+ DevCPH, DevCPR;
CONST
(* compiler options: *)
next: Elem
END;
+ Def = POINTER TO RECORD
+ name: DevCPT.Name;
+ val: BOOLEAN;
+ next: Def
+ END;
+
VAR
u: Elem;
+ d: Def;
PROCEDURE GetPath (IN path: ARRAY OF CHAR; OUT dir, name: Files.Name);
VAR i, j, len: INTEGER;
END
END Check;
+ PROCEDURE Define (IN name: DevCPT.Name; val: BOOLEAN);
+ VAR def: Def;
+ BEGIN
+ NEW(def); def.name := name$; def.val := val; def.next := d; d := def
+ END Define;
+
BEGIN
outsym := ""; outcode := "";
opts := defopt; opts2 := defopt2; found := FALSE;
INCL(opts, ctime)
ELSIF p = "-no-use-time" THEN
EXCL(opts, ctime)
+ ELSIF p = "-define+" THEN
+ Check; Define(Kernel.argv[i]$, TRUE); INC(i)
+ ELSIF p = "-define-" THEN
+ Check; Define(Kernel.argv[i]$, FALSE); INC(i)
ELSE
Console.WriteStr("unknown option ");
Console.WriteStr(p); Console.WriteLn;
END InitOptions;
PROCEDURE Module (source: POINTER TO ARRAY OF CHAR; m: Elem; OUT error: BOOLEAN);
- VAR ext, new: BOOLEAN; p: DevCPT.Node;
+ VAR ext, new: BOOLEAN; p: DevCPT.Node; def: Def;
BEGIN
DevCPM.Init(source);
DevCPM.symList := m.insym;
DevCPT.Init(m.opts);
DevCPB.typSize := DevCPV.TypeSize;
DevCPT.processor := DevCPV.processor;
+ DevCPR.Init;
+ def := d;
+ WHILE def # NIL DO
+ DevCPR.Set(def.name, def.val);
+ def := def.next
+ END;
DevCPP.Module(p);
+ DevCPR.Check;
IF DevCPM.noerr THEN
IF DevCPT.libName # "" THEN EXCL(m.opts, obj) END;
DevCPV.Init(m.opts); DevCPV.Allocate; DevCPT.Export(ext, new);
IF DevCPM.noerr & (new OR ext) THEN DevCPM.RegisterNewSym
ELSE DevCPM.DeleteNewSym
END;
+ DevCPR.Close;
DevCPT.Close;
error := ~DevCPM.noerr;
IF error THEN