version of this code that is no longer in use (and probably no
longer works).
-* "elisp" contains a GNU Emacs emulator for Edwin.
-
* "etc" contains miscellaneous files for building the program.
* "rcs" is a parser for RCS files. It also contains a program for
rcs/TAGS,include
\f
ffi/TAGS,include
-\f
-elisp/TAGS,include
--- /dev/null
+# Copyright (C) 2011, 2012, 2013 Matthew Birkholz
+#
+# This file is part of an extension to MIT/GNU Scheme.
+#
+# MIT/GNU Scheme is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# MIT/GNU Scheme is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with MIT/GNU Scheme; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+MIT_SCHEME_EXE = mit-scheme
+exe = '$(MIT_SCHEME_EXE)' --batch-mode
+
+all:
+ echo '(load "compile")' | $(exe)
+ @if [ -s elisp-unx.crf ]; then \
+ echo "elisp-unx.crf:0: warning: non-empty"; exit 1; fi
+
+check:
+ @echo "Warning: no tests!"
+# echo '(load "check")' | $(exe)
+
+install:
+ @echo "Warning: not installable!"
+# echo '(install-load-option "$(DESTDIR)" "elisp")' \
+# | $(exe) -- *.com *.bci *.pkd make.scm load-up.el
+
+clean distclean maintainer-clean:
+ rm -f *.bin *.ext *.com *.bci *.moc *.fni *.crf *.fre *.pkd
+
+tags:
+ etags *.scm
+
+.PHONY: all check install clean distclean maintainer-clean tags
+++ /dev/null
-#-*-Makefile-*-
-# elisp/Makefile-fragment
-
-TARGET_DIR = $(AUXDIR)/elisp
-
-install:
- rm -rf $(DESTDIR)$(TARGET_DIR)
- $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)
- $(INSTALL_COM) *.com $(DESTDIR)$(TARGET_DIR)/.
- $(INSTALL_DATA) *.bci $(DESTDIR)$(TARGET_DIR)/.
- $(INSTALL_DATA) elisp-*.pkd $(DESTDIR)$(TARGET_DIR)/.
- $(INSTALL_DATA) $(srcdir)/load.scm $(DESTDIR)$(TARGET_DIR)/.
- $(INSTALL_DATA) $(srcdir)/load-up.el $(DESTDIR)$(TARGET_DIR)/.
(fluid-let ((load/suppress-loading-message? #t))
(load-option 'CREF))
-(fluid-let ((compile-file:sf-only? #t))
- (compile-system
- "elisp" (directory-pathname (current-load-pathname))
- 'dependencies
- (let* ((deps-edwin (map (lambda (base) (string-append "../edwin/" base))
- '("struct" "comman" "modes" "buffer" "edtstr")))
- (deps-Buffers (cons "Buffers" deps-edwin))
- (deps-Symbols (cons "Symbols" deps-Buffers))
- (deps-all (cons* "lisp" "Subrs" deps-Symbols)))
- `(("Buffers" . ,deps-edwin) ;uses lots of Edwin stuff
- ("Symbols" . ,deps-Buffers) ;uses Edwin and %current-buffer...
- ("Reader" . ,deps-Symbols) ;uses ... and ... and %symbol-*...
- ("lisp" . ,deps-Symbols) ;ditto
- ;; Assume everything else wants to integrate whatnot from Edwin
- ;; and the emulator. Also assume no cross-file integrables
- ;; amongst them.
- . ,(map (lambda (file) `(,file . ,deps-all))
- '("Misc"
- "data" "eval" "fns" "lread" "buffer" "editfns" "fileio"
- "alloc" "minibuf" "search" "callint" "syntax" "cmds" "marker"
- "window" "keymap" "print" "indent" "process" "dired" "abbrev"
- "bytecode"))))))
\ No newline at end of file
+(with-working-directory-pathname (directory-pathname (current-load-pathname))
+ (lambda ()
+ (if (name->package '(ELISP))
+ (error "The ELisp package already exists.")
+ (let ((package-set (package-set-pathname "elisp")))
+ (if (not (file-modification-time<? "elisp.pkg" package-set))
+ (cref/generate-trivial-constructor "elisp"))
+ (construct-packages-from-file (fasload package-set))))
+
+ (let* ((deps-edwin (map (lambda (base) (string-append "../edwin/" base))
+ '("struct" "comman" "modes" "buffer" "edtstr")))
+ (deps-Buffers (cons "Buffers" deps-edwin))
+ (deps-Symbols (cons "Symbols" deps-Buffers))
+ (deps-all (cons* "lisp" "Subrs" deps-Symbols)))
+
+ (define (cf file deps env-name)
+ (fluid-let ((compile-file:sf-only? #t))
+ (compile-file file deps (->environment env-name))))
+
+ (cf "Buffers" deps-edwin '(elisp buffers)) ;uses lots of Edwin stuff
+ (cf "Symbols" deps-Buffers '(elisp symbols)) ;uses Edwin and %current-buffer...
+ (cf "Reader" deps-Symbols '(elisp reader)) ;uses ... and ... and %symbol-*...
+ (cf "Subrs" '() '(elisp subrs))
+ (cf "lisp" deps-Symbols '(elisp)) ;ditto
+ (cf "Macros" '() '(elisp)) ;ditto
+ (load "Macros" (->environment '(elisp)))
+
+ ;; Assume everything else wants to integrate whatnot from Edwin
+ ;; and the emulator. Also assume no cross-file integrables
+ ;; amongst them.
+ (for-each
+ (lambda (file)
+ (cf file deps-all '(elisp)))
+ '("Misc"
+ "data" "eval" "fns" "lread" "buffer" "editfns" "fileio"
+ "alloc" "minibuf" "search" "callint" "syntax" "cmds" "marker"
+ "window" "keymap" "print" "indent" "process" "dired" "abbrev"
+ "bytecode")))
+
+ (cref/generate-constructors "elisp" 'ALL)))
\ No newline at end of file
(not (eq? 'RUN (process-status process)))
(poll-process-for-output process)))))
(begin
- (outf-console ";Loop looking for output from "process".\n")
+ (outf-error ";Loop looking for output from "process".\n")
;; Is this necessary?
#;(block-on-input-descriptor
(channel-descriptor-for-select
(with-working-directory-pathname "sos"
(lambda ()
(load "load")))
- (for-each compile-dir '("xml" "win32" "edwin" "imail" "ssp" "ffi" "elisp")))
+ (for-each compile-dir '("xml" "win32" "edwin" "imail" "ssp" "ffi")))
(define (compile-boot-dirs compile-dir)
(compile-cref compile-dir)
run_cmd ln -s machines/"${MDIR}" compiler/machine
run_cmd ln -s machine/compiler.pkg compiler/.
-BUNDLES="6001 compiler cref edwin elisp ffi imail sf sos ssp star-parser"
-BUNDLES="$BUNDLES xdoc xml"
+BUNDLES="6001 compiler cref edwin ffi imail sf sos ssp star-parser xdoc xml"
run_cmd ${HOST_SCHEME_EXE} --batch-mode --heap 4000 <<EOF
(begin
(define-load-option 'CREF
(guarded-system-loader '(cross-reference) "cref"))
-(define-load-option 'ELISP
- (guarded-system-loader '(elisp) "elisp"))
-
(define-load-option 'FFI
(guarded-system-loader '(ffi) "ffi"))