1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-09 21:40:33 +02:00

Add --r6rs and --r7rs options to "guild compile"

* module/scripts/compile.scm (%options, compile): Add --r6rs and --r7rs
  options.
* doc/ref/api-evaluation.texi (Compilation): Add docs.
This commit is contained in:
Andy Wingo 2019-12-02 17:29:32 +01:00
parent 82127b3ad9
commit 0f61d8d797
2 changed files with 26 additions and 5 deletions

View file

@ -686,6 +686,12 @@ more important than the speed of the compiled code. Pass
of @code{-O} options can be passed to the compiler, with later ones of @code{-O} options can be passed to the compiler, with later ones
taking precedence. taking precedence.
@item --r6rs
@itemx --r7rs
Compile in an environment whose default bindings, reader options, and
load paths are adapted for specific Scheme standards. @xref{R6RS
Support}, and @xref{R7RS Support}.
@item -f @var{lang} @item -f @var{lang}
@itemx --from=@var{lang} @itemx --from=@var{lang}
Use @var{lang} as the source language of @var{file}. If this option is omitted, Use @var{lang} as the source language of @var{file}. If this option is omitted,

View file

@ -68,6 +68,12 @@
(if (assoc-ref result 'output-file) (if (assoc-ref result 'output-file)
(fail "`-o' option cannot be specified more than once") (fail "`-o' option cannot be specified more than once")
(alist-cons 'output-file arg result)))) (alist-cons 'output-file arg result))))
(option '("r6rs") #f #f
(lambda (opt name arg result)
(alist-cons 'install-r6rs? #t result)))
(option '("r7rs") #f #f
(lambda (opt name arg result)
(alist-cons 'install-r7rs? #t result)))
(option '(#\x) #t #f (option '(#\x) #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(set! %load-extensions (cons arg %load-extensions)) (set! %load-extensions (cons arg %load-extensions))
@ -192,8 +198,7 @@ There is NO WARRANTY, to the extent permitted by law.~%"))
(input-files (assoc-ref options 'input-files)) (input-files (assoc-ref options 'input-files))
(output-file (assoc-ref options 'output-file)) (output-file (assoc-ref options 'output-file))
(load-path (assoc-ref options 'load-path))) (load-path (assoc-ref options 'load-path)))
(if (or help? (null? input-files)) (when (or help? (null? input-files))
(begin
(format #t "Usage: compile [OPTION] FILE... (format #t "Usage: compile [OPTION] FILE...
Compile each Guile source file FILE into a Guile object. Compile each Guile source file FILE into a Guile object.
@ -208,6 +213,11 @@ Compile each Guile source file FILE into a Guile object.
-O, --optimize=OPT specify optimization passes to run; use `-Ohelp' -O, --optimize=OPT specify optimization passes to run; use `-Ohelp'
for a list of available optimizations for a list of available optimizations
--r6rs, --r7rs compile in an environment whose default bindings,
reader options, and load paths are adapted for
specific Scheme standards; see \"R6RS Support\"
and \"R7RS Support\" in the manual, for full details
-f, --from=LANG specify a source language other than `scheme' -f, --from=LANG specify a source language other than `scheme'
-t, --to=LANG specify a target language other than `bytecode' -t, --to=LANG specify a target language other than `bytecode'
-T, --target=TRIPLET produce bytecode for host TRIPLET -T, --target=TRIPLET produce bytecode for host TRIPLET
@ -216,7 +226,12 @@ Note that auto-compilation will be turned off.
Report bugs to <~A>.~%" Report bugs to <~A>.~%"
%guile-bug-report-address) %guile-bug-report-address)
(exit 0))) (exit 0))
(when (assoc-ref options 'install-r6rs?)
(install-r6rs!))
(when (assoc-ref options 'install-r7rs?)
(install-r7rs!))
;; Load FROM and TO before we have changed the load path. That way, when ;; Load FROM and TO before we have changed the load path. That way, when
;; cross-compiling Guile itself, we can be sure we're loading our own ;; cross-compiling Guile itself, we can be sure we're loading our own