some changes for OpenBSD

This commit is contained in:
Antranig Vartanian 2016-01-13 14:24:08 +04:00
parent 3cdb5b1d3a
commit d570c60e3c
6 changed files with 90 additions and 23 deletions

View file

@ -1 +1 @@
/opt/voc-1.1/lib /home/noch/local/voc-1.1/lib

View file

@ -20,7 +20,8 @@ LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME) LIBRARY = lib$(LIBNAME)
ifndef PRF ifndef PRF
PRF = "/opt" #PRF = "/opt"
PRF = "/home/noch/local"
endif endif
PREFIX = $(PRF)/voc-$(RELEASE) PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc PREFIXLN = $(PRF)/voc
@ -76,7 +77,8 @@ stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod $(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod $(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod sed "s#/opt#$(PRF)#g" src/voc/prf.Mod > tmp.Mod
mv tmp.Mod src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod $(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod $(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod $(VOCSTATIC0) -sxPFS Files0.Mod

View file

@ -6,7 +6,7 @@ MODULE Unix; (* Josef Templ, 5.3.90 Linux system calls *)
error numbers as defined in Unix error numbers as defined in Unix
other constants start with lower case letters *) other constants start with lower case letters *)
IMPORT SYSTEM; IMPORT SYSTEM(*, Console*);
CONST CONST
@ -169,29 +169,34 @@ TYPE
256 bytes long in glibc on armv6 256 bytes long in glibc on armv6
64 bytes long in glibc on x86_64 64 bytes long in glibc on x86_64
*)
(* on openbsd
typedef long sigjmp_buf[11 + 1];
typedef long jmp_buf[11];
it seems we need sigjmp_buf
*) *)
JmpBuf* = RECORD JmpBuf* = RECORD
jmpbuf: ARRAY 11 OF LONGINT; (* 8 * 8 = 64 *) jmpbuf: ARRAY 12 OF LONGINT; (* 8 * 8 = 64 *)
END ; END ;
Status* = RECORD (* struct stat *) Status* = RECORD (* struct stat *)
mode* : INTEGER; mode* : INTEGER; (* mode_t *)
dev* : INTEGER; (* dev_t 4 *) dev* : INTEGER; (* dev_t 4 *)
ino* : LONGINT; (* ino 8 *) ino* : LONGINT; (* ino_t 8 *)
nlink* : INTEGER; nlink* : INTEGER; (* nlink_t *)
uid*, gid*: INTEGER; uid*, gid*: INTEGER; (* uid_t, gid_t *)
rdev* : INTEGER; rdev* : INTEGER; (* dev_t *)
atime* : LONGINT; atime* : LONGINT;
atimences* : LONGINT; atimences* : LONGINT;
mtime* : LONGINT; mtime* : LONGINT;
mtimensec* : LONGINT; mtimensec* : LONGINT;
ctime* : LONGINT; ctime* : LONGINT;
ctimensec* : LONGINT; ctimensec* : LONGINT;
size* : LONGINT; size* : LONGINT; (* off_t *)
blocks* : LONGINT; blocks* : LONGINT; (* int64_t *)
blksize* : INTEGER; blksize* : INTEGER; (* u_int32_t *)
unused0*, unused1*: INTEGER; flags, gen*: INTEGER; (* u_int32_t *)
unused2*, unused3*: LONGINT; birthtim: ARRAY 2 OF LONGINT;
END ; END ;
(* from /usr/include/bits/time.h (* from /usr/include/bits/time.h
@ -294,11 +299,26 @@ from man gettimeofday
PROCEDURE -includeStat() PROCEDURE -includeStat()
"#include <sys/stat.h>"; "#include <sys/stat.h>";
(* for jmp_buf *)
PROCEDURE -includeSetjmp()
"#include <setjmp.h>";
(* for dirent *)
PROCEDURE -includeDirent()
"#include <sys/dirent.h>";
(* for rusage *)
PROCEDURE -includeResource()
"#include <sys/resource.h>";
(* for iovec *)
PROCEDURE -includeIovec()
"#include <sys/uio.h>";
PROCEDURE -includeErrno() PROCEDURE -includeErrno()
"#include <errno.h>"; "#include <errno.h>";
(* for read(), write() and sleep() *) (* for read(), write() and sleep(), and fd_set *)
PROCEDURE -includeUnistd() PROCEDURE -includeUnistd()
"#include <unistd.h>"; "#include <unistd.h>";
@ -508,6 +528,30 @@ from man gettimeofday
PROCEDURE -SizeofStat(): INTEGER PROCEDURE -SizeofStat(): INTEGER
"sizeof(struct stat)"; "sizeof(struct stat)";
PROCEDURE -SizeofJmpBuf(): INTEGER
"sizeof(jmp_buf)";
PROCEDURE -SizeofSigJmpBuf(): INTEGER
"sizeof(sigjmp_buf)";
PROCEDURE -SizeofTimeval(): INTEGER
"sizeof(struct timeval)";
PROCEDURE -SizeofTimezone(): INTEGER
"sizeof(struct timezone)";
PROCEDURE -SizeofRusage(): INTEGER
"sizeof(struct rusage)";
PROCEDURE -SizeofFdSet(): INTEGER
"sizeof(fd_set)";
PROCEDURE -SizeofDirent(): INTEGER
"sizeof(struct dirent)";
PROCEDURE -SizeofIovec(): INTEGER
"sizeof(struct iovec)";
PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER) PROCEDURE -Error(msg: ARRAY OF CHAR; len: INTEGER)
"write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)"; "write(1/*stdout*/, msg, len); char ch = 0xa; write(1, &ch, 1)";
@ -521,9 +565,30 @@ from man gettimeofday
Exit(1); Exit(1);
END END
END StatCheck; END StatCheck;
(*
PROCEDURE Check;
BEGIN
Console.String("struct stat size: "); Console.Int(SizeofStat(), 0); Console.Ln;
Console.String("Unix.Stat size: "); Console.Int(SIZE(Status), 0); Console.Ln;
Console.String("Unix.JmpBuf size: "); Console.Int(SIZE(JmpBuf), 0); Console.Ln;
Console.String("sigjmp_buf size: "); Console.Int(SizeofSigJmpBuf(), 0); Console.Ln;
Console.String("Unix.Timeval size: "); Console.Int(SIZE(Timeval), 0); Console.Ln;
Console.String("struct timeval size: "); Console.Int(SizeofTimeval(), 0); Console.Ln;
Console.String("Unix.Timezone size: "); Console.Int(SIZE(Timezone), 0); Console.Ln;
Console.String("struct timezone size: "); Console.Int(SizeofTimezone(), 0); Console.Ln;
Console.String("Unix.Rusage size: "); Console.Int(SIZE(Rusage), 0); Console.Ln;
Console.String("struct rusage size: "); Console.Int(SizeofRusage(), 0); Console.Ln;
Console.String("Unix.FdSet size: "); Console.Int(SIZE(FdSet), 0); Console.Ln;
Console.String("fdset size: "); Console.Int(SizeofFdSet(), 0); Console.Ln;
Console.String("Unix.Dirent size: "); Console.Int(SIZE(Dirent), 0); Console.Ln;
Console.String("struct dirent size: "); Console.Int(SizeofDirent(), 0); Console.Ln;
Console.String("Unix.Iovec size: "); Console.Int(SIZE(Iovec), 0); Console.Ln;
Console.String("struct iovec size: "); Console.Int(SizeofIovec(), 0); Console.Ln;
END Check;
*)
BEGIN BEGIN
(*Check;*)
StatCheck(); StatCheck();
END Unix. END Unix.

View file

@ -63,7 +63,7 @@ END LinkMain;
BEGIN BEGIN
incPath0 := "src/lib/system/linux/"; incPath0 := "src/lib/system/openbsd/";
Strings.Append (compiler, incPath0); Strings.Append (compiler, incPath0);
incPath1 := "lib/voc/obj "; incPath1 := "lib/voc/obj ";
ccOpt := " -fPIC -g "; ccOpt := " -fPIC -g ";

View file

@ -1,5 +1,5 @@
MODULE prf; MODULE prf;
CONST prefix* = "/opt"; CONST prefix* = "/home/noch/local";
END prf. END prf.

View file

@ -8,7 +8,7 @@ VAR arch-, version-, date-, versionLong-, prefix0-, prefix- : ARRAY 256 OF CHAR;
defaultTarget* : INTEGER; defaultTarget* : INTEGER;
BEGIN BEGIN
arch := architecture.arch; arch := architecture.arch;
date := " [2015/02/02]"; date := " [2016/01/12]";
version := "1.1"; version := "1.1";
versionLong := ""; versionLong := "";
COPY(version, versionLong); COPY(version, versionLong);