aboutsummaryrefslogtreecommitdiff
path: root/src/lisp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-10-10 07:22:10 +0000
committerdos-reis <gdr@axiomatics.org>2007-10-10 07:22:10 +0000
commit371a162e7759102786eca794c46ac28c3dc68789 (patch)
tree1b74574099c7481abf1e59fa54e4a02212d51ace /src/lisp
parentec3275dadba53ec37908b049d11833f20f5dc857 (diff)
downloadopen-axiom-371a162e7759102786eca794c46ac28c3dc68789.tar.gz
2007-10-10 Gabriel Dos Reis <gdr@cs.tamu.edu>
* configure.ac.pamphlet: Tidy. Don't instantiate src/lisp/core.lisp. * configure.ac: Regenerate. * configure: Likewise. * config/var-def.mk (open_axiom_installdir): New. (AXIOM): Support versioning. * Makefile.pamphlet (install): Tidy. Remove sections on SPAD and SYS variables. * Makefile.in: Regenerate. src/algebra/ 2007-10-10 Gabriel Dos Reis <gdr@cs.tamu.edu> * Makefile.pamphlet (INTERPSYS): Now take system root directory and algebra directory as arguments. * Makefile.in: Regenerate. src/etc/ 2007-10-10 Gabriel Dos Reis <gdr@cs.tamu.edu> * Makefile.pamphlet (INTERPSYS): Take system root directory and algebra directory as arguments. * Makefile.in: Regenerate. src/interp/ 2007-10-10 Gabriel Dos Reis <gdr@cs.tamu.edu> * bookvol5.pamphlet (initroot): Use |systemRootDirectory| instead of environment variable AXIOM. (|loadExposureGroupData|): Likewise. * br-data.boot.pamphlet (dbHasExamplePage): Likewise. (dbRead): Likewise. (dbReadComments): Likewise. (buildGloss): Likewise. * br-saturn.boot.pamphlet (getSaturnExampleList): Likewise. * br-search.boot.pamphlet (grepSplit): Likewise. * daase.lisp.pamphlet (asharp): Likewise. (initial-getdatabase): Likewise. (DaaseName): Likewise. (create-initializers): Likewise. * ht-root.boot.pamphlet (htGlossPage): Likewise. * htcheck.boot.pamphlet (buildHtMacroTable): Likewise. * i-syscmd.boot.pamphlet (summary): Likewise. (copyright): Likewise. * patches.lisp.pamphlet (restart0): Likewise. * util.lisp.pamphlet (sourcepath): Likewise. * Makefile.pamphlet (OBJS): Include sys-driver.$(FASLEXT). (${SAVESYS}): Tidy. (${AXIOMSYS}): Likewise. (${DEPSYS}): Depend on sys-driver.$(FASLEXT). Load it. (sys-driver.$(FASLEXT)): New rule. * Makefile.in: Regenerate. * sys-driver.boot: New. src/lisp/ 2007-10-10 Gabriel Dos Reis <gdr@cs.tamu.edu> * core.lisp.in (|%systemOptions|): New. (|%systemArguments|): Likewise. (|$systemInstallationDirectory|): Likewise. (|$sysOpts|): Likewise. (|$sysArgs|): Likewise. (|handleCommandLine|): Tidy. (|printUsage|): Update. * Makefile.pamphlet (core.lisp): Instantiate here. src/script/ 2007-10-10 Gabriel Dos Reis <gdr@cs.tamu.edu> * axiom.in (AXIOM): Use value substituted by Autoconf. Remove dead code.
Diffstat (limited to 'src/lisp')
-rw-r--r--src/lisp/ChangeLog11
-rw-r--r--src/lisp/Makefile.in14
-rw-r--r--src/lisp/Makefile.pamphlet14
-rw-r--r--src/lisp/core.lisp.in55
4 files changed, 75 insertions, 19 deletions
diff --git a/src/lisp/ChangeLog b/src/lisp/ChangeLog
index 10c3a1ee..14dc4c84 100644
--- a/src/lisp/ChangeLog
+++ b/src/lisp/ChangeLog
@@ -1,3 +1,14 @@
+2007-10-10 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * core.lisp.in (|%systemOptions|): New.
+ (|%systemArguments|): Likewise.
+ (|$systemInstallationDirectory|): Likewise.
+ (|$sysOpts|): Likewise.
+ (|$sysArgs|): Likewise.
+ (|handleCommandLine|): Tidy.
+ (|printUsage|): Update.
+ * Makefile.pamphlet (core.lisp): Instantiate here.
+
2007-09-24 Gabriel Dos Reis <gdr@cs.tamu.edu>
* core.lisp.in (|handleCommandLine|): Return truthvalue on success.
diff --git a/src/lisp/Makefile.in b/src/lisp/Makefile.in
index d24514e0..870a838d 100644
--- a/src/lisp/Makefile.in
+++ b/src/lisp/Makefile.in
@@ -79,9 +79,19 @@ base-lisp$(EXEEXT): core.$(FASLEXT)
$(eval_flags) '(load "core")' \
$(eval_flags) '(|AxiomCore|::|link| "$@" (quote nil) (function |AxiomCore|::|topLevel|))'
+
+axiom_optimize_options = @axiom_optimize_options@
+
+edit = sed \
+ -e 's|@open_axiom_installdir[@]|$(open_axiom_installdir)|g' \
+ -e 's|@axiom_optimize_options[@]|$(axiom_optimize_options)|g' \
+ -e 's|@host[@]|$(host)|g' \
+ -e 's|@build[@]|$(build)|g' \
+ -e 's|@target[@]|$(target)|g'
+
core.lisp: $(srcdir)/core.lisp.in
- cd $(top_builddir) && \
- $(SHELL) ./config.status src/lisp/core.lisp
+ $(edit) $< > $@.tmp
+ $(top_srcdir)/config/move-if-change $@.tmp $@
core.$(FASLEXT): core.lisp
$(AXIOM_LISP) $(quiet_flags) \
diff --git a/src/lisp/Makefile.pamphlet b/src/lisp/Makefile.pamphlet
index aaef2495..76809b71 100644
--- a/src/lisp/Makefile.pamphlet
+++ b/src/lisp/Makefile.pamphlet
@@ -66,9 +66,19 @@ base-lisp$(EXEEXT): core.$(FASLEXT)
$(eval_flags) '(load "core")' \
$(eval_flags) '(|AxiomCore|::|link| "$@" (quote nil) (function |AxiomCore|::|topLevel|))'
+
+axiom_optimize_options = @axiom_optimize_options@
+
+edit = sed \
+ -e 's|@open_axiom_installdir[@]|$(open_axiom_installdir)|g' \
+ -e 's|@axiom_optimize_options[@]|$(axiom_optimize_options)|g' \
+ -e 's|@host[@]|$(host)|g' \
+ -e 's|@build[@]|$(build)|g' \
+ -e 's|@target[@]|$(target)|g'
+
core.lisp: $(srcdir)/core.lisp.in
- cd $(top_builddir) && \
- $(SHELL) ./config.status src/lisp/core.lisp
+ $(edit) $< > $@.tmp
+ $(top_srcdir)/config/move-if-change $@.tmp $@
core.$(FASLEXT): core.lisp
$(AXIOM_LISP) $(quiet_flags) \
diff --git a/src/lisp/core.lisp.in b/src/lisp/core.lisp.in
index 1cdf990c..3a5ef1ee 100644
--- a/src/lisp/core.lisp.in
+++ b/src/lisp/core.lisp.in
@@ -62,11 +62,15 @@
"warn"
"%hasFeature"
+ "%systemOptions"
+ "%systemArguments"
"$hostPlatform"
"$buildPlatform"
"$targetPlatform"
+ "$systemInstallationDirectory"
+
"getCommandLineArguments"
"processCommandLine"
"handleCommandLine"
@@ -96,6 +100,12 @@
(defconstant |$buildPlatform| "@build@")
(defconstant |$targetPlatform| "@target@")
+;; The directory that contains the final installation directory, as
+;; specified at configuration time (or in exoteric cases, as overriden
+;; on the Make command line).
+(defconstant |$systemInstallationDirectory|
+ "@open_axiom_installdir@/")
+
;; Lisp compiler optimization settings.
(proclaim '(optimize @axiom_optimize_options@))
@@ -144,6 +154,8 @@
;; Ideally we want to handle
;; --help: just print a help menu and exit
;; --version: Print version information and exit
+;; --system=<dir>: specify <dir> as the root directory
+;; --sysalg=<dir>: specify <dir> as directory containing algebras
;; --compile: boot or lisp files
;; --translate: boot files
;; --make: boot, lisp, or fasl files
@@ -349,6 +361,16 @@
;;
;; -*- Command Line Arguments -*-
+
+(defparameter |$sysOpts| nil)
+(defparameter |$sysArgs| nil)
+
+(defun |%systemOptions| ()
+ |$sysOpts|)
+
+(defun |%systemArguments| ()
+ |$sysArgs|)
+
;;
;; Ideally, we would just like to have a traditional command line
;; passing mechanism from the shell to the application. That
@@ -445,7 +467,7 @@
(defun |handleCommandLine| (prog-name options args)
(when (or options args)
- (dolist (opt options t)
+ (dolist (opt options nil)
(cond ((eq (car opt) (|Option| "help")) ; print help, get out of here
(|helpHandler| prog-name))
@@ -460,7 +482,8 @@
(opt-name (car opt))
(request (cons opt-name file-type)))
(unless (|handleRequest| prog-name request options f)
- (return nil)))))
+ (return nil))))
+ (return t))
;; In general, nothing is to be done for option value
;; specification. However, some specifications may require
@@ -482,16 +505,18 @@
;;
;; Print help screen
-(defun |printUsage|(prog-name)
+(defun |printUsage| (prog-name)
(write-line "usage:")
(write-line
- (concatenate 'string prog-name " -- options [files]"))
+ (concatenate 'string prog-name " -- [options] [files]"))
(write-line "option:")
- (write-line " --help print this message")
- (write-line " --compile compile file")
- (write-line " --output=OUT set output file to OUT")
- (write-line " --load-directory=DIR use DIR as search path for modules")
- (write-line " --make create an executable"))
+ (write-line " --help print this message")
+ (write-line " --system=<dir> set <dir> to the root directory of running system")
+ (write-line " --sysalg=<dir> set <dir> to the algebra directory of running system")
+ (write-line " --compile compile file")
+ (write-line " --output=<out> set output file to <out>")
+ (write-line " --load-directory=<dir> use <dir> as search path for modules")
+ (write-line " --make create an executable"))
(defun |helpHandler|(prog-name)
(|printUsage| prog-name)
@@ -633,13 +658,13 @@
;; a filename.
(multiple-value-bind
(options args) (|processCommandLine| (cdr command-args) nil)
+
+ (setq |$sysOpts| options)
+ (setq |$sysArgs| args)
- ;; Push into the system's preferred namespace. Ideally, this should
- ;; be run of initialization code if needed. However, a curiously
- ;; nasty bug in GCL prevents us from expressing the natural semantics
- ;; in a clean way.
- (when (boundp '|$sysScope|)
- (setq *package* (find-package (symbol-value '|$sysScope|))))
+ ;; Run the system-specific initialization.
+ (when (fboundp '|%sysInit|)
+ (funcall '|%sysInit|))
(when (|handleCommandLine| (car command-args) options args)
(|coreQuit| (if (> (|errorCount|) 0) 1 0))))))