summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-08-27 17:17:30 -0700
committerAndy Wingo <wingo@pobox.com>2008-08-27 17:17:30 -0700
commit72f7452826d282e3c23b249f8ffdf5de01e6184e (patch)
treee2e786b54bc4386631c6f5e682cda83f6cba661c /scripts
parent89c95c460b3d3c39e2870ed426182524a2f7b79b (diff)
downloadguile-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.am2
-rwxr-xr-xscripts/compile92
-rwxr-xr-xscripts/disassemble41
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)))