1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 12:20:20 +02:00

elisp: Fix cross-compilation support.

* module/system/base/target.scm (with-native-target): New exported
procedure.
* module/language/elisp/spec.scm: In the top-level body expression, call
'compile-and-load' within 'with-native-target' to compile native code.
* module/language/elisp/compile-tree-il.scm
(eval-when-compile, defmacro): Compile native code.
This commit is contained in:
Mark H Weaver 2018-06-11 01:52:40 -04:00 committed by Andy Wingo
parent a44c2a679f
commit a72e296176
3 changed files with 27 additions and 8 deletions

View file

@ -1,6 +1,6 @@
;;; Guile Emac Lisp
;; Copyright (C) 2001, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 2001, 2009, 2010, 2018 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@ -23,6 +23,7 @@
#:use-module (language elisp parser)
#:use-module (system base language)
#:use-module (system base compile)
#:use-module (system base target)
#:export (elisp))
(define-language elisp
@ -31,5 +32,12 @@
#:printer write
#:compilers `((tree-il . ,compile-tree-il)))
(compile-and-load (%search-load-path "language/elisp/boot.el")
#:from 'elisp)
;; Compile and load the Elisp boot code for the native host
;; architecture. We must specifically ask for native compilation here,
;; because this module might be loaded in a dynamic environment where
;; cross-compilation has been requested using 'with-target'. For
;; example, this happens when cross-compiling Guile itself.
(with-native-target
(lambda ()
(compile-and-load (%search-load-path "language/elisp/boot.el")
#:from 'elisp)))