diff --git a/src/generic/Dsw/Mod/CompilerCPfrontMain.cp b/src/generic/Dsw/Mod/CompilerCPfrontMain.cp
index 462e3fe7e146868b259308d9d9ba69cae120dc21..bf5bb1b69fe186c12fb0be1219f6378b9a762f68 100644 (file)
MODULE DswCompilerCPfrontMain;
IMPORT Kernel, HostFiles, Files, Console, Strings, DswDocuments,
- DevCPM, DevCPT, DevCPB, DevCPP, DevCPE, DevCPH, DevCPV := CPfrontCPV, DevCPG := CPfrontCPG;
+ DevCPM, DevCPT, DevCPB, DevCPP, DevCPE, DevCPH, DevCPV := CPfrontCPV, DevCPG := CPfrontCPG,
+ 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
DevCPG.opt := {}; (* !!! *)
DevCPM.Init(source);
(* DevCPB.typSize := DevCPV.TypeSize; *)
DevCPB.typSize := DevCPV.TypSize;
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.AdrAndSize(DevCPT.topScope); DevCPT.Export(ext, new);
IF obj IN m.opts THEN
DevCPG.CloseFiles
END;
+ DevCPR.Close;
DevCPT.Close;
error := ~DevCPM.noerr;
IF error THEN