summaryrefslogtreecommitdiff
path: root/com/allegro/savesys
diff options
context:
space:
mode:
Diffstat (limited to 'com/allegro/savesys')
-rwxr-xr-xcom/allegro/savesys54
1 files changed, 54 insertions, 0 deletions
diff --git a/com/allegro/savesys b/com/allegro/savesys
new file mode 100755
index 0000000..3d3abd8
--- /dev/null
+++ b/com/allegro/savesys
@@ -0,0 +1,54 @@
+#!/bin/csh
+#
+# savesys -- build a saved executable in bin/new-allegro-haskell
+#
+#
+cd $Y2
+setenv PRELUDEBIN $Y2/progs/prelude/$ALLEGRODIR
+if !(-e $PRELUDEBIN/Prelude.fasl) then
+ echo "Build the prelude first, stupid..."
+ exit
+ endif
+$ALLEGRO <<EOF
+;;; Load the Haskell system.
+#+next (progn (load "com/allegro/next-patches/patch0149.fasl")
+ (load "com/allegro/next-patches/patch0151.fasl"))
+#+sparc (load "com/allegro/sparc-patches/patch0151.fasl")
+(make-package "MUMBLE-IMPLEMENTATION" :use '("LISP"))
+(load "cl-support/cl-init")
+;;; Set various internal switches to appropriate values for running
+;;; Haskell code.
+(proclaim '(optimize (speed 3) (safety 0) (compilation-speed 0)))
+(setf *compile-verbose* nil)
+(setf *load-verbose* nil)
+(setf excl:*load-source-file-info* nil)
+(setf excl:*record-source-file-info* nil)
+(setf excl:*load-xref-info* nil)
+(setf excl:*record-source-file-info* nil)
+(in-package :mumble-user)
+(setf *printers* '(compiling loading))
+(setf *optimizers* '())
+(setf *compile-interface* '#f)
+;;; Load the prelude.
+(compile/load *prelude-unit-filename*)
+;;; Set up the saved system.
+(define *saved-readtable* (lisp:copy-readtable lisp:*readtable*))
+(define (haskell-toplevel)
+ ;; Saved system always starts up in USER package.
+ (setf lisp:*package* (lisp:find-package :mumble-user))
+ ;; Saved system seems to forget about our readtable hacks.
+ (setf lisp:*readtable* *saved-readtable*)
+ ;; Set printer variables w/implementation-defined initial values
+ ;; to known values
+ (setf *print-pretty* '#f)
+ (load-init-files)
+ (do () ('#f)
+ (cl:with-simple-restart (restart-haskell "Restart Haskell.")
+ (heval))))
+(define (restart-haskell)
+ (cl:invoke-restart 'restart-haskell))
+(excl:dumplisp
+ :name #+next "bin/new-allegro-next-haskell" #-next "bin/new-allegro-haskell"
+ :restart-function 'haskell-toplevel)
+(excl:exit)
+EOF