Separate install subdirs for diff size models. Lots of tidying and renaming.

This commit is contained in:
David Brown 2016-09-25 15:26:04 +01:00
parent 8ab4057a10
commit 41bf2c037d
208 changed files with 1559 additions and 2556 deletions

View file

@ -1,4 +1,4 @@
MODULE Vishap; (* J. Templ 3.2.95 *)
MODULE Compiler; (* J. Templ 3.2.95 *)
IMPORT
SYSTEM, Heap, Platform, Configuration,
@ -12,7 +12,7 @@ MODULE Vishap; (* J. Templ 3.2.95 *)
PROCEDURE Module*(VAR done: BOOLEAN);
VAR ext, new: BOOLEAN; p: OPT.Node;
BEGIN
OPP.Module(p, OPM.opt);
OPP.Module(p, OPM.Options);
IF OPM.noerr THEN
OPV.Init;
OPT.InitRecno;
@ -23,16 +23,16 @@ MODULE Vishap; (* J. Templ 3.2.95 *)
OPC.Init;
OPV.Module(p);
IF OPM.noerr THEN
IF (OPM.mainprog IN OPM.opt) & (OPM.modName # "SYSTEM") THEN
IF (OPM.mainprog IN OPM.Options) & (OPM.modName # "SYSTEM") THEN
OPM.DeleteNewSym;
IF ~(OPM.notcoloroutput IN OPM.opt) THEN vt100.SetAttr(vt100.Green) END;
IF ~(OPM.notcoloroutput IN OPM.Options) THEN vt100.SetAttr(vt100.Green) END;
OPM.LogWStr(" Main program.");
IF ~(OPM.notcoloroutput IN OPM.opt) THEN vt100.SetAttr(vt100.ResetAll) END;
IF ~(OPM.notcoloroutput IN OPM.Options) THEN vt100.SetAttr(vt100.ResetAll) END;
ELSE
IF new THEN
IF ~(OPM.notcoloroutput IN OPM.opt) THEN vt100.SetAttr(vt100.Green) END;
IF ~(OPM.notcoloroutput IN OPM.Options) THEN vt100.SetAttr(vt100.Green) END;
OPM.LogWStr(" New symbol file.");
IF ~(OPM.notcoloroutput IN OPM.opt) THEN vt100.SetAttr(vt100.ResetAll) END;
IF ~(OPM.notcoloroutput IN OPM.Options) THEN vt100.SetAttr(vt100.ResetAll) END;
OPM.RegisterNewSym
ELSIF ext THEN
OPM.LogWStr(" Extended symbol file.");
@ -95,12 +95,12 @@ MODULE Vishap; (* J. Templ 3.2.95 *)
END;
(* 'assemble' (i.e. c compile) .c to object or executable. *)
IF ~(OPM.dontasm IN OPM.opt) THEN
IF OPM.dontlink IN OPM.opt THEN
IF ~(OPM.dontasm IN OPM.Options) THEN
IF OPM.dontlink IN OPM.Options THEN
(* If not linking, just assemble each module. *)
extTools.Assemble(OPM.modName)
ELSE
IF ~(OPM.mainprog IN OPM.opt) THEN
IF ~(OPM.mainprog IN OPM.Options) THEN
(* Assemble non main program and add object name to link list *)
extTools.Assemble(OPM.modName);
Strings.Append(" ", modulesobj);
@ -108,7 +108,7 @@ MODULE Vishap; (* J. Templ 3.2.95 *)
Strings.Append(Configuration.objext, modulesobj)
ELSE
(* Assemble and link main program *)
extTools.LinkMain(OPM.modName, OPM.mainlinkstat IN OPM.opt, modulesobj)
extTools.LinkMain(OPM.modName, OPM.mainlinkstat IN OPM.Options, modulesobj)
END
END
END
@ -123,7 +123,7 @@ MODULE Vishap; (* J. Templ 3.2.95 *)
Platform.Exit(0)
ELSE
IF (sig = 4) & (Platform.HaltCode = -15) THEN
OPM.LogWStr(" --- Vishap Oberon: internal error");
OPM.LogWStr(" --- Oberon compiler internal error");
OPM.LogWLn
END ;
Platform.Exit(2)
@ -135,4 +135,4 @@ BEGIN
Platform.SetQuitHandler(Trap);
Platform.SetBadInstructionHandler(Trap);
Translate
END Vishap.
END Compiler.

View file

@ -829,16 +829,18 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
g: INTEGER; (* expression (source) form *)
p, q: OPT.Struct;
BEGIN
IF OPM.verbose IN OPM.opt THEN
y := ynode^.typ; f := x^.form; g := y^.form;
(*
IF OPM.verbose IN OPM.Options THEN
OPM.LogWLn; OPM.LogWStr("PROCEDURE CheckAssign"); OPM.LogWLn;
END;
y := ynode^.typ; f := x^.form; g := y^.form;
IF OPM.verbose IN OPM.opt THEN
IF OPM.verbose IN OPM.Options THEN
OPM.LogWStr("y.form = "); OPM.LogWNum(y.form, 0); OPM.LogWLn;
OPM.LogWStr("f = "); OPM.LogWNum(f, 0); OPM.LogWLn;
OPM.LogWStr("g = "); OPM.LogWNum(g, 0); OPM.LogWLn;
OPM.LogWStr("ynode.typ.syze = "); OPM.LogWNum(ynode.typ.size, 0); OPM.LogWLn;
END;
*)
IF (ynode^.class = OPT.Ntype) OR (ynode^.class = OPT.Nproc) & (f # OPT.ProcTyp) THEN err(126) END ;
CASE f OF
OPT.Undef,
@ -1328,7 +1330,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
f := atyp^.comp; ftyp := ftyp^.BaseTyp; atyp := atyp^.BaseTyp;
IF fvarpar & (ftyp = OPT.bytetyp) THEN (* ok, but ... *)
IF ~(f IN {OPT.Array, OPT.DynArr}) OR ~((atyp.form IN {OPT.Byte..OPT.Char, OPT.Int}) & (atyp.size = 1)) THEN
IF OPM.verbose IN OPM.opt THEN err(-301) END
IF OPM.verbose IN OPM.Options THEN err(-301) END
END
ELSIF f IN {OPT.Array, OPT.DynArr} THEN
IF ftyp^.comp = OPT.DynArr THEN DynArrParCheck(ftyp, atyp, fvarpar)

View file

@ -660,7 +660,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
EndStat; BegStat;
OPM.WriteString("address *"); Ident(obj); OPM.WriteString(TagExt);
base := NIL
ELSIF (OPM.ptrinit IN OPM.opt) & (vis = 0) & (obj^.mnolev > 0) & (obj^.typ^.form = OPT.Pointer) THEN
ELSIF (OPM.ptrinit IN OPM.Options) & (vis = 0) & (obj^.mnolev > 0) & (obj^.typ^.form = OPT.Pointer) THEN
OPM.WriteString(" = NIL")
END
END ;
@ -779,7 +779,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
OPM.WriteString("/* "); OPM.WriteString(Configuration.name);
OPM.Write(" "); OPM.WriteString(Configuration.versionLong); OPM.Write (" "); (* noch *)
FOR i := 0 TO MAX(SET) DO
IF i IN OPM.glbopt THEN
IF i IN OPM.Options THEN
CASE i OF (* c.f. ScanOptions in OPM *)
| OPM.inxchk: OPM.Write("x")
| OPM.ranchk: OPM.Write("r")
@ -902,22 +902,22 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
PROCEDURE EnterBody*;
BEGIN
OPM.WriteLn; OPM.WriteString(Export);
IF OPM.mainprog IN OPM.opt THEN
IF OPM.mainprog IN OPM.Options THEN
OPM.WriteString("int main(int argc, char **argv)"); OPM.WriteLn;
ELSE
OPM.WriteString("void *");
OPM.WriteString(OPM.modName); OPM.WriteString(BodyNameExt); OPM.WriteLn;
END ;
BegBlk; BegStat;
IF OPM.mainprog IN OPM.opt THEN OPM.WriteString("__INIT(argc, argv)") ELSE OPM.WriteString("__DEFMOD") END ;
IF OPM.mainprog IN OPM.Options THEN OPM.WriteString("__INIT(argc, argv)") ELSE OPM.WriteString("__DEFMOD") END ;
EndStat;
IF (OPM.mainprog IN OPM.opt) & demoVersion THEN BegStat;
IF (OPM.mainprog IN OPM.Options) & demoVersion THEN BegStat;
OPM.WriteString('/*don`t do it!*/ printf("DEMO VERSION: DO NOT USE THIS PROGRAM FOR ANY COMMERCIAL PURPOSE\n")');
EndStat
END ;
InitImports(OPT.topScope^.right);
BegStat;
IF OPM.mainprog IN OPM.opt THEN OPM.WriteString('__REGMAIN("') ELSE OPM.WriteString('__REGMOD("') END ;
IF OPM.mainprog IN OPM.Options THEN OPM.WriteString('__REGMAIN("') ELSE OPM.WriteString('__REGMOD("') END ;
OPM.WriteString(OPM.modName);
IF GlbPtrs THEN OPM.WriteString('", EnumPtrs)') ELSE OPM.WriteString('", 0)') END ;
EndStat;
@ -927,7 +927,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
PROCEDURE ExitBody*;
BEGIN
BegStat;
IF OPM.mainprog IN OPM.opt THEN OPM.WriteString("__FINI;") ELSE OPM.WriteString("__ENDMOD;") END ;
IF OPM.mainprog IN OPM.Options THEN OPM.WriteString("__FINI;") ELSE OPM.WriteString("__ENDMOD;") END ;
OPM.WriteLn; EndBlk
END ExitBody;

View file

@ -24,7 +24,6 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
notcoloroutput* = 16; (* turn off color output *)
forcenewsym* = 17; (* force new symbol file *)
verbose* = 18; (* verbose *)
defopt* = {inxchk, typchk, ptrinit, assert}; (* default options *)
nilval* = 0;
@ -87,10 +86,12 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
VAR
SourceFileName : ARRAY 256 OF CHAR;
(* Parameter selectable sizes *)
AddressSize*, Alignment*,
SetSize*,
ShortintSize*, IntegerSize*, LongintSize*: INTEGER;
GlobalModel, Model*: CHAR; (* 2: S8/I16/L32, C: S16/I32/L64, V:S8/I32/L64 *)
GlobalAddressSize, AddressSize*: INTEGER;
GlobalAlignment, Alignment*: INTEGER;
GlobalOptions*, Options*: SET;
ShortintSize*, IntegerSize*, LongintSize*, SetSize*: INTEGER;
MaxSet*: INTEGER;
MaxIndex*: SYSTEM.INT64;
@ -105,7 +106,6 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
pc*, entno*: INTEGER; (* entry number *)
modName*: ARRAY 32 OF CHAR;
objname*: ARRAY 64 OF CHAR;
opt*, glbopt*: SET;
ErrorLineStartPos, ErrorLineLimitPos, ErrorLineNumber: LONGINT; (* Limit = start of next line *)
@ -120,8 +120,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
S: INTEGER;
OBERON: ARRAY 1024 OF CHAR;
MODULES: ARRAY 1024 OF CHAR;
ResourceDir*: ARRAY 1024 OF CHAR;
(* ------------------------- Log Output ------------------------- *)
@ -134,12 +133,32 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
(* Integer size support *)
PROCEDURE SignedMaximum*(bytecount: LONGINT): SYSTEM.INT64;
VAR result: SYSTEM.INT64;
BEGIN
result := 1;
result := SYSTEM.LSH(result, bytecount*8-1);
RETURN result - 1;
END SignedMaximum;
PROCEDURE SignedMinimum*(bytecount: LONGINT): SYSTEM.INT64;
BEGIN RETURN -SignedMaximum(bytecount) - 1
END SignedMinimum;
(* Unchecked conversion of any size integer to INTEGER or LONGINT *)
PROCEDURE Longint* (n: SYSTEM.INT64): LONGINT; BEGIN RETURN SYSTEM.VAL(LONGINT, n) END Longint;
PROCEDURE Integer* (n: SYSTEM.INT64): INTEGER; BEGIN RETURN SYSTEM.VAL(INTEGER, n) END Integer;
(* ------------------------- parameter handling -------------------------*)
PROCEDURE ScanOptions(s: ARRAY OF CHAR; VAR opt: SET);
(* --------------- Initialisation and parameter handling ---------------*)
PROCEDURE ScanOptions(s: ARRAY OF CHAR);
VAR i: INTEGER;
BEGIN
i := 1; (* skip - *)
@ -147,34 +166,32 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
CASE s[i] OF
(* Run time safety *)
| "p": opt := opt / {ptrinit} (* Initialise pointers to NIL. *)
| "a": opt := opt / {assert} (* Halt on assertion failures. *)
| "r": opt := opt / {ranchk} (* Halt on range check failures. *)
| "t": opt := opt / {typchk} (* Halt on type guad failure. *)
| "x": opt := opt / {inxchk} (* Halt on index out of range. *)
| "p": Options := Options / {ptrinit} (* Initialise pointers to NIL. *)
| "a": Options := Options / {assert} (* Halt on assertion failures. *)
| "r": Options := Options / {ranchk} (* Halt on range check failures. *)
| "t": Options := Options / {typchk} (* Halt on type guad failure. *)
| "x": Options := Options / {inxchk} (* Halt on index out of range. *)
(* Symbol file management *)
| "e": opt := opt / {extsf} (* Allow extension of old symbol file. *)
| "s": opt := opt / {newsf} (* Allow generation of new symbol file. *)
| "F": opt := opt / {forcenewsym} (* Force generation of new symbol file. *)
| "e": Options := Options / {extsf} (* Allow extension of old symbol file. *)
| "s": Options := Options / {newsf} (* Allow generation of new symbol file. *)
| "F": Options := Options / {forcenewsym} (* Force generation of new symbol file. *)
(* C compiler and linker control *)
| "m": opt := opt / {mainprog} (* This module is main. Link dynamically. *)
| "M": opt := opt / {mainlinkstat} (* This module is main. Link statically. *)
| "S": opt := opt / {dontasm} (* Don't call C compiler *)
| "c": opt := opt / {dontlink} (* Don't link. *)
| "m": Options := Options / {mainprog} (* This module is main. Link dynamically. *)
| "M": Options := Options / {mainlinkstat} (* This module is main. Link statically. *)
| "S": Options := Options / {dontasm} (* Don't call C compiler *)
| "c": Options := Options / {dontlink} (* Don't link. *)
(* Miscellaneous *)
| "f": opt := opt / {notcoloroutput} (* Disable vt100 control characters in status output. *)
| "V": opt := opt / {verbose}
| "f": Options := Options / {notcoloroutput} (* Disable vt100 control characters in status output. *)
| "V": Options := Options / {verbose}
(* Elementary type size model *)
| "O": IF i+1 >= Strings.Length(s) THEN LogWStr("-O option requires following size model character."); LogWLn ELSE
CASE s[i+1] OF
|'2': ShortintSize := 1; IntegerSize := 2; LongintSize := 4; SetSize := 4 (* Original Oberon / Oberon 2 *)
|'V': ShortintSize := 1; IntegerSize := 4; LongintSize := 8; SetSize := 8 (* Vishap 64 bit *)
|'C': ShortintSize := 2; IntegerSize := 4; LongintSize := 8; SetSize := 8 (* Component Pascal *)
ELSE LogWStr("Unrecognised size model character following -O."); LogWLn
Model := s[i+1];
IF (Model # '2') & (Model # 'C') & (Model # 'V') THEN
LogWStr("Unrecognised size model character following -O."); LogWLn
END;
INC(i)
END
@ -212,26 +229,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
END ScanOptions;
PROCEDURE ^GetProperties;
(* Undocumented options used by the build system:
Todo - this is obsoleted by the -A and -O options. Remove when the build system
has been updated.
The following parameter overrides the integer size, pointer size and alignment
settings compiled into the binary. They are used when bootstrapping to generate
the C source for a compiler with different sizes to the current compiler.
-Bnnn Where each n is a single digit specifying the integer size, pointer size
and alignment in bytes.
An alignment of n means that types smaller than n align to their
own size, types larger than n align to n bytes.
LONGINT size will be set to twice the integer size.
*)
PROCEDURE -GetAlignment(VAR a: INTEGER) "struct {char c; long long l;} _s; *a = (char*)&_s.l - (char*)&_s";
PROCEDURE OpenPar*(): BOOLEAN; (* prepare for a sequence of translations *)
VAR s: ARRAY 256 OF CHAR;
@ -286,43 +284,82 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
LogWStr("Repeating an option toggles its value."); LogWLn;
RETURN FALSE
ELSE
(* Set options to initial defaults *)
AddressSize := SIZE(SYSTEM.ADDRESS); (* This compilers address size *)
GetAlignment(Alignment); (* This compilers alignment *)
Model := '2'; (* Size model of common Oberon-2 implementations: S8/I16/L32 *)
Options := {inxchk, typchk, ptrinit, assert}; (* Default options *)
(* Pick up global option changes from start of command line *)
S:=1; s:=""; Platform.GetArg(S, s);
glbopt := defopt;
WHILE s[0] = OptionChar DO
ScanOptions(s, glbopt);
ScanOptions(s);
INC(S); s:=""; Platform.GetArg(S, s)
END;
(* Record global option settings for this command line *)
GlobalAddressSize := AddressSize;
GlobalAlignment := Alignment;
GlobalModel := Model;
GlobalOptions := Options;
RETURN TRUE
END;
END OpenPar;
PROCEDURE InitOptions*; (* get the options for one translation *)
VAR s: ARRAY 256 OF CHAR;
PROCEDURE VerboseListSizes;
BEGIN
opt := glbopt;
LogWLn;
LogWStr("Type Size"); LogWLn;
LogWStr("SHORTINT "); LogWNum(ShortintSize, 4); (* LogWNum(SIntAlign, 5); *) LogWLn;
LogWStr("INTEGER "); LogWNum(IntegerSize, 4); (* LogWNum(IntAlign, 5); *) LogWLn;
LogWStr("LONGINT "); LogWNum(LongintSize, 4); (* LogWNum(LIntAlign, 5); *) LogWLn;
LogWStr("SET "); LogWNum(SetSize, 4); (* LogWNum(SetAlign, 5); *) LogWLn;
LogWStr("ADDRESS "); LogWNum(AddressSize, 4); (* LogWNum(PointerAlign, 5); *) LogWLn;
LogWLn;
LogWStr("Alignment: "); LogWNum(Alignment, 4); LogWLn;
END VerboseListSizes;
PROCEDURE InitOptions*; (* get the options for one translation *)
VAR s: ARRAY 256 OF CHAR; searchpath, modules: ARRAY 1024 OF CHAR;
MODULES: ARRAY 1024 OF CHAR;
BEGIN
Options := GlobalOptions; Model:=GlobalModel; Alignment := GlobalAlignment; AddressSize := GlobalAddressSize;
s:=""; Platform.GetArg(S, s);
WHILE s[0] = OptionChar DO
ScanOptions(s, opt);
ScanOptions(s);
INC(S); s:=""; Platform.GetArg(S, s)
END;
(*
dontAsm := dontasm IN opt;
dontLink := dontlink IN opt;
mainProg := mainprog IN opt;
mainLinkStat := mainlinkstat IN opt;
notColorOutput := notcoloroutput IN opt;
forceNewSym := forcenewsym IN opt;
Verbose := verbose IN opt;
*)
IF mainlinkstat IN Options THEN INCL(Options, mainprog) END;
IF mainlinkstat IN opt THEN INCL(glbopt, mainprog); INCL(opt, mainprog) END;
MaxIndex := SignedMaximum(AddressSize);
CASE Model OF
|'2': ShortintSize := 1; IntegerSize := 2; LongintSize := 4; SetSize := 4
|'C': ShortintSize := 2; IntegerSize := 4; LongintSize := 8; SetSize := 8
|'V': ShortintSize := 1; IntegerSize := 4; LongintSize := 8; SetSize := 8
ELSE ShortintSize := 1; IntegerSize := 2; LongintSize := 4; SetSize := 4
END;
MaxSet := SetSize * 8 - 1;
GetProperties;
IF verbose IN Options THEN VerboseListSizes END;
ResourceDir := Configuration.installdir;
Strings.Append("/ ", ResourceDir);
ResourceDir[Strings.Length(ResourceDir)-1] := Model;
modules := ""; Platform.GetEnv("MODULES", modules);
searchpath := "."; Platform.GetEnv("OBERON", searchpath);
Strings.Append(";.;", searchpath);
Strings.Append(modules, searchpath);
Strings.Append(";", searchpath);
Strings.Append(ResourceDir, searchpath);
Strings.Append("/sym;", searchpath);
Files.SetSearchPath(searchpath);
END InitOptions;
@ -391,13 +428,13 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
buf: ARRAY 1024 OF CHAR;
BEGIN
IF n >= 0 THEN
IF ~(notcoloroutput IN opt) THEN vt100.SetAttr(vt100.Red) END;
IF ~(notcoloroutput IN Options) THEN vt100.SetAttr(vt100.Red) END;
LogWStr(" err ");
IF ~(notcoloroutput IN opt) THEN vt100.SetAttr(vt100.ResetAll) END;
IF ~(notcoloroutput IN Options) THEN vt100.SetAttr(vt100.ResetAll) END;
ELSE
IF ~(notcoloroutput IN opt) THEN vt100.SetAttr(vt100.Magenta) END;
IF ~(notcoloroutput IN Options) THEN vt100.SetAttr(vt100.Magenta) END;
LogWStr(" warning "); n := -n;
IF ~(notcoloroutput IN opt) THEN vt100.SetAttr(vt100.ResetAll) END;
IF ~(notcoloroutput IN Options) THEN vt100.SetAttr(vt100.ResetAll) END;
END ;
LogWNum(n, 1);
LogWStr(" ");
@ -470,9 +507,9 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
i := SHORT(Longint(pos - ErrorLineStartPos));
WHILE i > 0 DO LogW(" "); DEC(i) END;
IF ~(notcoloroutput IN opt) THEN vt100.SetAttr(vt100.Green) END;
IF ~(notcoloroutput IN Options) THEN vt100.SetAttr(vt100.Green) END;
LogW("^");
IF ~(notcoloroutput IN opt) THEN vt100.SetAttr(vt100.ResetAll) END;
IF ~(notcoloroutput IN Options) THEN vt100.SetAttr(vt100.ResetAll) END;
Files.Close(f);
END ShowLine;
@ -548,93 +585,6 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
(* ------------------------- initialization ------------------------- *)
PROCEDURE GetProperty(VAR S: Texts.Scanner; name: ARRAY OF CHAR; VAR size, align: INTEGER);
BEGIN
IF (S.class = Texts.Name) & (S.s = name) THEN Texts.Scan(S);
IF S.class = Texts.Int THEN size := SHORT(S.i); Texts.Scan(S) ELSE Mark(-157, -1) END ;
IF S.class = Texts.Int THEN align := SHORT(S.i); Texts.Scan(S) ELSE Mark(-157, -1) END
ELSE Mark(-157, -1)
END
END GetProperty;
PROCEDURE minusop(i: LONGINT): LONGINT;
BEGIN
RETURN -i;
END minusop;
PROCEDURE power0(i, j : LONGINT) : LONGINT; (* we would like to calculate exact Min Max values in GetProperties, not hardcode em, noch *)
VAR k : LONGINT;
p : LONGINT;
BEGIN
k := 1;
p := i;
REPEAT
p := p * i;
INC(k);
UNTIL k=j;
RETURN p;
END power0;
PROCEDURE VerboseListSizes;
BEGIN
LogWLn;
LogWStr("Type Size"); LogWLn;
LogWStr("SHORTINT "); LogWNum(ShortintSize, 4); (* LogWNum(SIntAlign, 5); *) LogWLn;
LogWStr("INTEGER "); LogWNum(IntegerSize, 4); (* LogWNum(IntAlign, 5); *) LogWLn;
LogWStr("LONGINT "); LogWNum(LongintSize, 4); (* LogWNum(LIntAlign, 5); *) LogWLn;
LogWStr("SET "); LogWNum(SetSize, 4); (* LogWNum(SetAlign, 5); *) LogWLn;
LogWStr("ADDRESS "); LogWNum(AddressSize, 4); (* LogWNum(PointerAlign, 5); *) LogWLn;
LogWLn;
LogWStr("Alignment: "); LogWNum(Alignment, 4); LogWLn;
END VerboseListSizes;
(* Integer size support *)
PROCEDURE SignedMaximum*(bytecount: LONGINT): SYSTEM.INT64;
VAR result: SYSTEM.INT64;
BEGIN
result := 1;
result := SYSTEM.LSH(result, bytecount*8-1);
RETURN result - 1;
END SignedMaximum;
PROCEDURE SignedMinimum*(bytecount: LONGINT): SYSTEM.INT64;
BEGIN RETURN -SignedMaximum(bytecount) - 1
END SignedMinimum;
PROCEDURE GetProperties();
(* VAR base: LONGINT; *)
BEGIN
(* Fixed and Configuration.Mod based sizes have been initialised in
the module startup code, and maybe overridden by the -Bnnn bootstrap
parameter *)
MaxReal := 3.40282346D38; (* REAL is 4 bytes *)
MaxLReal := 1.7976931348623157D307 * 9.999999; (* LONGREAL is 8 bytes *)
(*should be 1.7976931348623157D308 *)
MinReal := -MaxReal;
MinLReal := -MaxLReal;
MaxSet := SetSize * 8 - 1;
MaxIndex := SignedMaximum(AddressSize);
IF verbose IN opt THEN VerboseListSizes END;
END GetProperties;
(* ------------------------- Read Symbol File ------------------------- *)
@ -711,7 +661,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
PROCEDURE RegisterNewSym*;
BEGIN
IF (modName # "SYSTEM") OR (mainprog IN opt) THEN Files.Register(newSFile) END
IF (modName # "SYSTEM") OR (mainprog IN Options) THEN Files.Register(newSFile) END
END RegisterNewSym;
PROCEDURE DeleteNewSym*;
@ -837,8 +787,8 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
IF noerr THEN LogWStr(" "); LogWNum(Files.Pos(R[BodyFile]), 0); LogWStr(" chars.") END;
IF noerr THEN
IF modName = "SYSTEM" THEN
IF ~(mainprog IN opt) THEN Files.Register(BFile) END
ELSIF ~(mainprog IN opt) THEN
IF ~(mainprog IN Options) THEN Files.Register(BFile) END
ELSIF ~(mainprog IN Options) THEN
Append(R[HeaderInclude], HFile);
Files.Register(HIFile); Files.Register(BFile)
ELSE
@ -854,29 +804,11 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
PROCEDURE -GetAlignment(VAR a: INTEGER) "struct {char c; long long l;} s; *a = (char*)&s.l - (char*)&s";
BEGIN
MaxReal := 3.40282346D38; (* REAL is 4 bytes *)
MaxLReal := 1.7976931348623157D307 * 9.999999; (* LONGREAL is 8 bytes, should be 1.7976931348623157D308 *)
MinReal := -MaxReal;
MinLReal := -MaxLReal;
Texts.OpenWriter(W);
MODULES := ""; Platform.GetEnv("MODULES", MODULES);
OBERON := "."; Platform.GetEnv("OBERON", OBERON);
Strings.Append(";.;", OBERON);
Strings.Append(MODULES, OBERON);
Strings.Append(";", OBERON);
Strings.Append(Configuration.installdir, OBERON);
Strings.Append("/sym;", OBERON);
Files.SetSearchPath(OBERON);
(* Default address size and alignment are those of this compiler *)
AddressSize := SIZE(SYSTEM.ADDRESS);
GetAlignment(Alignment);
(* Default type size model is that of the original Oberon-2 implementation (-O2) *)
ShortintSize := 1;
IntegerSize := 2;
LongintSize := 4;
SetSize := 4
END OPM.

View file

@ -1234,7 +1234,7 @@ END Import;
i := 1; WHILE i < maxImps DO expCtxt.locmno[i] := -1; INC(i) END;
OutObj(topScope^.right);
ext := sfpresent & symExtended;
new := ~sfpresent OR symNew OR (OPM.forcenewsym IN OPM.opt);
new := ~sfpresent OR symNew OR (OPM.forcenewsym IN OPM.Options);
IF OPM.noerr & sfpresent & (impCtxt.reffp # expCtxt.reffp) THEN
new := TRUE;
IF ~extsf THEN err(155) END
@ -1296,8 +1296,8 @@ BEGIN topScope := NIL; OpenScope(0, NIL); OPM.errpos := 0;
(*initialization of module SYSTEM*)
EnterTyp("BYTE", Byte, 1, bytetyp);
EnterTyp("PTR", Pointer, -1, sysptrtyp); (* Size set in Vishap.PropagateElementaryTypeSize *)
EnterTyp("ADDRESS", Int, -1, adrtyp); (* Size set in Vishap.PropagateElementaryTypeSize *)
EnterTyp("PTR", Pointer, -1, sysptrtyp); (* Size set in Compiler.PropagateElementaryTypeSize *)
EnterTyp("ADDRESS", Int, -1, adrtyp); (* Size set in Compiler.PropagateElementaryTypeSize *)
EnterTyp("INT8", Int, 1, int8typ);
EnterTyp("INT16", Int, 2, int16typ);
EnterTyp("INT32", Int, 4, int32typ);
@ -1322,7 +1322,7 @@ BEGIN topScope := NIL; OpenScope(0, NIL); OPM.errpos := 0;
EnterTyp("BOOLEAN", Bool, 1, booltyp);
EnterTyp("CHAR", Char, 1, chartyp);
EnterTyp("SET", Set, -1, settyp); (* Size set in Vishap.PropagateElementaryTypeSize *)
EnterTyp("SET", Set, -1, settyp); (* Size set in Compiler.PropagateElementaryTypeSize *)
EnterTyp("REAL", Real, 4, realtyp);
EnterTyp("LONGREAL", LReal, 8, lrltyp);
EnterTyp("HUGEINT", Int, 8, hinttyp);

View file

@ -162,7 +162,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
OPT.Nindex,
OPT.Nproc,
OPT.Ncall: RETURN 10
| OPT.Nguard: IF OPM.typchk IN OPM.opt THEN RETURN 10 ELSE RETURN 9 (*cast*) END
| OPT.Nguard: IF OPM.typchk IN OPM.Options THEN RETURN 10 ELSE RETURN 9 (*cast*) END
| OPT.Nvarpar: IF comp IN {OPT.Array, OPT.DynArr} THEN RETURN 10 ELSE RETURN 9 END (* arrays don't need deref *)
| OPT.Nderef: RETURN 9
| OPT.Nmop: CASE subclass OF
@ -243,7 +243,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
OPM.WriteString("__SETOF("); Entier(n, MinPrec);
OPM.WriteString(","); OPM.WriteInt(newtype.size*8); OPM.Write(CloseParen)
ELSIF to = OPT.Int THEN
IF (newtype.size < n.typ.size) & (OPM.ranchk IN OPM.opt) THEN
IF (newtype.size < n.typ.size) & (OPM.ranchk IN OPM.Options) THEN
OPM.WriteString("__SHORT"); IF SideEffects(n) THEN OPM.Write("F") END;
OPM.Write(OpenParen); Entier(n, MinPrec); OPM.WriteString(Comma);
OPM.WriteInt(OPM.SignedMaximum(newtype.size) + 1); OPM.Write(CloseParen)
@ -251,7 +251,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
SizeCast(n.typ.size, newtype.size); Entier(n, 9)
END
ELSIF to = OPT.Char THEN
IF OPM.ranchk IN OPM.opt THEN OPM.WriteString("__CHR");
IF OPM.ranchk IN OPM.Options THEN OPM.WriteString("__CHR");
IF SideEffects(n) THEN OPM.Write("F") END ;
OPM.Write(OpenParen); Entier(n, MinPrec); OPM.Write(CloseParen)
ELSE OPM.WriteString("(CHAR)"); Entier(n, 9)
@ -280,7 +280,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
PROCEDURE Index(n, d: OPT.Node; prec, dim: INTEGER);
BEGIN
IF ~(OPM.inxchk IN OPM.opt)
IF ~(OPM.inxchk IN OPM.Options)
OR (n^.right^.class = OPT.Nconst) & ((n^.right^.conval^.intval = 0) OR (n^.left^.typ^.comp # OPT.DynArr)) THEN
expr(n^.right, prec)
ELSE
@ -342,7 +342,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
OPM.Write(CloseBracket)
END
| OPT.Nguard: typ := n^.typ; obj := n^.left^.obj;
IF OPM.typchk IN OPM.opt THEN
IF OPM.typchk IN OPM.Options THEN
IF typ^.comp = OPT.Record THEN OPM.WriteString(GuardRecFunc);
IF obj^.mnolev # OPM.level THEN (*intermediate level var-par record*)
OPM.WriteStringVar(obj^.scope^.name); OPM.WriteString("__curr->"); OPC.Ident(obj)
@ -363,7 +363,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
OPM.Write("("); OPC.Ident(typ^.strobj); OPM.Write(")"); expr(n^.left, designPrec)
END
END
| OPT.Neguard: IF OPM.typchk IN OPM.opt THEN
| OPT.Neguard: IF OPM.typchk IN OPM.Options THEN
IF n^.left^.class = OPT.Nvarpar THEN OPM.WriteString("__GUARDEQR(");
OPC.CompleteIdent(n^.left^.obj); OPM.WriteString(Comma); TypeOf(n^.left);
ELSE OPM.WriteString("__GUARDEQP("); expr(n^.left^.left, MinPrec)
@ -844,7 +844,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
END ;
ActualPar(n^.right, n^.obj)
| OPT.Nifelse: IF n^.subcl # OPT.assertfn THEN IfStat(n, FALSE, outerProc)
ELSIF OPM.assert IN OPM.opt THEN
ELSIF OPM.assert IN OPM.Options THEN
OPM.WriteString("__ASSERT("); expr(n^.left^.left^.left, MinPrec); OPM.WriteString(Comma);
OPM.WriteInt(n^.left^.right^.right^.conval^.intval); OPM.Write(CloseParen); OPC.EndStat
END
@ -867,7 +867,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
OPM.WriteString("goto exit__"); OPM.WriteInt(exit.label)
END
| OPT.Nreturn: IF OPM.level = 0 THEN
IF OPM.mainprog IN OPM.opt THEN OPM.WriteString("__FINI") ELSE OPM.WriteString("__ENDMOD") END
IF OPM.mainprog IN OPM.Options THEN OPM.WriteString("__FINI") ELSE OPM.WriteString("__ENDMOD") END
ELSE
IF n^.left # NIL THEN
(* Make local copy of result before ExitProc deletes dynamic vars *)
@ -895,7 +895,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
PROCEDURE Module*(prog: OPT.Node);
BEGIN
IF ~(OPM.mainprog IN OPM.opt) THEN OPC.GenHdr(prog^.right); OPC.GenHdrIncludes END ;
IF ~(OPM.mainprog IN OPM.Options) THEN OPC.GenHdr(prog^.right); OPC.GenHdrIncludes END ;
OPC.GenBdy(prog^.right); stat(prog, NIL)
END Module;

View file

@ -2,13 +2,13 @@ MODULE extTools;
IMPORT Strings, Console, Configuration, Platform, OPM;
VAR compilationOptions, CFLAGS: ARRAY 1023 OF CHAR;
VAR CFLAGS: ARRAY 1023 OF CHAR;
PROCEDURE execute(title: ARRAY OF CHAR; cmd: ARRAY OF CHAR);
VAR r, status, exitcode: INTEGER;
BEGIN
IF OPM.verbose IN OPM.opt THEN
IF OPM.verbose IN OPM.Options THEN
Console.String(title); Console.String(cmd); Console.Ln
END;
r := Platform.System(cmd);
@ -29,16 +29,27 @@ BEGIN
END execute;
PROCEDURE InitialiseCompilerCommand(VAR s: ARRAY OF CHAR);
BEGIN
COPY(Configuration.compile, s);
Strings.Append(' -I "', s);
Strings.Append(OPM.ResourceDir, s);
Strings.Append('/include" ', s);
Platform.GetEnv("CFLAGS", CFLAGS);
Strings.Append (CFLAGS, s);
Strings.Append (" ", s);
END InitialiseCompilerCommand;
PROCEDURE Assemble*(moduleName: ARRAY OF CHAR);
VAR
cmd: ARRAY 1023 OF CHAR;
BEGIN
cmd := Configuration.compile;
Strings.Append(compilationOptions, cmd);
Strings.Append("-c ", cmd);
Strings.Append(moduleName, cmd);
Strings.Append(".c", cmd);
execute("Assemble: ", cmd);
InitialiseCompilerCommand(cmd);
Strings.Append("-c ", cmd);
Strings.Append(moduleName, cmd);
Strings.Append(".c", cmd);
execute("Assemble: ", cmd);
END Assemble;
@ -46,9 +57,7 @@ PROCEDURE LinkMain*(VAR moduleName: ARRAY OF CHAR; statically: BOOLEAN; addition
VAR
cmd: ARRAY 1023 OF CHAR;
BEGIN
cmd := Configuration.compile;
Strings.Append(" ", cmd);
Strings.Append(compilationOptions, cmd);
InitialiseCompilerCommand(cmd);
Strings.Append(moduleName, cmd);
Strings.Append(".c ", cmd);
Strings.Append(additionalopts, cmd);
@ -58,7 +67,7 @@ PROCEDURE LinkMain*(VAR moduleName: ARRAY OF CHAR; statically: BOOLEAN; addition
Strings.Append(Configuration.objflag, cmd);
Strings.Append(moduleName, cmd);
Strings.Append(Configuration.linkflags, cmd);
Strings.Append(Configuration.installdir, cmd);
Strings.Append(OPM.ResourceDir, cmd);
Strings.Append('/lib"', cmd);
Strings.Append(Configuration.libspec, cmd);
@ -66,11 +75,5 @@ PROCEDURE LinkMain*(VAR moduleName: ARRAY OF CHAR; statically: BOOLEAN; addition
END LinkMain;
BEGIN
Strings.Append(' -I "', compilationOptions);
Strings.Append(Configuration.installdir, compilationOptions);
Strings.Append('/include" ', compilationOptions);
Platform.GetEnv("CFLAGS", CFLAGS);
Strings.Append (CFLAGS, compilationOptions);
Strings.Append (" ", compilationOptions);
END extTools.
,

View file

@ -433,11 +433,6 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
r.res := 0; r.eof := FALSE
END ReadBytes;
PROCEDURE ReadByte* (VAR r : Rider; VAR x : ARRAY OF SYSTEM.BYTE);
BEGIN
ReadBytes(r, x, 1);
END ReadByte;
PROCEDURE Base* (VAR r: Rider): File;
BEGIN RETURN r.buf.f
END Base;

View file

@ -14,9 +14,9 @@ TYPE
FileHandle* = LONGINT;
FileIdentity* = RECORD
volume*: LONGINT; (* dev on Unix filesystems, volume serial number on NTFS *)
index*: LONGINT; (* inode on Unix filesystems, file id on NTFS *)
mtime*: LONGINT; (* File modification time, value is system dependent *)
volume: LONGINT; (* dev on Unix filesystems, volume serial number on NTFS *)
index: LONGINT; (* inode on Unix filesystems, file id on NTFS *)
mtime: LONGINT; (* File modification time, value is system dependent *)
END;
EnvPtr = POINTER TO ARRAY 1024 OF CHAR;

View file

@ -384,8 +384,6 @@ void writeMakeParameters() {
fprintf(fd, "VERSION=%s\n", version);
fprintf(fd, "ONAME=%s\n", oname);
fprintf(fd, "DATAMODEL=%s\n", dataModel);
fprintf(fd, "INTSIZE=%d\n", intsize);
fprintf(fd, "MODEL=-O%c\n", intsize == 2 ? '2' : 'V');
fprintf(fd, "ADRSIZE=%d\n", addressSize);
fprintf(fd, "ALIGNMENT=%d\n", alignment);
fprintf(fd, "INSTALLDIR=%s\n", installdir);

379
src/tools/make/oberon.mk Normal file
View file

@ -0,0 +1,379 @@
# DO NOT RUN THIS MAKEFILE DIRECTLY.
#
# Always use the makefile in the root of the enlistment. This makefile
# depends on up to date configuration files generated by the root makefile.
# Be independent of any CFLAGS settings in the calling environment
CFLAGS =
# Gnu make has the make initial directory in CURDIR, BSD make has it in .CURDIR.
ROOTDIR = $(CURDIR)$(.CURDIR)
# Configuration.Make is created by src/tools/make/configure.c, which is run on
# *every* build by the makefile in the enlistment root.
include ./Configuration.Make
FLAVOUR = $(OS).$(DATAMODEL).$(COMPILER)
BUILDDIR = build/$(FLAVOUR)
OBECOMP = $(ONAME)$(BINEXT)
# Default make target - explain usage
usage:
@echo ""
@echo Do not run this makefile directly, always run the makefile in
@echo the root of the enlistment.
clean:
@printf "\n\n--- Cleaning branch $(BRANCH) $(OS) $(COMPILER) $(DATAMODEL) ---\n\n"
rm -rf $(BUILDDIR)
rm -f $(OBECOMP)
# Assemble: Generate the Vishap Oberon compiler binary by compiling the C sources in the build directory
assemble:
@printf "\nmake assemble - compiling Oberon compiler c source:\n"
@printf " VERSION: %s\n" "$(VERSION)"
@printf " BRANCH: %s\n" "$(BRANCH)"
@printf " Target characteristics:\n"
@printf " PLATFORM: %s\n" "$(PLATFORM)"
@printf " OS: %s\n" "$(OS)"
@printf " BUILDDIR: %s\n" "$(BUILDDIR)"
@printf " INSTALLDIR: %s\n" "$(INSTALLDIR)"
@printf " Oberon characteristics:\n"
@printf " MODEL: %s\n" "$(MODEL)"
@printf " ADRSIZE: %s\n" "$(ADRSIZE)"
@printf " ALIGNMENT: %s\n" "$(ALIGNMENT)"
@printf " C compiler:\n"
@printf " COMPILER: %s\n" "$(COMPILER)"
@printf " COMPILE: %s\n" "$(COMPILE)"
@printf " DATAMODEL: %s\n" "$(DATAMODEL)"
cd $(BUILDDIR) && $(COMPILE) -c SYSTEM.c Configuration.c Platform.c Heap.c
cd $(BUILDDIR) && $(COMPILE) -c Console.c Strings.c Modules.c Files.c
cd $(BUILDDIR) && $(COMPILE) -c Reals.c Texts.c vt100.c errors.c
cd $(BUILDDIR) && $(COMPILE) -c OPM.c extTools.c OPS.c OPT.c
cd $(BUILDDIR) && $(COMPILE) -c OPC.c OPV.c OPB.c OPP.c
cd $(BUILDDIR) && $(COMPILE) $(STATICLINK) Compiler.c -o $(ROOTDIR)/$(OBECOMP) \
SYSTEM.o Configuration.o Platform.o Heap.o Console.o Strings.o Modules.o Files.o \
Reals.o Texts.o vt100.o errors.o OPM.o extTools.o OPS.o OPT.o \
OPC.o OPV.o OPB.o OPP.o
cp src/system/*.[ch] $(BUILDDIR)
@printf "$(OBECOMP) created.\n"
compilerfromsavedsource:
@echo Populating clean build directory from bootstrap C sources $(PLATFORM)-$(ADRSIZE)$(ALIGNMENT).
@mkdir -p $(BUILDDIR)
@cp bootstrap/$(PLATFORM)-$(ADRSIZE)$(ALIGNMENT)/* $(BUILDDIR)
@cp bootstrap/*.[ch] $(BUILDDIR)
@make -f src/tools/make/oberon.mk -s assemble
@cp bootstrap/*.[ch] $(BUILDDIR)
translate:
# Make sure we have an oberon compiler binary: if we built one earlier we'll use it,
# otherwise use one of the pre-prepared sets of C sources in the bootstrap directory.
if [ ! -e $(OBECOMP) ]; then make -f src/tools/make/oberon.mk -s compilerfromsavedsource; fi
@printf "\nmake translate - translating compiler source from Oberon to C:\n"
@printf " PLATFORM: %s\n" $(PLATFORM)
@printf " MODEL: %s\n" $(MODEL)
@printf " ADRSIZE: %s\n" $(ADRSIZE)
@printf " ALIGNMENT: %s\n" $(ALIGNMENT)
@mkdir -p $(BUILDDIR)
@rm -f $(BUILDDIR)/*.sym
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../Configuration.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/system/Platform$(PLATFORM).Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfFapx -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/system/Heap.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/system/Console.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/library/v4/Strings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/library/v4/Modules.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfFx -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/system/Files.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/library/v4/Reals.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/library/v4/Texts.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/library/misc/vt100.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/errors.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPM.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/extTools.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfFx -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPS.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPT.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPC.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPV.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPB.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPP.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ssfm -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/Compiler.Mod
@printf "$(BUILDDIR) filled with compiler C source.\n"
browsercmd:
@printf "\nMaking symbol browser\n"
@cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -fSm -O$(MODEL) ../../src/tools/browser/BrowserCmd.Mod
@cd $(BUILDDIR); $(COMPILE) BrowserCmd.c -o showdef \
Platform.o Texts.o OPT.o Heap.o Console.o SYSTEM.o OPM.o OPS.o OPV.o \
Files.o Reals.o Modules.o vt100.o errors.o Configuration.o Strings.o \
OPC.o
FORCE:
# installable: Check for access to the installation directory
installable:
@rm -rf "S(INSTALLDIR)/test-access-qqq"
@if ! mkdir -p "$(INSTALLDIR)/test-access-qqq";then echo "\\n\\n Cannot write to install directory.\\n Please use sudo or run as root/administrator.\\n\\n"; exit 1;fi
@rm -rf "S(INSTALLDIR)/test-access-qqq"
# install: Use only after a successful full build. Installs the compiler
# and libraries in /opt/$(ONAME).
# May require root access.
install:
@printf "\nInstalling into \"$(INSTALLDIR)\"\n"
@rm -rf "$(INSTALLDIR)/bin" "$(INSTALLDIR)/$(MODEL)"
@mkdir -p "$(INSTALLDIR)/bin"
@mkdir -p "$(INSTALLDIR)/$(MODEL)/include"
@mkdir -p "$(INSTALLDIR)/$(MODEL)/sym"
@mkdir -p "$(INSTALLDIR)/$(MODEL)/lib"
@cp $(BUILDDIR)/*.h "$(INSTALLDIR)/$(MODEL)/include/"
@cp $(BUILDDIR)/*.sym "$(INSTALLDIR)/$(MODEL)/sym/"
@cp $(OBECOMP) "$(INSTALLDIR)/bin/$(OBECOMP)"
@-cp $(BUILDDIR)/showdef$(BINEXT) "$(INSTALLDIR)/bin"
@cp $(BUILDDIR)/lib$(ONAME)* "$(INSTALLDIR)/$(MODEL)/lib/"
@if which ldconfig >/dev/null 2>&1; then $(LDCONFIG); fi
# showpath: Describe how to set the PATH variable
showpath:
@printf "\nNow add $(INSTALLDIR)/bin to your path, for example with the command:\n"
@printf "export PATH=\"$(INSTALLDIR)/bin:\$$PATH\"\n"
@printf "\n"
uninstall:
@printf "\nUninstalling from \"$(INSTALLDIR)\"\n"
rm -rf "$(INSTALLDIR)"
rm -f /etc/ld.so.conf/lib$(ONAME)
if which ldconfig >/dev/null 2>&1; then ldconfig; fi
v4:
@printf "\nMaking v4 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/v4/Args.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/v4/Printer.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/v4/Sets.Mod
ooc2:
@printf "\nMaking ooc2 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc2/ooc2Strings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc2/ooc2Ascii.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc2/ooc2CharClass.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc2/ooc2ConvTypes.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc2/ooc2IntConv.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc2/ooc2IntStr.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc2/ooc2Real0.Mod
TODO: Comment disabled lines contain use of VAL that reads beyond source variable
ooc:
@printf "\nMaking ooc library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocLowReal.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocLowLReal.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocRealMath.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocOakMath.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocLRealMath.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocLongInts.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocComplexMath.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocLComplexMath.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocAscii.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocCharClass.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocStrings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocConvTypes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocLRealConv.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocLRealStr.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocRealConv.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocRealStr.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocIntConv.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocIntStr.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocMsg.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocSysClock.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocTime.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocChannel.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocStrings2.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocRts.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocFilenames.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocTextRider.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocBinaryRider.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocJulianDay.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocFilenames.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocwrapperlibc.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ooc/oocC$(DATAMODEL).Mod
oocX11:
@printf "\nMaking oocX11 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/oocX11/oocX11.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/oocX11/oocXutil.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/oocX11/oocXYplane.Mod
ulm:
@printf "\nMaking ulm library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmObjects.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmPriorities.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmDisciplines.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmServices.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSys.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSYSTEM.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmEvents.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmProcess.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmResources.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmForwarders.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmRelatedEvents.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmTypes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmStreams.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmStrings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSysTypes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmTexts.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSysConversions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmErrors.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSysErrors.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSysStat.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmASCII.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSets.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmIO.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmAssertions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmIndirectDisciplines.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmStreamDisciplines.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmIEEE.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmMC68881.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmReals.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmPrint.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmWrite.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmConstStrings.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmPlotters.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmSysIO.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmLoader.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmNetIO.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmPersistentObjects.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmPersistentDisciplines.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmOperations.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmScales.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmTimes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmClocks.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmTimers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmConditions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmStreamConditions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmTimeConditions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmCiphers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmCipherOps.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmBlockCiphers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmAsymmetricCiphers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmConclusions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmRandomGenerators.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmTCrypt.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/ulm/ulmIntOperations.Mod
pow32:
@printf "\nMaking pow library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/pow/powStrings.Mod
misc:
@printf "\nMaking misc library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/system/Oberon.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/misc/crt.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/misc/Listen.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/misc/MersenneTwister.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/misc/MultiArrays.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/misc/MultiArrayRiders.Mod
s3:
@printf "\nMaking s3 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethBTrees.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethMD5.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethSets.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethZlib.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethZlibBuffers.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethZlibInflate.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethZlibDeflate.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethZlibReaders.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethZlibWriters.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethZip.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethRandomNumbers.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethGZReaders.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethGZWriters.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethUnicode.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethDates.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethReals.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -Ffs -O$(MODEL) ../../src/library/s3/ethStrings.Mod
librarybinary:
@printf "\nMaking lib$(ONAME)\n"
# Remove objects that should not be part of the library
rm -f $(BUILDDIR)/Compiler.o
# Note: remining compiler files are retained in the library allowing the building
# of utilities like BrowserCmd.Mod (aka showdef).
# Make static library
ar rcs "$(BUILDDIR)/lib$(ONAME).a" $(BUILDDIR)/*.o
# Make shared library
@cd $(BUILDDIR) && $(COMPILE) -shared -o lib$(ONAME).so *.o
library: v4 ooc2 ooc ulm pow32 misc s3 librarybinary
sourcechanges:
@cd $(BUILDDIR) && sh $(ROOTDIR)/src/tools/make/sourcechanges.sh $(ROOTDIR)/bootstrap/$(PLATFORM)-$(ADRSIZE)$(ALIGNMENT)
RUNTEST = COMPILER=$(COMPILER) OBECOMP="$(OBECOMP) -O$(MODEL)" FLAVOUR=$(FLAVOUR) BRANCH=$(BRANCH) sh ./test.sh "$(INSTALLDIR)"
confidence:
@printf "\n\n--- Confidence tests ---\n\n"
cd src/test/confidence/hello; $(RUNTEST)
cd src/test/confidence/intsyntax; $(RUNTEST)
cd src/test/confidence/language; $(RUNTEST)
cd src/test/confidence/texts; $(RUNTEST)
cd src/test/confidence/library; $(RUNTEST)
cd src/test/confidence/lola; $(RUNTEST)
cd src/test/confidence/arrayassignment; $(RUNTEST)
if [ "$(PLATFORM)" != "windows" ] ; then cd src/test/confidence/signal; $(RUNTEST); fi
@printf "\n\n--- Confidence tests passed ---\n\n"

View file

@ -1,379 +0,0 @@
# DO NOT RUN THIS MAKEFILE DIRECTLY.
#
# Always use the makefile in the root of the enlistment. This makefile
# depends on up to date configuration files generated by the root makefile.
# Be independent of any CFLAGS settings in the calling environment
CFLAGS =
# Gnu make has the make initial directory in CURDIR, BSD make has it in .CURDIR.
ROOTDIR = $(CURDIR)$(.CURDIR)
# Configuration.Make is created by src/tools/make/configure.c, which is run on
# *every* build by the makefile in the enlistment root.
include ./Configuration.Make
FLAVOUR = $(OS).$(DATAMODEL).$(COMPILER)
BUILDDIR = build/$(FLAVOUR)
VISHAP = $(ONAME)$(BINEXT)
MODEL=-O2 # Override model - build everything as S8,I16,L32.
# Default make target - explain usage
usage:
@echo ""
@echo Do not run this makefile directly, always run the makefile in
@echo the root of the enlistment.
clean:
@printf "\n\n--- Cleaning branch $(BRANCH) $(OS) $(COMPILER) $(DATAMODEL) ---\n\n"
rm -rf $(BUILDDIR)
rm -f $(VISHAP)
# Assemble: Generate the Vishap Oberon compiler binary by compiling the C sources in the build directory
assemble:
@printf "\nmake assemble - compiling Oberon compiler c source:\n"
@printf " VERSION: %s\n" "$(VERSION)"
@printf " BRANCH: %s\n" "$(BRANCH)"
@printf " Target characteristics:\n"
@printf " PLATFORM: %s\n" "$(PLATFORM)"
@printf " OS: %s\n" "$(OS)"
@printf " BUILDDIR: %s\n" "$(BUILDDIR)"
@printf " INSTALLDIR: %s\n" "$(INSTALLDIR)"
@printf " Oberon characteristics:\n"
@printf " INTSIZE: %s\n" "$(INTSIZE)"
@printf " ADRSIZE: %s\n" "$(ADRSIZE)"
@printf " ALIGNMENT: %s\n" "$(ALIGNMENT)"
@printf " C compiler:\n"
@printf " COMPILER: %s\n" "$(COMPILER)"
@printf " COMPILE: %s\n" "$(COMPILE)"
@printf " DATAMODEL: %s\n" "$(DATAMODEL)"
cd $(BUILDDIR) && $(COMPILE) -c SYSTEM.c Configuration.c Platform.c Heap.c
cd $(BUILDDIR) && $(COMPILE) -c Console.c Strings.c Modules.c Files.c
cd $(BUILDDIR) && $(COMPILE) -c Reals.c Texts.c vt100.c errors.c
cd $(BUILDDIR) && $(COMPILE) -c OPM.c extTools.c OPS.c OPT.c
cd $(BUILDDIR) && $(COMPILE) -c OPC.c OPV.c OPB.c OPP.c
cd $(BUILDDIR) && $(COMPILE) $(STATICLINK) Vishap.c -o $(ROOTDIR)/$(VISHAP) \
SYSTEM.o Configuration.o Platform.o Heap.o Console.o Strings.o Modules.o Files.o \
Reals.o Texts.o vt100.o errors.o OPM.o extTools.o OPS.o OPT.o \
OPC.o OPV.o OPB.o OPP.o
cp src/system/*.[ch] $(BUILDDIR)
@printf "$(VISHAP) created.\n"
compilerfromsavedsource:
@echo Populating clean build directory from bootstrap C sources.
@mkdir -p $(BUILDDIR)
@cp bootstrap/$(PLATFORM)-$(ADRSIZE)$(ALIGNMENT)/* $(BUILDDIR)
@cp bootstrap/*.[ch] $(BUILDDIR)
@make -f src/tools/make/vishap.make -s assemble
@cp bootstrap/*.[ch] $(BUILDDIR)
translate:
# Make sure we have an oberon compiler binary: if we built one earlier we'll use it,
# otherwise use one of the pre-prepared sets of C sources in the bootstrap directory.
if [ ! -e $(VISHAP) ]; then make -f src/tools/make/vishap.make -s compilerfromsavedsource; fi
@printf "\nmake translate - translating compiler source from Oberon to C:\n"
@printf " PLATFORM: %s\n" $(PLATFORM)
@printf " INTSIZE: %s\n" $(INTSIZE)
@printf " MODEL: %s\n" $(MODEL)
@printf " ADRSIZE: %s\n" $(ADRSIZE)
@printf " ALIGNMENT: %s\n" $(ALIGNMENT)
@mkdir -p $(BUILDDIR)
@rm -f $(BUILDDIR)/*.sym
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../Configuration.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/system/Platform$(PLATFORM).Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfFapx -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/system/Heap.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/system/Console.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/library/v4/Strings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/library/v4/Modules.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfFx -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/system/Files.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/library/v4/Reals.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/library/v4/Texts.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/library/misc/vt100.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/errors.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/OPM.cmdln.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/extTools.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfFx -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/OPS.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/OPT.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/OPC.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/OPV.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/OPB.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -SsfF -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/OPP.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ssfm -A$(ADRSIZE)$(ALIGNMENT) $(MODEL) ../../src/compiler/Vishap.Mod
@printf "$(BUILDDIR) filled with compiler C source.\n"
browsercmd:
@printf "\nMaking symbol browser\n"
@cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -fSm $(MODEL) ../../src/tools/browser/BrowserCmd.Mod
@cd $(BUILDDIR); $(COMPILE) BrowserCmd.c -o showdef \
Platform.o Texts.o OPT.o Heap.o Console.o SYSTEM.o OPM.o OPS.o OPV.o \
Files.o Reals.o Modules.o vt100.o errors.o Configuration.o Strings.o \
OPC.o
FORCE:
# installable: Check for access to the installation directory
installable:
@rm -rf "S(INSTALLDIR)/test-access-qqq"
@if ! mkdir -p "$(INSTALLDIR)/test-access-qqq";then echo "\\n\\n Cannot write to install directory.\\n Please use sudo or run as root/administrator.\\n\\n"; exit 1;fi
@rm -rf "S(INSTALLDIR)/test-access-qqq"
# install: Use only after a successful full build. Installs the compiler
# and libraries in /opt/$(ONAME).
# May require root access.
install:
@printf "\nInstalling into \"$(INSTALLDIR)\"\n"
@rm -rf "$(INSTALLDIR)"
@mkdir -p "$(INSTALLDIR)/bin" "$(INSTALLDIR)/include" "$(INSTALLDIR)/sym" "$(INSTALLDIR)/lib"
@cp $(BUILDDIR)/*.h "$(INSTALLDIR)/include/"
@cp $(BUILDDIR)/*.sym "$(INSTALLDIR)/sym/"
@cp $(VISHAP) "$(INSTALLDIR)/bin/$(VISHAP)"
@-cp $(BUILDDIR)/showdef$(BINEXT) "$(INSTALLDIR)/bin"
@cp $(BUILDDIR)/lib$(ONAME).* "$(INSTALLDIR)/lib/"
@if which ldconfig >/dev/null 2>&1; then $(LDCONFIG); fi
# showpath: Describe how to set the PATH variable
showpath:
@printf "\nNow add $(INSTALLDIR)/bin to your path, for example with the command:\n"
@printf "export PATH=\"$(INSTALLDIR)/bin:\$$PATH\"\n"
@printf "\n"
uninstall:
@printf "\nUninstalling from \"$(INSTALLDIR)\"\n"
rm -rf "$(INSTALLDIR)"
rm -f /etc/ld.so.conf/lib$(ONAME)
if which ldconfig >/dev/null 2>&1; then ldconfig; fi
v4:
@printf "\nMaking v4 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/v4/Args.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/v4/Printer.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/v4/Sets.Mod
ooc2:
@printf "\nMaking ooc2 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc2/ooc2Strings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc2/ooc2Ascii.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc2/ooc2CharClass.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc2/ooc2ConvTypes.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc2/ooc2IntConv.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc2/ooc2IntStr.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc2/ooc2Real0.Mod
TODO: Comment disabled lines contain use of VAL that reads beyond source variable
ooc:
@printf "\nMaking ooc library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocLowReal.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocLowLReal.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocRealMath.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocOakMath.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocLRealMath.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocLongInts.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocComplexMath.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocLComplexMath.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocAscii.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocCharClass.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocStrings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocConvTypes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocLRealConv.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocLRealStr.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocRealConv.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocRealStr.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocIntConv.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocIntStr.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocMsg.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocSysClock.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocTime.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocChannel.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocStrings2.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocRts.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocFilenames.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocTextRider.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocBinaryRider.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocJulianDay.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocFilenames.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocwrapperlibc.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ooc/oocC$(DATAMODEL).Mod
oocX11:
@printf "\nMaking oocX11 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/oocX11/oocX11.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/oocX11/oocXutil.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/oocX11/oocXYplane.Mod
ulm:
@printf "\nMaking ulm library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmObjects.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmPriorities.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmDisciplines.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmServices.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSys.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSYSTEM.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmEvents.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmProcess.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmResources.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmForwarders.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmRelatedEvents.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmTypes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmStreams.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmStrings.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSysTypes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmTexts.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSysConversions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmErrors.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSysErrors.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSysStat.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmASCII.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSets.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmIO.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmAssertions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmIndirectDisciplines.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmStreamDisciplines.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmIEEE.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmMC68881.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmReals.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmPrint.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmWrite.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmConstStrings.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmPlotters.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmSysIO.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmLoader.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmNetIO.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmPersistentObjects.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmPersistentDisciplines.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmOperations.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmScales.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmTimes.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmClocks.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmTimers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmConditions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmStreamConditions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmTimeConditions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmCiphers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmCipherOps.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmBlockCiphers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmAsymmetricCiphers.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmConclusions.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmRandomGenerators.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmTCrypt.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/ulm/ulmIntOperations.Mod
pow32:
@printf "\nMaking pow library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/pow/powStrings.Mod
misc:
@printf "\nMaking misc library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/system/Oberon.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/misc/crt.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/misc/Listen.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/misc/MersenneTwister.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/misc/MultiArrays.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/misc/MultiArrayRiders.Mod
s3:
@printf "\nMaking s3 library\n"
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethBTrees.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethMD5.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethSets.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethZlib.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethZlibBuffers.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethZlibInflate.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethZlibDeflate.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethZlibReaders.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethZlibWriters.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethZip.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethRandomNumbers.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethGZReaders.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethGZWriters.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethUnicode.Mod
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethDates.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethReals.Mod
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs $(MODEL) ../../src/library/s3/ethStrings.Mod
librarybinary:
@printf "\nMaking lib$(ONAME)\n"
# Remove objects that should not be part of the library
rm -f $(BUILDDIR)/vishap.o
# Note: remining compiler files are retained in the library allowing the building
# of utilities like BrowserCmd.Mod (aka showdef).
# Make static library
ar rcs "$(BUILDDIR)/lib$(ONAME).a" $(BUILDDIR)/*.o
# Make shared library
@cd $(BUILDDIR) && $(COMPILE) -shared -o lib$(ONAME).so *.o
library: v4 ooc2 ooc ulm pow32 misc s3 librarybinary
sourcechanges:
@cd $(BUILDDIR) && sh $(ROOTDIR)/src/tools/make/sourcechanges.sh $(ROOTDIR)/bootstrap/$(PLATFORM)-$(ADRSIZE)$(ALIGNMENT)
RUNTEST = COMPILER=$(COMPILER) OBECOMP=$(VISHAP) FLAVOUR=$(FLAVOUR) BRANCH=$(BRANCH) sh ./test.sh "$(INSTALLDIR)"
confidence:
@printf "\n\n--- Confidence tests ---\n\n"
cd src/test/confidence/hello; $(RUNTEST)
cd src/test/confidence/intsyntax; $(RUNTEST)
cd src/test/confidence/language; $(RUNTEST)
cd src/test/confidence/texts; $(RUNTEST)
cd src/test/confidence/library; $(RUNTEST)
cd src/test/confidence/lola; $(RUNTEST)
cd src/test/confidence/arrayassignment; $(RUNTEST)
if [ "$(PLATFORM)" != "windows" ] ; then cd src/test/confidence/signal; $(RUNTEST); fi
@printf "\n\n--- Confidence tests passed ---\n\n"