From 75fb2df3b9bbc5b1fde613bdbfe5eaccdb42917e Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Tue, 11 Dec 2018 15:59:30 +0000 Subject: [PATCH] Teach `make cross-host' to convert .nib -> .bin &c. 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 | 10 +++++ src/compiler/machines/C/compiler.pkg | 2 +- src/compiler/machines/i386/compiler.pkg | 2 +- src/compiler/machines/svm/compiler.pkg | 2 +- src/compiler/machines/x86-64/compiler.pkg | 2 +- src/configure.ac | 1 + src/etc/crossbin.scm | 55 +++++++++++++++++++++++ 7 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 src/etc/crossbin.scm diff --git a/src/Makefile.in b/src/Makefile.in index 502cb21ae..7314368da 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -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 diff --git a/src/compiler/machines/C/compiler.pkg b/src/compiler/machines/C/compiler.pkg index bfa97abfa..2dbcfb760 100644 --- a/src/compiler/machines/C/compiler.pkg +++ b/src/compiler/machines/C/compiler.pkg @@ -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 diff --git a/src/compiler/machines/i386/compiler.pkg b/src/compiler/machines/i386/compiler.pkg index fb11b624e..ca6c70689 100644 --- a/src/compiler/machines/i386/compiler.pkg +++ b/src/compiler/machines/i386/compiler.pkg @@ -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 diff --git a/src/compiler/machines/svm/compiler.pkg b/src/compiler/machines/svm/compiler.pkg index 4762af8c3..20482e959 100644 --- a/src/compiler/machines/svm/compiler.pkg +++ b/src/compiler/machines/svm/compiler.pkg @@ -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 diff --git a/src/compiler/machines/x86-64/compiler.pkg b/src/compiler/machines/x86-64/compiler.pkg index f8b09924d..bf98361e0 100644 --- a/src/compiler/machines/x86-64/compiler.pkg +++ b/src/compiler/machines/x86-64/compiler.pkg @@ -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 diff --git a/src/configure.ac b/src/configure.ac index fd9591eb7..5456b89bd 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -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 index 000000000..a540d5cea --- /dev/null +++ b/src/etc/crossbin.scm @@ -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 + +(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