;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Package: CL-USER; Base: 10 -*- ;;; Touched: Wed Jun 26 09:46:00 2002 ;;; Time-stamp: <2002-12-14 00:21:20> ;;; Load this file under CMUCL+MKDEFSYSTEM (in-package :CL-USER) (defvar *ZEBRA-directory* (or (and *load-truename* (make-pathname :directory (pathname-directory *load-truename*))) (default-directory))) (defvar *ZEBU-directory* (make-pathname :directory (append (butlast (pathname-directory *ZEBRA-directory*)) (list "zebu")))) ;; load zebu systems (load (merge-pathnames "sysdcl.lisp" *ZEBU-directory*)) (defvar *ZEBRA-binary-directory* (make-pathname :directory (append (pathname-directory *ZEBRA-directory*) (list "binary")))) (ensure-directories-exist *zebra-binary-directory*) ;; load zebra package (load (merge-pathnames "zebra-package.lisp" *ZEBRA-directory*)) (defun zebra-compile-file-1 (zebra-file &key (output-file (merge-pathnames (make-pathname :type "lisp" :defaults zebra-FILE) *ZEBRA-binary-directory*)) (error-file nil) (trace-file nil) (error-output t) (load nil) (external-format :default) (verbose zebra::*zebra-verbose*) (compile-domain t) ((:print *compile-print*) *compile-print*) ((:progress *compile-progress*) *compile-progress*) ((:block-compile *block-compile-argument*) *block-compile-default*) ((:entry-points *entry-points*) nil) ((:byte-compile *byte-compile*) *byte-compile-default*)) (declare (ignore *BYTE-COMPILE* *ENTRY-POINTS* *BLOCK-COMPILE-ARGUMENT* EXTERNAL-FORMAT LOAD ERROR-OUTPUT TRACE-FILE ERROR-FILE)) (zebra:zebra-compile-file zebra-file :output-file output-file :verbose verbose) (when compile-domain (compile-file output-file :output-file (merge-pathnames (make-pathname :type (car *load-binary-pathname-types*) :defaults output-file)) :verbose verbose))) (defun zebra-load-file-1 (filename &key (verbose nil verbose-p) (print nil print-p) (if-source-newer nil if-source-newer-p) (if-does-not-exist :error) (external-format :default)) (declare (ignore if-source-newer if-does-not-exist external-format print verbose )) (zebra:zebra-load-file filename)) #-mk-defsystem(require :defsystem) ;; say no to defsystem (mk:define-language :zebra :source-extension "za" :binary-extension "x86f" :compiler 'zebra-compile-file-1 :loader 'zebra-load-file-1) (mk:defsystem "ZEBRA-KERNEL" :source-pathname #.*ZEBRA-directory* :binary-pathname #.*ZEBRA-binary-directory* :source-extension "lisp" :components ((:file "zebra-package") (:file "zebra-init") (:file "zebra-conditions" :depends-on ("zebra-init")) (:file "zebra-grammar" :depends-on ("zebra-conditions") :source-extension "zb" :binary-extension "tab" :compiler zebu-compile-file-1 :loader zebu-load-file-1 :language :zebu) (:file "zebra-init" :depends-on ("zebra-conditions")) (:file "zebra-load" :depends-on ("zebra-init")) (:file "zebra-write" :depends-on ("zebra-init")) (:file "zebra-lib" :depends-on ("zebra-init")) (:file "zebra-melted" :depends-on ("zebra-init")) (:file "zebra-memo" :depends-on ("zebra-init" "zebra-lib")) (:file "zebra-vars" :depends-on ("zebra-init")) (:file "zebra-build" :depends-on ("zebra-init" "zebra-memo" "zebra-vars")) (:file "zebra-rr" :depends-on ("zebra-init" "zebra-memo" "zebra-vars")) (:file "zebra-compiler" :depends-on ("zebra-init" "zebra-memo" "zebra-vars" "zebra-build" "zebra-write" "zebra-rr")) (:file "zebra-back" :depends-on ("zebra-compiler")) (:file "zebra-sem" :depends-on ("zebra-compiler")) (:file "zebra-simplify" :depends-on ("zebra-compiler")))) (mk:defsystem "ZEBRA-CORE" :source-pathname #.*ZEBRA-directory* :binary-pathname #.*ZEBRA-binary-directory* :source-extension "lisp" :depends-on ("ZEBRA-KERNEL") :components ((:file "zebra-boots" :source-extension "za" :binary-extension "x86f" :language :zebra) (:file "zebra-boots") (:file "zebra-reduce" :depends-on ("zebra-boots") :source-extension "za" :binary-extension "x86f" :language :zebra) (:file "zebra-inc" :depends-on ("zebra-reduce")) (:file "zebra-toplevel" :depends-on ("zebra-reduce")))) (mk:defsystem "ZEBRA" :source-pathname #.*ZEBRA-directory* :binary-pathname #.*ZEBRA-binary-directory* :source-extension "lisp" :depends-on ("ZEBU" "ZEBRA-CORE") :components ((:module "ZEBRA-KERNEL") (:module "ZEBRA-CORE"))) ;;; NOTES: - tested with zebra sources from exp-engine (they removed ;;; it from CVS)