aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/var-def.mk1
-rw-r--r--src/ChangeLog8
-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
-rw-r--r--src/lisp/core.lisp.in6
8 files changed, 44 insertions, 20 deletions
diff --git a/config/var-def.mk b/config/var-def.mk
index 194a427a..83fcdc50 100644
--- a/config/var-def.mk
+++ b/config/var-def.mk
@@ -133,6 +133,7 @@ STAMP = echo timestamp >
quiet_flags = @axiom_quiet_flags@
eval_flags = @axiom_eval_flags@
+oa_standard_linking = @oa_standard_linking@
## Absolute path to the toplevel source directory for OpenAxiom. This is
diff --git a/src/ChangeLog b/src/ChangeLog
index 7056f856..e1be1190 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,13 @@
2008-08-15 Gabriel Dos Reis <gdr@cs.tamu.edu>
+ * 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.
+
+2008-08-15 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
* lisp/core.lisp.in (|$StandardLinking|): New. Export.
* lisp/Makefile.in (edit): Update.
* interp/daase.lisp: Don't load initial databases when
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
diff --git a/src/lisp/core.lisp.in b/src/lisp/core.lisp.in
index 27f0dd41..bfa3aad9 100644
--- a/src/lisp/core.lisp.in
+++ b/src/lisp/core.lisp.in
@@ -68,6 +68,7 @@
"%hasFeature"
"%systemOptions"
"%systemArguments"
+ "%basicSystemIsComplete"
"$hostPlatform"
"$buildPlatform"
@@ -132,6 +133,9 @@
(defun boot-completed-p nil
(member :open-axiom-boot *features*))
+(defun |%basicSystemIsComplete| nil
+ (member :open-axiom-basic-system *features*))
+
;;
;; -*- Hosting Lisp System -*-
;;
@@ -570,11 +574,11 @@
;; this point. You have been warned.
(defun |link| (core-image lisp-files
&optional (entry-point nil) (prologue nil))
- #-:ecl (declare (ignore prologue))
(if (and entry-point (stringp entry-point))
(setq entry-point `(read-from-string ,entry-point)))
#-:ecl (progn
(mapcar #'(lambda (p) (|loadOrElse| p)) lisp-files)
+ (eval prologue)
(|saveCore| core-image entry-point))
#+:ecl (progn
(unless entry-point