diff --git a/src/compiler/OPM.Mod b/src/compiler/OPM.Mod index f7a171aa..c0f59250 100644 --- a/src/compiler/OPM.Mod +++ b/src/compiler/OPM.Mod @@ -86,7 +86,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *) VAR SourceFileName : ARRAY 256 OF CHAR; - GlobalModel, Model*: CHAR; (* 2: S8/I16/L32, C: S16/I32/L64, V:S8/I32/L64 *) + GlobalModel, Model*: ARRAY 10 OF CHAR; (* 2: S8/I16/L32, C: S16/I32/L64, V:S8/I32/L64 *) GlobalAddressSize, AddressSize*: INTEGER; GlobalAlignment, Alignment*: INTEGER; GlobalOptions*, Options*: SET; @@ -189,8 +189,8 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *) (* Elementary type size model *) | "O": IF i+1 >= Strings.Length(s) THEN LogWStr("-O option requires following size model character."); LogWLn ELSE - Model := s[i+1]; - IF (Model # '2') & (Model # 'C') & (Model # 'V') THEN + Model[0] := s[i+1]; Model[1] := 0X; + IF (Model[0] # '2') & (Model[0] # 'C') & (Model[0] # 'V') THEN LogWStr("Unrecognised size model character following -O."); LogWLn END; INC(i) @@ -287,7 +287,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *) (* 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 *) + 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 *) @@ -338,7 +338,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *) IF mainlinkstat IN Options THEN INCL(Options, mainprog) END; MaxIndex := SignedMaximum(AddressSize); - CASE Model OF + CASE Model[0] 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 @@ -349,8 +349,8 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *) IF verbose IN Options THEN VerboseListSizes END; ResourceDir := Configuration.installdir; - Strings.Append("/ ", ResourceDir); - ResourceDir[Strings.Length(ResourceDir)-1] := Model; + Strings.Append("/", ResourceDir); + Strings.Append(Model, ResourceDir); modules := ""; Platform.GetEnv("MODULES", modules); searchpath := "."; Platform.GetEnv("OBERON", searchpath); diff --git a/src/compiler/extTools.Mod b/src/compiler/extTools.Mod index b4f6ca95..f158fd60 100644 --- a/src/compiler/extTools.Mod +++ b/src/compiler/extTools.Mod @@ -67,10 +67,10 @@ 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(OPM.ResourceDir, cmd); + Strings.Append(Configuration.installdir, cmd); Strings.Append('/lib"', cmd); Strings.Append(Configuration.libspec, cmd); - + Strings.Append(OPM.Model, cmd); execute("Assemble and link: ", cmd); END LinkMain; diff --git a/src/system/Platformunix.Mod b/src/system/Platformunix.Mod index 2db3669c..1ef21940 100644 --- a/src/system/Platformunix.Mod +++ b/src/system/Platformunix.Mod @@ -437,13 +437,13 @@ END Unlink; PROCEDURE -chdir(n: ARRAY OF CHAR): INTEGER "chdir((char*)n)"; -PROCEDURE -getcwd(VAR cwd: ARRAY OF CHAR) "getcwd((char*)cwd, cwd__len)"; +PROCEDURE -getcwd(VAR cwd: ARRAY OF CHAR): SYSTEM.PTR "getcwd((char*)cwd, cwd__len)"; PROCEDURE Chdir*(VAR n: ARRAY OF CHAR): ErrorCode; VAR r: INTEGER; BEGIN - r := chdir(n); getcwd(CWD); - IF r < 0 THEN RETURN err() ELSE RETURN 0 END + IF (chdir(n) >= 0) & (getcwd(CWD) # NIL) THEN RETURN 0 + ELSE RETURN err() END END Chdir; @@ -536,8 +536,8 @@ BEGIN HaltCode := -128; HaltHandler := NIL; TimeStart := 0; TimeStart := Time(); - CWD := ""; getcwd(CWD); PID := getpid(); + IF getcwd(CWD) = NIL THEN CWD := "" END; SeekSet := seekset(); SeekCur := seekcur(); diff --git a/src/tools/make/oberon.mk b/src/tools/make/oberon.mk index baf784c0..1d3fd191 100644 --- a/src/tools/make/oberon.mk +++ b/src/tools/make/oberon.mk @@ -157,14 +157,14 @@ install: @printf "\nInstalling into \"$(INSTALLDIR)\"\n" @rm -rf "$(INSTALLDIR)/bin" "$(INSTALLDIR)/$(MODEL)" @mkdir -p "$(INSTALLDIR)/bin" + @mkdir -p "$(INSTALLDIR)/lib" @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/" + @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)/lib/" @if which ldconfig >/dev/null 2>&1; then $(LDCONFIG); fi @@ -345,10 +345,10 @@ librarybinary: # of utilities like BrowserCmd.Mod (aka showdef). # Make static library - ar rcs "$(BUILDDIR)/lib$(ONAME).a" $(BUILDDIR)/*.o + ar rcs "$(BUILDDIR)/lib$(ONAME)$(MODEL).a" $(BUILDDIR)/*.o # Make shared library - @cd $(BUILDDIR) && $(COMPILE) -shared -o lib$(ONAME).so *.o + @cd $(BUILDDIR) && $(COMPILE) -shared -o lib$(ONAME)$(MODEL).so *.o