aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-08-16 02:07:12 +0000
committerdos-reis <gdr@axiomatics.org>2008-08-16 02:07:12 +0000
commit40777fd4db18e8656ae53dd4df9112b42df329db (patch)
tree662f7d7c54141bdbf755b492aee0a215e6f6441c /src/interp
parent8c851d2dca0a8d98953b7a2fa4c6d642c98fc11f (diff)
downloadopen-axiom-40777fd4db18e8656ae53dd4df9112b42df329db.tar.gz
* lisp/core.lisp.in (|%basicSystemIsComplete|): New. Export.
(|link|): Use prologue for all systems. * interp/sys-driver.boot (systemMain): New. Break from restart(). (restart): Tidy. * interp/boot-pkg.lisp: Don't push :OPEN-AXIOM-BOOT-COMPLETE.
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/Makefile.in9
-rw-r--r--src/interp/Makefile.pamphlet9
-rw-r--r--src/interp/boot-pkg.lisp4
-rw-r--r--src/interp/sys-driver.boot23
-rw-r--r--src/interp/types.boot4
5 files changed, 30 insertions, 19 deletions
diff --git a/src/interp/Makefile.in b/src/interp/Makefile.in
index 72fe016a..a0aa0311 100644
--- a/src/interp/Makefile.in
+++ b/src/interp/Makefile.in
@@ -190,8 +190,7 @@ makeint.lisp: Makefile
@ echo '(in-package "BOOT")' >> makeint.lisp
@ touch ${TIMESTAMP}
@ echo '${YEARWEEK}' >> makeint.lisp
- @ echo '(build-interpsys (quote ($(patsubst %, "%", ${TRANOBJS}))) (quote ($(patsubst %, "%", ${ASAUTO}))))' >> makeint.lisp
- @ echo '(|clearClams|)' >> makeint.lisp
+ @ echo '(unless (|%basicSystemIsComplete|) (build-interpsys (quote ($(patsubst %, "%", ${TRANOBJS}))) (quote ($(patsubst %, "%", ${ASAUTO}))))(|clearClams|))' >> makeint.lisp
@ echo '#+:akcl (setq compiler::*suppress-compiler-notes* t)' >> makeint.lisp
@ echo '#+:akcl (si::gbc-time 0)' >> makeint.lisp
@ echo '#+:GCL (si::gbc t)' >> makeint.lisp
@@ -202,7 +201,8 @@ ${SAVESYS}: database.date \
$(ASAUTO) $(TRANOBJS) $(OBJS) makeint.$(LNKEXT)
$(BOOTSYS) -- --system="$(AXIOM)/" --system-algebra \
--sysalg="$(axiom_src_datadir)/algebra/" \
- --make --output=$@ --main="BOOT::|restart|" \
+ --prologue="(pushnew :open-axiom-basic-system *features*)" \
+ --make --output=$@ --main="BOOT::|systemMain|" \
--load-directory=. $(OBJS) makeint.$(LNKEXT)
@ echo 6 $@ created
$(mkdir_p) $(axiom_target_bindir)
@@ -217,7 +217,8 @@ ${AXIOMSYS}: database.date \
$(BOOTSYS) -- \
--system="$(AXIOM)/" \
--sysalg="$(axiom_targetdir)/algebra/" \
- --make --output=$@ --main="BOOT::|restart|" \
+ --prologue="(pushnew :open-axiom-basic-system *features*)" \
+ --make --output=$@ --main="BOOT::|systemMain|" \
--load-directory=. $(OBJS) makeint.$(LNKEXT)
@ echo 6a $@ created
exposed.lsp: $(axiom_src_algdir)/exposed.lsp.pamphlet
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index e7d373d0..d0eccf14 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -343,8 +343,7 @@ makeint.lisp: Makefile
@ echo '(in-package "BOOT")' >> makeint.lisp
@ touch ${TIMESTAMP}
@ echo '${YEARWEEK}' >> makeint.lisp
- @ echo '(build-interpsys (quote ($(patsubst %, "%", ${TRANOBJS}))) (quote ($(patsubst %, "%", ${ASAUTO}))))' >> makeint.lisp
- @ echo '(|clearClams|)' >> makeint.lisp
+ @ echo '(unless (|%basicSystemIsComplete|) (build-interpsys (quote ($(patsubst %, "%", ${TRANOBJS}))) (quote ($(patsubst %, "%", ${ASAUTO}))))(|clearClams|))' >> makeint.lisp
@ echo '#+:akcl (setq compiler::*suppress-compiler-notes* t)' >> makeint.lisp
@ echo '#+:akcl (si::gbc-time 0)' >> makeint.lisp
@ echo '#+:GCL (si::gbc t)' >> makeint.lisp
@@ -355,7 +354,8 @@ ${SAVESYS}: database.date \
$(ASAUTO) $(TRANOBJS) $(OBJS) makeint.$(LNKEXT)
$(BOOTSYS) -- --system="$(AXIOM)/" --system-algebra \
--sysalg="$(axiom_src_datadir)/algebra/" \
- --make --output=$@ --main="BOOT::|restart|" \
+ --prologue="(pushnew :open-axiom-basic-system *features*)" \
+ --make --output=$@ --main="BOOT::|systemMain|" \
--load-directory=. $(OBJS) makeint.$(LNKEXT)
@ echo 6 $@ created
$(mkdir_p) $(axiom_target_bindir)
@@ -380,7 +380,8 @@ ${AXIOMSYS}: database.date \
$(BOOTSYS) -- \
--system="$(AXIOM)/" \
--sysalg="$(axiom_targetdir)/algebra/" \
- --make --output=$@ --main="BOOT::|restart|" \
+ --prologue="(pushnew :open-axiom-basic-system *features*)" \
+ --make --output=$@ --main="BOOT::|systemMain|" \
--load-directory=. $(OBJS) makeint.$(LNKEXT)
@ echo 6a $@ created
@
diff --git a/src/interp/boot-pkg.lisp b/src/interp/boot-pkg.lisp
index 0cf0aa1b..5cb96d12 100644
--- a/src/interp/boot-pkg.lisp
+++ b/src/interp/boot-pkg.lisp
@@ -53,10 +53,6 @@
(defun define-function (f v)
(setf (symbol-function f) v)))
-;; The Boot system is certainly completed by now.
-(pushnew :open-axiom-boot-complete *features*)
-
-
;; Below are some missing functions. There here for lack of better
;; place (sys-funs.lisp?)
;;
diff --git a/src/interp/sys-driver.boot b/src/interp/sys-driver.boot
index f620ea09..e64c42d7 100644
--- a/src/interp/sys-driver.boot
+++ b/src/interp/sys-driver.boot
@@ -1,5 +1,7 @@
-- Copyright (C) 2007-2008 Gabriel Dos Reis
-- All rights reserved.
+-- Copyright (C) 2007-2008, Gabriel Dos Reis.
+-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are
@@ -149,13 +151,6 @@ RESTART0() ==
++
restart() ==
- IN_-PACKAGE '"BOOT" -- ??? is this still necessary?
- -- ??? Ideally, we should not be calling AxiomCore::topLevel.
- -- ??? Rather, we should be called by that function. Therefore
- -- ??? it currently serves only for option processing and we cannot
- -- ??? do any substantial work if we call from it.
- AxiomCore::topLevel()
- REROOT()
)if %hasFeature KEYWORD::GCL
SYSTEM::GBC_-TIME 0
)endif
@@ -234,3 +229,17 @@ buildDatabasesHandler(prog,options,args) ==
coreQuit(errorCount() > 0 => 1; 0)
installDriver(Option '"build-databases",function buildDatabasesHandler)
+
+--%
+
+++ Main entry point to the system.
+systemMain() ==
+ IN_-PACKAGE '"BOOT" -- ??? is this still necessary?
+ -- ??? Ideally, we should not be calling AxiomCore::topLevel.
+ -- ??? Rather, we should be called by that function. Therefore
+ -- ??? it currently serves only for option processing and we cannot
+ -- ??? do any substantial work if we call from it.
+ AxiomCore::topLevel()
+ REROOT()
+ %basicSystemIsComplete() => restart()
+ fatalError '"fell off systemMain"
diff --git a/src/interp/types.boot b/src/interp/types.boot
index 2ebd6f5b..748e5070 100644
--- a/src/interp/types.boot
+++ b/src/interp/types.boot
@@ -113,8 +113,12 @@ namespace BOOT
%Env <=> %List -- compiling env
%Mode <=> %Symbol or %String or %List -- type of forms
%Code <=> %Form -- generated code
+)if %hasFeature KEYWORD::ECL
+%Triple <=> %List -- ??? ECL has trouble with the spec below
+)else
%Triple <=> -- form + type + env
cons(%Code,cons(%Mode,cons(%Env,null)))
+)endif
%Signature -- signature
<=> %Symbol or cons