mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 05:12:26 +00:00
parent
10e2d4c807
commit
f3089c9942
6 changed files with 90 additions and 23 deletions
|
|
@ -1 +1 @@
|
||||||
/opt/voc-1.1/lib
|
/home/noch/local/voc-1.1/lib
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -170,28 +170,33 @@ TYPE
|
||||||
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)";
|
||||||
|
|
||||||
|
|
@ -516,14 +560,35 @@ from man gettimeofday
|
||||||
BEGIN
|
BEGIN
|
||||||
x := SizeofUnixStat();
|
x := SizeofUnixStat();
|
||||||
y := SizeofStat();
|
y := SizeofStat();
|
||||||
IF x # y THEN
|
IF x # y THEN
|
||||||
Error("Unix.StatCheck: inconsistent usage of struct stat", 49);
|
Error("Unix.StatCheck: inconsistent usage of struct stat", 49);
|
||||||
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.
|
||||||
|
|
|
||||||
|
|
@ -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 ";
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE prf;
|
MODULE prf;
|
||||||
|
|
||||||
CONST prefix* = "/opt";
|
CONST prefix* = "/home/noch/local";
|
||||||
|
|
||||||
END prf.
|
END prf.
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue