From aa218124cc54784b18269bc1d611f2fccd9e8335 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Tue, 18 Apr 1989 17:00:33 +0000 Subject: [PATCH] Improve script so that it will work from bare sources. --- v7/src/edwin/edwin.sf | 58 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/v7/src/edwin/edwin.sf b/v7/src/edwin/edwin.sf index 9644f1f04..0857c3d44 100644 --- a/v7/src/edwin/edwin.sf +++ b/v7/src/edwin/edwin.sf @@ -1,24 +1,58 @@ ;;; -*-Scheme-*- +(if (not (name->package '(CROSS-REFERENCE))) + (with-working-directory-pathname "../cref" (lambda () (load "make")))) + (if (not (name->package '(EDWIN))) (begin - (load "edwin.bcon") - (load "macros.bin" '(EDWIN MACROS)) - (load "clsmac.bin" '(EDWIN CLASS-MACROS)) - (load "xform.bin" '(EDWIN CLASS-MACROS TRANSFORM-INSTANCE-VARIABLES)) - (load "class.bin" '(EDWIN)) - (load "clscon.bin" '(EDWIN CLASS-CONSTRUCTOR)))) -(load "decls") + (if (not (file-exists? "edwin.bcon")) + (begin + ((access cref/generate-trivial-constructor + (->environment '(CROSS-REFERENCE))) + "edwin") + (sf "edwin.con" "edwin.bcon"))) + (load "edwin.bcon"))) -;; Guarantee that the package modeller is loaded. -(if (not (name->package '(CROSS-REFERENCE))) - (with-working-directory-pathname "/scheme/cref" (lambda () (load "make")))) +(if (lexical-unreferenceable? (->environment '(EDWIN CLASS-CONSTRUCTOR)) + 'CLASS-DESCRIPTORS) + (begin + (let ((sf-and-load + (lambda (files package) + (fluid-let ((sf/default-syntax-table syntax-table/system-internal)) (sf-conditionally files)) + (for-each (lambda (file) + (load (string-append file ".bin") package)) + files)))) + (sf-and-load '("macros") '(EDWIN MACROS)) + (sf-and-load '("clsmac") '(EDWIN CLASS-MACROS)) + (sf-and-load '("xform") + '(EDWIN CLASS-MACROS TRANSFORM-INSTANCE-VARIABLES)) + (sf-and-load '("class") '(EDWIN)) + (sf-and-load '("clscon") '(EDWIN CLASS-CONSTRUCTOR))))) + +(let ((read-class-definitions + (let ((syntax-table + (access class-syntax-table (->environment '(EDWIN))))) + (lambda (filename) + (write-string "\nPre-loading class definitions from ") + (write filename) + (syntax* (read-file (string-append filename ".scm")) + syntax-table) + (write-string " -- done"))))) + (read-class-definitions "window") + (read-class-definitions "utlwin") + (read-class-definitions "modwin") + (read-class-definitions "linwin") + (read-class-definitions "bufwin") + (read-class-definitions "comwin") + (read-class-definitions "buffrm") + (read-class-definitions "edtfrm")) + +(load "decls") (in-package (->environment '(CROSS-REFERENCE)) ((generate/common (lambda (pathname pmodel) - (write-cref pathname pmodel) - (write-globals pathname pmodel) + (write-cref pathname pmodel) (write-globals pathname pmodel) (write-constructor pathname pmodel))) "edwin")) (sf "edwin.con" "edwin.bcon") -- 2.25.1