mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Choose the input source file encoding in a locale-independent way.
This is so that compiling the same code on environments with different locale settings yields the same result. * module/system/base/compile.scm (compile-file): When ENC if #f, default to "UTF-8" instead of `(fluid-ref %default-port-encoding)'. * doc/ref/api-evaluation.texi (Compilation): Document the default output file name and default source file encoding for `compile-file' and `guile-tools compile'.
This commit is contained in:
parent
bc03d89fa2
commit
eda0622095
2 changed files with 13 additions and 5 deletions
|
@ -567,8 +567,9 @@ Add @var{dir} to the front of the module load path.
|
||||||
|
|
||||||
@item -o @var{ofile}
|
@item -o @var{ofile}
|
||||||
@itemx --output=@var{ofile}
|
@itemx --output=@var{ofile}
|
||||||
Write output bytecode to @var{ofile}. By convention, bytecode file names end
|
Write output bytecode to @var{ofile}. By convention, bytecode file
|
||||||
in @code{.go}.
|
names end in @code{.go}. When @option{-o} is omitted, the output file
|
||||||
|
name is as for @code{compile-file} (see below).
|
||||||
|
|
||||||
@item -W @var{warning}
|
@item -W @var{warning}
|
||||||
@itemx --warn=@var{warning}
|
@itemx --warn=@var{warning}
|
||||||
|
@ -589,6 +590,9 @@ Use @var{lang} as the target language of @var{file}. If this option is omitted,
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
|
Each @var{file} is assumed to be UTF-8-encoded, unless it contains a
|
||||||
|
coding declaration as recognized by @code{file-encoding}
|
||||||
|
(@pxref{Character Encoding of Source Files}).
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
The compiler can also be invoked directly by Scheme code using the procedures
|
The compiler can also be invoked directly by Scheme code using the procedures
|
||||||
|
@ -608,6 +612,9 @@ Compile the file named @var{file}.
|
||||||
|
|
||||||
Output will be written to a file in the current directory whose name
|
Output will be written to a file in the current directory whose name
|
||||||
is computed as @code{(compiled-file-name @var{file})}.
|
is computed as @code{(compiled-file-name @var{file})}.
|
||||||
|
|
||||||
|
As with @command{guile-tools compile}, @var{file} is assumed to be
|
||||||
|
UTF-8-encoded unless it contains a coding declaration.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} compiled-file-name file
|
@deffn {Scheme Procedure} compiled-file-name file
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
;;; High-level compiler interface
|
;;; High-level compiler interface
|
||||||
|
|
||||||
;; Copyright (C) 2001, 2009, 2010 Free Software Foundation, Inc.
|
;; Copyright (C) 2001, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||||
|
|
||||||
;;; This library is free software; you can redistribute it and/or
|
;;; This library is free software; you can redistribute it and/or
|
||||||
;;; modify it under the terms of the GNU Lesser General Public
|
;;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -120,8 +120,9 @@
|
||||||
(let* ((comp (or output-file (compiled-file-name file)))
|
(let* ((comp (or output-file (compiled-file-name file)))
|
||||||
(in (open-input-file file))
|
(in (open-input-file file))
|
||||||
(enc (file-encoding in)))
|
(enc (file-encoding in)))
|
||||||
(if enc
|
;; Choose the input encoding deterministically.
|
||||||
(set-port-encoding! in enc))
|
(set-port-encoding! in (or enc "UTF-8"))
|
||||||
|
|
||||||
(ensure-writable-dir (dirname comp))
|
(ensure-writable-dir (dirname comp))
|
||||||
(call-with-output-file/atomic comp
|
(call-with-output-file/atomic comp
|
||||||
(lambda (port)
|
(lambda (port)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue