Teach `make cross-host' to convert .nib -> .bin &c.
authorTaylor R Campbell <campbell@mumble.net>
Tue, 11 Dec 2018 15:59:30 +0000 (15:59 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Tue, 11 Dec 2018 23:50:51 +0000 (23:50 +0000)
This is more expedient for now than finding all the places in SF/CREF
that fasdump anything to fasdump both the .nib and the .bin file.

src/Makefile.in
src/compiler/machines/C/compiler.pkg
src/compiler/machines/i386/compiler.pkg
src/compiler/machines/svm/compiler.pkg
src/compiler/machines/x86-64/compiler.pkg
src/configure.ac
src/etc/crossbin.scm [new file with mode: 0644]

index 502cb21ae49eb475693630a6d901d45858bb2556..7314368da1e9267404628961ec0e2e233bb96116 100644 (file)
@@ -585,6 +585,16 @@ cross-host: compile-ssp
 cross-host: compile-star-parser
 cross-host: compile-win32
 cross-host: compile-xml
+       @(echo '(begin' && \
+         echo '  (load "etc/crossbin")' && \
+         echo '  (convert fasl-format:@mit_scheme_native_code@' && \
+         echo '    "compiler" "compiler/base" "compiler/back"' && \
+         echo '    "compiler/fgopt" "compiler/fggen" "compiler/fgopt"' && \
+         echo '    "compiler/machine" "compiler/rtlbase"' && \
+         echo '    "compiler/rtlgen" "compiler/rtlopt"' && \
+         echo '    "cref" "ffi" "runtime" "sf" "sos" "ssp"' && \
+         echo '    "ssp" "star-parser" "win32" "xml"))') \
+       | $(HOST_COMPILER)
        echo "done" > stamp_$@
 
 .PHONY: cross-target
index bfa97abfaa0013249c796b4d37fb660c1dcb543b..2dbcfb76037d675e81b4a79e51c7f53883a7a2a6 100644 (file)
@@ -396,7 +396,7 @@ USA.
 (define-package (compiler portable-fasdump)
   (files "base/fasdump")
   (parent ())                          ;** This code should be portable.
-  (export (compiler)
+  (export ()
          fasl-format:aarch64be
          fasl-format:aarch64le
          fasl-format:alpha
index fb11b624e0b56685b0ef147434dff21459c5804d..ca6c70689bb0c095a818bd320c2f4f793f0b3eee 100644 (file)
@@ -382,7 +382,7 @@ USA.
 (define-package (compiler portable-fasdump)
   (files "base/fasdump")
   (parent ())                          ;** This code should be portable.
-  (export (compiler)
+  (export ()
          fasl-format:aarch64be
          fasl-format:aarch64le
          fasl-format:alpha
index 4762af8c3f358ced6a960568f5c085ead8474437..20482e9590e23c123e34544c3149a0acfc53d59a 100644 (file)
@@ -384,7 +384,7 @@ USA.
 (define-package (compiler portable-fasdump)
   (files "base/fasdump")
   (parent ())                          ;** This code should be portable.
-  (export (compiler)
+  (export ()
          fasl-format:aarch64be
          fasl-format:aarch64le
          fasl-format:alpha
index f8b09924dd0421ce2fc3aee83fc7deea4e2c5303..bf98361e08d7b5c848c114bc09733da926836516 100644 (file)
@@ -382,7 +382,7 @@ USA.
 (define-package (compiler portable-fasdump)
   (files "base/fasdump")
   (parent ())                          ;** This code should be portable.
-  (export (compiler)
+  (export ()
          fasl-format:aarch64be
          fasl-format:aarch64le
          fasl-format:alpha
index fd9591eb771a940a3eee4ff6b4ccbaae06b59653..5456b89bde6c1c5fc33b5110747811e05882b933 100644 (file)
@@ -385,6 +385,7 @@ AC_SUBST([IF_X11_SCREEN])
 AC_SUBST([INSTALL_COM])
 AC_SUBST([INSTALL_LIARC_BUNDLES])
 AC_SUBST([MIT_SCHEME_EXE])
+AC_SUBST([mit_scheme_native_code])
 AC_SUBST([OPTION_SUBDIRS])
 
 AC_PROG_INSTALL
diff --git a/src/etc/crossbin.scm b/src/etc/crossbin.scm
new file mode 100644 (file)
index 0000000..a540d5c
--- /dev/null
@@ -0,0 +1,55 @@
+#| -*-Scheme-*-
+
+Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016,
+    2017, 2018 Massachusetts Institute of Technology
+
+This file is part of 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.
+
+|#
+
+;;;; Convert host .nib files into target .bin files
+\f
+(define mapping
+  '(("nib" "bin")
+    ("txe" "ext")
+    ("dkp" "pkd")))
+
+(define (convert format . directories)
+  (for-each (lambda (directory)
+              (for-each (lambda (pathname)
+                          (cond ((let ((t (pathname-type pathname)))
+                                   (and (string? t)
+                                        (assoc t mapping)))
+                                 => (lambda (host.target)
+                                      (let ((host-type (car host.target))
+                                            (target-type (cadr host.target)))
+                                        (convert-1 format
+                                                   pathname
+                                                   host-type
+                                                   target-type))))))
+                        (directory-read (pathname-as-directory directory))))
+            directories))
+
+(define (convert-1 format host-pathname host-type target-type)
+  (assert (string=? host-type (pathname-type host-pathname)))
+  (let ((target-pathname (pathname-new-type host-pathname target-type)))
+    (if (or (not (file-exists? target-pathname))
+            (file-modification-time<? target-pathname host-pathname))
+        (portable-fasdump (fasload host-pathname) target-pathname format))))
\ No newline at end of file