;; -*- Mode: Lisp -*- ;; This file is to be included by various randoms who want the the more winning ;; lisp-machine like lisp environment provided by LIBMAX;PRELUD, but who don't ;; want the other completely random things which are part of the macsyma ;; compilation environment. ;; 6:15pm Thursday, 5 January 1980 -GJC ;; This file loads a part of the Macsyma compile-time environment. These ;; packages will be loaded when the source file is either compiled or ;; interpreted. They are not loaded by compiled code. For more information, ;; see LIBMAX;-READ- -THIS- and MAXDOC;LIBMAX >. (EVAL-WHEN (EVAL COMPILE) (OR (GET 'UMLMAC 'VERSION) (LOAD "LISP;UMLMAC")) (OR (GET 'LMMAC 'VERSION) (LOAD "LIBMAX;LMMAC")) (or (get 'mlmac 'version) (load '((lisp)mlmac))) (or (get 'maxmac 'version) (load '((libmax)maxmac))) (PUTPROP 'META-EVAL '((DSK LIBMAX)META) 'AUTOLOAD) (DEFMACRO AUTOLOAD-MACROS (FILE &REST MACROS) `(PROGN (MAPC '(LAMBDA (U)(PUTPROP U ',FILE 'AUTOLOAD)) ',MACROS) (COND (COMPILER-STATE (MAPC '(LAMBDA (U) (OR (GET U 'MACRO) (PUTPROP U '(LAMBDA (FORM) (LOAD (GET (CAR FORM) 'AUTOLOAD)) FORM) 'MACRO))) ',MACROS))))) (AUTOLOAD-MACROS ((LIBLSP)STRUCT) DEFSTRUCT) (AUTOLOAD-MACROS ((LIBLSP)LOOP) LOOP) (AUTOLOAD-MACROS ((LIBMAX)PROCS) DEF-PROCEDURE-PROPERTY CALL-PROCEDURE-PROPERTY) (AUTOLOAD-MACROS ((LIBMAX)CLOSE) DEFCLOSURE CALL) (AUTOLOAD-MACROS ((LIBMAX)OPSHIN) DEF-OPTIONS) (AUTOLOAD-MACROS ((LIBMAX)READM) |DEF#\SYMBOL|) (DEFPROP PARSE-OPTION-HEADER ((LIBMAX)OPSHIN) AUTOLOAD) (SETQ MACRO-FILES '(UMLMAC LMMAC mlmac))) ;; Print macro versions in the unfasl file. (EVAL-WHEN (COMPILE) (LET ((UNFASL (IF (EQ (CAAR (NAMELIST (CAR CMSGFILES))) 'DSK) (CAR CMSGFILES) (CADR CMSGFILES)))) (FORMAT UNFASL "~%;; Compilation by ~A~%" (STATUS UNAME)) (FORMAT UNFASL ";; ~15A~A~%" "Prelude file:" (LET ((X (TRUENAME INFILE))) (NAMESTRING (CONS (CDAR X) (CDR X))))) (FORMAT UNFASL ";; ~15A" "Macro files:") (FORMAT UNFASL "~{~<~%;; ~15X~:;~A ~A~>~^, ~}~%" (MAPCAN #'(LAMBDA (X) `(,X ,(GET X 'VERSION))) MACRO-FILES) ))) ;; Make DEFUN retain useful debugging information about the format ;; of the bound variable list. (DECLARE (SETQ DEFUN&-CHECK-ARGS T)) ;; Place macros in fasl file, and include code for displacing within ;; the interpreter. (DECLARE (SETQ DEFMACRO-FOR-COMPILING T) (SETQ DEFMACRO-DISPLACE-CALL T) (MACROS T)) (EVAL-WHEN (EVAL LOAD COMPILE) ; make sure DEFSTRUCT is always around (mapc '(lambda (x) (putprop x '((liblsp)struct) 'autoload)) '(defstruct defstruct-cons defstruct-ref defstruct-expand-ref-macro defstruct-expand-cons-macro defstruct-expand-alter-macro defstruct-get-property defstruct-put-property)))