diff options
author | Andy Wingo <wingo@pobox.com> | 2008-08-27 17:17:30 -0700 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-08-27 17:17:30 -0700 |
commit | 72f7452826d282e3c23b249f8ffdf5de01e6184e (patch) | |
tree | e2e786b54bc4386631c6f5e682cda83f6cba661c /scripts | |
parent | 89c95c460b3d3c39e2870ed426182524a2f7b79b (diff) | |
download | guile-72f7452826d282e3c23b249f8ffdf5de01e6184e.tar.gz |
move guilec and guile-disasm to be guile-tools scripts
* .gitignore: Some touchups.
* configure.in:
* src/.cvsignore:
* src/Makefile.am:
* Makefile.am: No more src/.
* scripts/compile:
* scripts/disassemble: Moved here from src/ and changed into guile-tools
scripts.
* scripts/Makefile.am: Add the new scriptes.
* guilec.mk: Adapt to new way of invoking the compiler.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile.am | 2 | ||||
-rwxr-xr-x | scripts/compile | 92 | ||||
-rwxr-xr-x | scripts/disassemble | 41 |
3 files changed, 135 insertions, 0 deletions
diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 7b69312ce..463a1416d 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -25,6 +25,8 @@ AUTOMAKE_OPTIONS = gnu scripts_sources = \ PROGRAM \ autofrisk \ + compile \ + disassemble \ display-commentary \ doc-snarf \ frisk \ diff --git a/scripts/compile b/scripts/compile new file mode 100755 index 000000000..4154baea7 --- /dev/null +++ b/scripts/compile @@ -0,0 +1,92 @@ +#!/bin/sh +# -*- scheme -*- +exec ${GUILE-guile} -e '(@ (scripts compile) compile)' -s $0 "$@" +!# +;;; Compile --- Command-line Guile Scheme compiler + +;; Copyright 2005,2008 Free Software Foundation, Inc. +;; +;; This program 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, or +;; (at your option) any later version. +;; +;; This program 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 this software; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301 USA + +;;; Author: Ludovic Courtès <ludovic.courtes@laas.fr> +;;; Author: Andy Wingo <wingo@pobox.com> + +;;; Commentary: + +;; Usage: compile [ARGS] +;; +;; PROGRAM does something. +;; +;; TODO: Write it! + +;;; Code: + +(read-set! keywords 'prefix) + +(define-module (scripts compile) + :use-module (system base compile) + :use-module (ice-9 getopt-long) + :export (compile)) + +(define %options + '((help (single-char #\h) (value #f)) + (optimize (single-char #\O) (value #f)) + (expand-only (single-char #\e) (value #f)) + (translate-only (single-char #\t) (value #f)) + (compile-only (single-char #\c) (value #f)))) + +(define (compile args) + (let* ((options (getopt-long args %options)) + (help? (option-ref options 'help #f)) + (optimize? (option-ref options 'optimize #f)) + (expand-only? (option-ref options 'expand-only #f)) + (translate-only? (option-ref options 'translate-only #f)) + (compile-only? (option-ref options 'compile-only #f))) + (if help? + (begin + (format #t "Usage: compile [OPTION] FILE... +Compile each Guile Scheme source file FILE into a Guile object. + + -h, --help print this help message + -O, --optimize turn on optimizations + -e, --expand-only only go through the code expansion stage + -t, --translate-only stop after the translation to GHIL + -c, --compile-only stop after the compilation to GLIL + +Report bugs to <guile-user@gnu.org>.~%") + (exit 0))) + + (let ((compile-opts (append (if optimize? '(:O) '()) + (if expand-only? '(:e) '()) + (if translate-only? '(:t) '()) + (if compile-only? '(:c) '())))) + + (catch #t + (lambda () + (for-each (lambda (file) + (apply compile-file file compile-opts)) + (option-ref options '() '()))) + (lambda (key . args) + (format (current-error-port) "exception `~a' caught~a~%" key + (if (null? args) "" + (if (string? (car args)) + (string-append " in subr `" (car args) "'") + ""))) + + (format (current-error-port) "removing compiled files due to errors~%") + (false-if-exception + (for-each unlink (map compiled-file-name files))) + (exit 1)))))) diff --git a/scripts/disassemble b/scripts/disassemble new file mode 100755 index 000000000..be55cf338 --- /dev/null +++ b/scripts/disassemble @@ -0,0 +1,41 @@ +#!/bin/sh +# -*- scheme -*- +exec ${GUILE-guile} -e '(@ (scripts disassemble) disassemble)' -s $0 "$@" +!# +;;; Disassemble --- Disassemble .go files into something human-readable + +;; Copyright 2005,2008 Free Software Foundation, Inc. +;; +;; This program 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, or +;; (at your option) any later version. +;; +;; This program 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 this software; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301 USA + +;;; Author: Ludovic Courtès <ludovic.courtes@laas.fr> +;;; Author: Andy Wingo <wingo@pobox.com> + +;;; Commentary: + +;; Usage: disassemble [ARGS] + +;;; Code: + +(define-module (scripts disassemble) + #:use-module (system vm objcode) + #:use-module (system vm disasm) + #:export (disassemble)) + +(define (disassemble args) + (for-each (lambda (file) + (disassemble-objcode (load-objcode file))) + (cdr args))) |