elisp: Make this a separately buildable subsystem. ELisp
authorMatt Birkholz <puck@birchwood-abbey.net>
Thu, 8 May 2014 17:58:47 +0000 (10:58 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Thu, 8 May 2014 17:58:47 +0000 (10:58 -0700)
Remove changes outside src/elisp/.  Replace Makefile-fragment with a
simple Makefile.  Replace compile-system with many calls to
compile-file.

src/README.txt
src/TAGS
src/elisp/Makefile [new file with mode: 0644]
src/elisp/Makefile-fragment [deleted file]
src/elisp/compile.scm
src/elisp/process.scm
src/etc/compile.scm
src/etc/create-makefiles.sh
src/etc/optiondb.scm

index f1b0a60077dc479e4e5c6b7cda34ff06480a0306..1ec888fbdab99b2d17420a0cba3975b9f481e917 100644 (file)
@@ -88,8 +88,6 @@ These are miscellaneous extras:
   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
index 6422eaa03f344f0c2f9e0af1c2581037ca3d58b1..e0668593b9f1c08e4c01a0e000c0644f769bdb34 100644 (file)
--- a/src/TAGS
+++ b/src/TAGS
@@ -16,5 +16,3 @@ cref/TAGS,include
 rcs/TAGS,include
 \f
 ffi/TAGS,include
-\f
-elisp/TAGS,include
diff --git a/src/elisp/Makefile b/src/elisp/Makefile
new file mode 100644 (file)
index 0000000..fec830c
--- /dev/null
@@ -0,0 +1,43 @@
+# 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
diff --git a/src/elisp/Makefile-fragment b/src/elisp/Makefile-fragment
deleted file mode 100644 (file)
index dec2fce..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#-*-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)/.
index 8c417aa4de6f327cb8fdfc7a9ccfe9b6b4fe8d43..fd51c8a8067ec5702b1574a64212d99c83e6c095 100644 (file)
@@ -5,25 +5,43 @@
 (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
index 7762b5decf26e3fe1204011ca252616df1410cf9..c8f157e13da61edd17b28a8ee04e71cc6e3d4c47 100644 (file)
@@ -326,7 +326,7 @@ from PROCESS."
                            (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
index 38dc27c0b579720f47d86c287fecdc8bb64c9301..f5eca8a4045e3e612271c0404bab84e031790d1f 100644 (file)
@@ -41,7 +41,7 @@ USA.
   (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)
index 30861ff5d6a3ef42bdbb137ae92365ff4a283533..8fe46f1c5db0df66dd4a8386c77710185a90a4c0 100755 (executable)
@@ -47,8 +47,7 @@ run_cmd rm -f compiler/machine compiler/compiler.pkg
 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
index 9180d556679fad7991b32903ec67df92e30c330c..7686909b0132360e4fd3360ae66ac21ab5792554 100644 (file)
@@ -93,9 +93,6 @@ USA.
 (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"))