diff options
-rw-r--r-- | config/var-def.mk | 1 | ||||
-rw-r--r-- | src/ChangeLog | 8 | ||||
-rw-r--r-- | src/interp/Makefile.in | 9 | ||||
-rw-r--r-- | src/interp/Makefile.pamphlet | 9 | ||||
-rw-r--r-- | src/interp/boot-pkg.lisp | 4 | ||||
-rw-r--r-- | src/interp/sys-driver.boot | 23 | ||||
-rw-r--r-- | src/interp/types.boot | 4 | ||||
-rw-r--r-- | src/lisp/core.lisp.in | 6 |
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 |