Merge pull request #99 from davidgiven/dtrg-ass
Bodge together a buildable em22 plat for use with int.
This commit is contained in:
commit
c9e5190a12
120 changed files with 427 additions and 165 deletions
5
Makefile
5
Makefile
|
@ -24,7 +24,7 @@ BUILDDIR = $(ACK_TEMP_DIR)/ack-build
|
||||||
|
|
||||||
# What build flags do you want to use for native code?
|
# What build flags do you want to use for native code?
|
||||||
|
|
||||||
CFLAGS = -g -Og -Wno-return-type
|
CFLAGS = -g -Wno-return-type
|
||||||
LDFLAGS =
|
LDFLAGS =
|
||||||
|
|
||||||
# Various commands.
|
# Various commands.
|
||||||
|
@ -72,7 +72,7 @@ BUILDSYSTEM = make
|
||||||
endif
|
endif
|
||||||
|
|
||||||
build-file = $(BUILDDIR)/build.$(BUILDSYSTEM)
|
build-file = $(BUILDDIR)/build.$(BUILDSYSTEM)
|
||||||
lua-files = $(shell find * -name '*.lua')
|
lua-files = $(shell find * -name 'build*.lua')
|
||||||
our-lua = $(BUILDDIR)/lua
|
our-lua = $(BUILDDIR)/lua
|
||||||
|
|
||||||
# GNU make sets MAKECMDGOALS to the list of targets from the command
|
# GNU make sets MAKECMDGOALS to the list of targets from the command
|
||||||
|
@ -109,6 +109,7 @@ $(build-file): first/ackbuilder.lua Makefile $(lua-files) $(our-lua)
|
||||||
@$(our-lua) first/ackbuilder.lua \
|
@$(our-lua) first/ackbuilder.lua \
|
||||||
first/build.lua build.lua \
|
first/build.lua build.lua \
|
||||||
--$(BUILDSYSTEM) \
|
--$(BUILDSYSTEM) \
|
||||||
|
LUA=$(our-lua) \
|
||||||
DEFAULT_PLATFORM=$(DEFAULT_PLATFORM) \
|
DEFAULT_PLATFORM=$(DEFAULT_PLATFORM) \
|
||||||
OBJDIR=$(OBJDIR) \
|
OBJDIR=$(OBJDIR) \
|
||||||
BINDIR=$(BINDIR) \
|
BINDIR=$(BINDIR) \
|
||||||
|
|
|
@ -16,6 +16,7 @@ vars.plats = {
|
||||||
"pc86",
|
"pc86",
|
||||||
"rpi",
|
"rpi",
|
||||||
"pdpv7",
|
"pdpv7",
|
||||||
|
"em22",
|
||||||
}
|
}
|
||||||
vars.plats_with_tests = {
|
vars.plats_with_tests = {
|
||||||
"linux68k",
|
"linux68k",
|
||||||
|
|
|
@ -150,6 +150,7 @@ definerule("clibrary",
|
||||||
hdrs = { type="targets", default={} },
|
hdrs = { type="targets", default={} },
|
||||||
deps = { type="targets", default={} },
|
deps = { type="targets", default={} },
|
||||||
_cfile = { type="object", default=cfile },
|
_cfile = { type="object", default=cfile },
|
||||||
|
suffix = { type="string", default=".o" },
|
||||||
commands = {
|
commands = {
|
||||||
type="strings",
|
type="strings",
|
||||||
default={
|
default={
|
||||||
|
@ -167,6 +168,7 @@ definerule("clibrary",
|
||||||
cwd = e.cwd,
|
cwd = e.cwd,
|
||||||
srcs = {src},
|
srcs = {src},
|
||||||
deps = e.deps,
|
deps = e.deps,
|
||||||
|
suffix = e.suffix,
|
||||||
vars = {
|
vars = {
|
||||||
["+cflags"] = { "-I"..e.cwd, },
|
["+cflags"] = { "-I"..e.cwd, },
|
||||||
},
|
},
|
||||||
|
|
|
@ -123,7 +123,7 @@ int _ioeof(int channel)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _close(void)
|
void _closeall(void)
|
||||||
{
|
{
|
||||||
/* close all open files */
|
/* close all open files */
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -207,7 +207,7 @@ clearstmt { int exp; }
|
||||||
;
|
;
|
||||||
|
|
||||||
closestmt: filelist
|
closestmt: filelist
|
||||||
| /* empty */ { C_cal("_close"); }
|
| /* empty */ { C_cal("_closeall"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
filelist { int intv; }
|
filelist { int intv; }
|
||||||
|
|
|
@ -71,11 +71,12 @@ for _, plat in ipairs(vars.plats) do
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local suffix = plat:find("^em") and "m" or "o"
|
||||||
installable {
|
installable {
|
||||||
name = "pkg_"..plat,
|
name = "pkg_"..plat,
|
||||||
map = {
|
map = {
|
||||||
"lang/cem/libcc.ansi/headers+pkg",
|
"lang/cem/libcc.ansi/headers+pkg",
|
||||||
["$(PLATIND)/"..plat.."/c-ansi.o"] = "+crt_"..plat,
|
["$(PLATIND)/"..plat.."/c-ansi."..suffix] = "+crt_"..plat,
|
||||||
["$(PLATIND)/"..plat.."/libc.a"] = "+lib_"..plat,
|
["$(PLATIND)/"..plat.."/libc.a"] = "+lib_"..plat,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ extern void _close(int);
|
||||||
|
|
||||||
#define FAIL 127
|
#define FAIL 127
|
||||||
|
|
||||||
extern const char **_penvp;
|
extern const char **environ;
|
||||||
static const char *exec_tab[] = {
|
static const char *exec_tab[] = {
|
||||||
"sh", /* argv[0] */
|
"sh", /* argv[0] */
|
||||||
"-c", /* argument to the shell */
|
"-c", /* argument to the shell */
|
||||||
|
@ -39,7 +39,7 @@ system(const char *str)
|
||||||
_close(i);
|
_close(i);
|
||||||
if (!str) str = "cd ."; /* just testing for a shell */
|
if (!str) str = "cd ."; /* just testing for a shell */
|
||||||
exec_tab[2] = str; /* fill in command */
|
exec_tab[2] = str; /* fill in command */
|
||||||
_execve("/bin/sh", exec_tab, _penvp);
|
_execve("/bin/sh", exec_tab, environ);
|
||||||
/* get here if execve fails ... */
|
/* get here if execve fails ... */
|
||||||
_exit(FAIL); /* see manual page */
|
_exit(FAIL); /* see manual page */
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
tail_mon.a
|
|
||||||
exit.c
|
|
||||||
gtty.c
|
|
||||||
signal.c
|
|
||||||
stty.c
|
|
||||||
tell.c
|
|
||||||
time.c
|
|
||||||
cleanup.c
|
|
||||||
access.e
|
|
||||||
acct.e
|
|
||||||
alarm.e
|
|
||||||
brk.e
|
|
||||||
chdir.e
|
|
||||||
chmod.e
|
|
||||||
chown.e
|
|
||||||
chroot.e
|
|
||||||
close.e
|
|
||||||
creat.e
|
|
||||||
dup.e
|
|
||||||
dup2.e
|
|
||||||
execl.e
|
|
||||||
execle.e
|
|
||||||
execv.e
|
|
||||||
execve.e
|
|
||||||
fork.e
|
|
||||||
fstat.e
|
|
||||||
ftime.e
|
|
||||||
getegid.e
|
|
||||||
geteuid.e
|
|
||||||
getgid.e
|
|
||||||
getpid.e
|
|
||||||
getuid.e
|
|
||||||
ioctl.e
|
|
||||||
kill.e
|
|
||||||
link.e
|
|
||||||
lock.e
|
|
||||||
lseek.e
|
|
||||||
mknod.e
|
|
||||||
mount.e
|
|
||||||
mpxcall.e
|
|
||||||
nice.e
|
|
||||||
open.e
|
|
||||||
pause.e
|
|
||||||
pipe.e
|
|
||||||
prof.e
|
|
||||||
ptrace.e
|
|
||||||
read.e
|
|
||||||
sbrk.e
|
|
||||||
setgid.e
|
|
||||||
setuid.e
|
|
||||||
setsig.e
|
|
||||||
sigtrp.e
|
|
||||||
stat.e
|
|
||||||
stime.e
|
|
||||||
sync.e
|
|
||||||
times.e
|
|
||||||
umask.e
|
|
||||||
umount.e
|
|
||||||
unlink.e
|
|
||||||
utime.e
|
|
||||||
wait.e
|
|
||||||
write.e
|
|
||||||
errno.e
|
|
||||||
_alarm.e
|
|
||||||
_brk.e
|
|
||||||
_close.e
|
|
||||||
_creat.e
|
|
||||||
_dup.e
|
|
||||||
_dup2.e
|
|
||||||
_execl.e
|
|
||||||
_execve.e
|
|
||||||
_exit.e
|
|
||||||
_fork.e
|
|
||||||
_fstat.e
|
|
||||||
_ftime.e
|
|
||||||
_getpid.e
|
|
||||||
_gtty.c
|
|
||||||
_stty.c
|
|
||||||
_ioctl.e
|
|
||||||
_kill.e
|
|
||||||
_link.e
|
|
||||||
_lseek.e
|
|
||||||
_open.e
|
|
||||||
_pause.e
|
|
||||||
_pipe.e
|
|
||||||
_read.e
|
|
||||||
_sbrk.e
|
|
||||||
_times.e
|
|
||||||
_unlink.e
|
|
||||||
_wait.e
|
|
||||||
_write.e
|
|
|
@ -1,2 +0,0 @@
|
||||||
/* $Id$ */
|
|
||||||
_cleanup(){}
|
|
|
@ -45,10 +45,11 @@ for _, plat in ipairs(vars.plats) do
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local suffix = plat:find("^em") and "m" or "o"
|
||||||
installable {
|
installable {
|
||||||
name = "pkg_"..plat,
|
name = "pkg_"..plat,
|
||||||
map = {
|
map = {
|
||||||
["$(PLATIND)/"..plat.."/modula2.o"] = "+mrt_"..plat,
|
["$(PLATIND)/"..plat.."/modula2."..suffix] = "+mrt_"..plat,
|
||||||
["$(PLATIND)/"..plat.."/libmodula2.a"] = "+lib_"..plat,
|
["$(PLATIND)/"..plat.."/libmodula2.a"] = "+lib_"..plat,
|
||||||
"+headers",
|
"+headers",
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,6 +93,6 @@ killbss()
|
||||||
extern int catch();
|
extern int catch();
|
||||||
|
|
||||||
int (*handler)() = catch;
|
int (*handler)() = catch;
|
||||||
char **argv = 0, **environ = 0;
|
char **argv = 0;
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
char *MainLB = 0;
|
char *MainLB = 0;
|
||||||
|
|
|
@ -33,10 +33,11 @@ for _, plat in ipairs(vars.plats) do
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local suffix = plat:find("^em") and "m" or "o"
|
||||||
installable {
|
installable {
|
||||||
name = "pkg_"..plat,
|
name = "pkg_"..plat,
|
||||||
map = {
|
map = {
|
||||||
["$(PLATIND)/"..plat.."/pascal.o"] = "+prt_"..plat,
|
["$(PLATIND)/"..plat.."/pascal."..suffix] = "+prt_"..plat,
|
||||||
["$(PLATIND)/"..plat.."/libpascal.a"] = "+lib_"..plat,
|
["$(PLATIND)/"..plat.."/libpascal.a"] = "+lib_"..plat,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
# $Revision$
|
|
||||||
var w=2
|
|
||||||
var p=2
|
|
||||||
var s=2
|
|
||||||
var l=4
|
|
||||||
var f=4
|
|
||||||
var d=8
|
|
||||||
var M=em22
|
|
||||||
var NAME=em22
|
|
||||||
var LIB=lib/em22/tail_
|
|
||||||
var RT=lib/em22/head_
|
|
||||||
var SIZE_FLAG=
|
|
||||||
var CPP_F=-D__unix
|
|
||||||
var INCLUDES=-I{EM}/include/_tail_mon
|
|
||||||
var C_LIB={EM}/{LIB}cc.1s {EM}/{LIB}cc.2g
|
|
||||||
var OLD_C_LIB={C_LIB}
|
|
||||||
name asld
|
|
||||||
from .k.m.a.g
|
|
||||||
to .out
|
|
||||||
outfile e.out
|
|
||||||
program {EM}/lib.bin/em_ass
|
|
||||||
mapflag -l* LNAME={EM}/{LIB}*
|
|
||||||
mapflag -+* ASS_F={ASS_F?} -+*
|
|
||||||
mapflag --* ASS_F={ASS_F?} --*
|
|
||||||
mapflag -s* SIZE_FLAG=-s*
|
|
||||||
mapflag -ansi C_LIB={EM}/{LIB}ac
|
|
||||||
args {SIZE_FLAG} \
|
|
||||||
({RTS}:.ocm.bas={EM}/{RT}cc) \
|
|
||||||
({RTS}{ANSI?}:.c={EM}/{RT}cc) \
|
|
||||||
({RTS}{ANSI?}:.cansi={EM}/{RT}ac) \
|
|
||||||
({RTS}:.mod={EM}/{RT}m2) \
|
|
||||||
({RTS}:.p={EM}/{RT}pc) \
|
|
||||||
-o > < \
|
|
||||||
(.p:{TAIL}={EM}/{LIB}pc) \
|
|
||||||
(.bas:{TAIL}={EM}/{LIB}bc) \
|
|
||||||
(.ocm:{TAIL}={EM}/{LIB}ocm) \
|
|
||||||
(.mod:{TAIL}={EM}/{LIB}m2) \
|
|
||||||
(.ocm.bas:{TAIL}={OLD_C_LIB}) \
|
|
||||||
(.c:{TAIL}={C_LIB}) \
|
|
||||||
(.b.c.ocm.mod.p.e:{TAIL}={EM}/{LIB}mon) \
|
|
||||||
({RTS}{ANSI?}:.cansi={EM}/lib/em22/end_em)
|
|
||||||
linker
|
|
||||||
end
|
|
8
mach/em22/libem/build.lua
Normal file
8
mach/em22/libem/build.lua
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
for _, plat in ipairs(vars.plats) do
|
||||||
|
acklibrary {
|
||||||
|
name = "lib_"..plat,
|
||||||
|
srcs = { "./*.e" },
|
||||||
|
vars = { plat = plat },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
7
mach/em22/libem/dummy.e
Normal file
7
mach/em22/libem/dummy.e
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#
|
||||||
|
|
||||||
|
mes 2,_EM_WSIZE,_EM_PSIZE
|
||||||
|
|
||||||
|
pro $__this_function_is_never_called,0
|
||||||
|
end 0
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
end_e.a
|
|
||||||
edata.e
|
|
||||||
em_end.e
|
|
||||||
end.e
|
|
||||||
etext.e
|
|
8
mach/em22/libend/build.lua
Normal file
8
mach/em22/libend/build.lua
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
for _, plat in ipairs(vars.plats) do
|
||||||
|
acklibrary {
|
||||||
|
name = "lib_"..plat,
|
||||||
|
srcs = { "./*.e" },
|
||||||
|
vars = { plat = plat },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
|
@ -8,10 +8,12 @@ definerule("ackfile",
|
||||||
{
|
{
|
||||||
srcs = { type="targets" },
|
srcs = { type="targets" },
|
||||||
deps = { type="targets", default={} },
|
deps = { type="targets", default={} },
|
||||||
suffix = { type="string", default=".o" },
|
suffix = { type="string", optional=true },
|
||||||
},
|
},
|
||||||
function (e)
|
function (e)
|
||||||
local c = (e.suffix == ".o" and "-c" or "-c"..e.suffix)
|
local em = e.vars.plat:find("^em")
|
||||||
|
local suffix = e.suffix or (em and ".m" or ".o")
|
||||||
|
local c = "-c"..suffix
|
||||||
local plat = e.vars.plat
|
local plat = e.vars.plat
|
||||||
|
|
||||||
return cfile {
|
return cfile {
|
||||||
|
@ -30,7 +32,7 @@ definerule("ackfile",
|
||||||
"util/misc+pkg",
|
"util/misc+pkg",
|
||||||
e.deps
|
e.deps
|
||||||
},
|
},
|
||||||
suffix = e.suffix,
|
suffix = suffix,
|
||||||
commands = {
|
commands = {
|
||||||
"ACKDIR=$(INSDIR) $(INSDIR)/bin/ack -m%{plat} "..c.." -o %{outs} %{ins} %{hdrpaths} %{ackcflags}"
|
"ACKDIR=$(INSDIR) $(INSDIR)/bin/ack -m%{plat} "..c.." -o %{outs} %{ins} %{hdrpaths} %{ackcflags}"
|
||||||
}
|
}
|
||||||
|
@ -45,6 +47,7 @@ definerule("acklibrary",
|
||||||
deps = { type="targets", default={} },
|
deps = { type="targets", default={} },
|
||||||
},
|
},
|
||||||
function (e)
|
function (e)
|
||||||
|
local em = e.vars.plat:find("^em")
|
||||||
return clibrary {
|
return clibrary {
|
||||||
name = e.name,
|
name = e.name,
|
||||||
srcs = e.srcs,
|
srcs = e.srcs,
|
||||||
|
@ -54,6 +57,7 @@ definerule("acklibrary",
|
||||||
e.deps
|
e.deps
|
||||||
},
|
},
|
||||||
_cfile = ackfile,
|
_cfile = ackfile,
|
||||||
|
suffix = em and ".m" or ".o",
|
||||||
commands = {
|
commands = {
|
||||||
"rm -f %{outs[1]}",
|
"rm -f %{outs[1]}",
|
||||||
"ACKDIR=$(INSDIR) $(INSDIR)/bin/aal qc %{outs[1]} %{ins}"
|
"ACKDIR=$(INSDIR) $(INSDIR)/bin/aal qc %{outs[1]} %{ins}"
|
||||||
|
@ -101,6 +105,7 @@ definerule("build_plat_libs",
|
||||||
{
|
{
|
||||||
arch = { type="string" },
|
arch = { type="string" },
|
||||||
plat = { type="string" },
|
plat = { type="string" },
|
||||||
|
em = { type="boolean", default=false },
|
||||||
},
|
},
|
||||||
function(e)
|
function(e)
|
||||||
local installmap = {
|
local installmap = {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
mes 2,EM_WSIZE,EM_PSIZE
|
mes 2,EM_WSIZE,EM_PSIZE
|
||||||
exp $_execl
|
exp $_execl
|
||||||
pro $_execl,0
|
pro $_execl,0
|
||||||
lae _penvp
|
lae environ
|
||||||
loi EM_PSIZE
|
loi EM_PSIZE
|
||||||
lal EM_PSIZE
|
lal EM_PSIZE
|
||||||
lal 0
|
lal 0
|
|
@ -2,7 +2,7 @@
|
||||||
mes 2,EM_WSIZE,EM_PSIZE
|
mes 2,EM_WSIZE,EM_PSIZE
|
||||||
exp $execl
|
exp $execl
|
||||||
pro $execl,0
|
pro $execl,0
|
||||||
lae _penvp
|
lae environ
|
||||||
loi EM_PSIZE
|
loi EM_PSIZE
|
||||||
lal EM_PSIZE
|
lal EM_PSIZE
|
||||||
lal 0
|
lal 0
|
|
@ -2,7 +2,7 @@
|
||||||
mes 2,EM_WSIZE,EM_PSIZE
|
mes 2,EM_WSIZE,EM_PSIZE
|
||||||
exp $execv
|
exp $execv
|
||||||
pro $execv,0
|
pro $execv,0
|
||||||
lae _penvp
|
lae environ
|
||||||
loi EM_PSIZE
|
loi EM_PSIZE
|
||||||
lal 0
|
lal 0
|
||||||
loi 2*EM_PSIZE
|
loi 2*EM_PSIZE
|
12
plat/em/libsys/isatty.c
Normal file
12
plat/em/libsys/isatty.c
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
/* $Id$ */
|
||||||
|
isatty(f)
|
||||||
|
{
|
||||||
|
char buf[128];
|
||||||
|
/* not a sgttyb struct; it might not be large enough;
|
||||||
|
I know for a fact that it is'nt large enough on PC/IX,
|
||||||
|
where gtty is an ioctl(..., TCGETA, ...)
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (gtty(f, buf) < 0) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue