summaryrefslogtreecommitdiffstats
path: root/compile.scm
diff options
context:
space:
mode:
authorLaMont Jones <lamont@debian.org>2003-05-07 08:36:40 -0600
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:27 -0800
commite21d47d7813159bb71e0671df9b52ec0470c358d (patch)
tree3c7770ea846123c291f599044e9f234ac17616bb /compile.scm
parent8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693 (diff)
parentdeda2c0fd8689349fea2a900199a76ff7ecb319e (diff)
downloadscm-e21d47d7813159bb71e0671df9b52ec0470c358d.tar.gz
scm-e21d47d7813159bb71e0671df9b52ec0470c358d.zip
Import Debian changes 5d6-3.2debian/5d6-3.2
scm (5d6-3.2) unstable; urgency=low * Fix hppa compile. Closes: #144062 scm (5d6-3.1) unstable; urgency=low * NMU with patch from James Troup, to fix FTBFS on sparc. Closes: #191171 scm (5d6-3) unstable; urgency=low * Add build depend on xlibs-dev (Closes: #148020) scm (5d6-2) unstable; urgency=low * Remove libregexx-dev from build-depends. * Change build to use ./scmlit rather than scmlit (should fix some build problems) (looks like alpha is mostly building) * New release (Closes: #140175) * Built with turtlegraphics last time (Closes: #58515) scm (5d6-1) unstable; urgency=low * New upstream. * Add xlib and turtlegr to requested list of features. (closes some bug) * Make clean actually clean most everything up. * Remove hacks renaming build to something else and just set build as a .PHONY target in debian/rules. * Add the turtlegr code. scm (5d5-1) unstable; urgency=low * New upstream * Has fixes for 64 bit archs. May fix alpha compile problem. Does fix (Closes: #140175) * Take out -O2 arg. scm (5d4-3) unstable; urgency=low * Don't link with regexx, but just use libc6's regular expression functions. * Define (terms) to output /usr/share/common-licenses/GPL (Closes: #119321) scm (5d4-2) unstable; urgency=low * Add texinfo to build depends (Closes: #107011) scm (5d4-1) unstable; urgency=low * New upstream release. * Move install-info --remove to prerm. scm (5d3-5) unstable; urgency=low * Move scm info files to section "The Algorithmic Language Scheme" to match up with guile. scm (5d3-4) unstable; urgency=low * Fix build depends (Closes: #76691) scm (5d3-3) unstable; urgency=low * Fix path in scm dhelp file. scm (5d3-2) unstable; urgency=low * Actually put the header files in the package. Oops. scm (5d3-1) unstable; urgency=low * New upstream. (Closes: #74761) * Make (terms) use new license location. * Make use libregexx rather than librx. * Fix build depends for above. * Using new regex lib seems to fix crash (Closes: #66787) * Consider adding scm-dev package with headers, but instead just add the headers to the scm package. (Closes: #70787) * Add doc-base support.
Diffstat (limited to 'compile.scm')
-rwxr-xr-xcompile.scm112
1 files changed, 112 insertions, 0 deletions
diff --git a/compile.scm b/compile.scm
new file mode 100755
index 0000000..ce96822
--- /dev/null
+++ b/compile.scm
@@ -0,0 +1,112 @@
+#! /bin/sh
+:;exec scm -e"(set! *script* \"$0\")" -f$0 $*
+
+;; Copyright (C) 1992-2002 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, 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+;;
+;; As a special exception, the Free Software Foundation gives permission
+;; for additional uses of the text contained in its release of SCM.
+;;
+;; The exception is that, if you link the SCM library with other files
+;; to produce an executable, this does not by itself cause the
+;; resulting executable to be covered by the GNU General Public License.
+;; Your use of that executable is in no way restricted on account of
+;; linking the SCM library code into it.
+;;
+;; This exception does not however invalidate any other reasons why
+;; the executable file might be covered by the GNU General Public License.
+;;
+;; This exception applies only to the code released by the
+;; Free Software Foundation under the name SCM. If you copy
+;; code from other Free Software Foundation releases into a copy of
+;; SCM, as the General Public License permits, the exception does
+;; not apply to the code that you add in this way. To avoid misleading
+;; anyone as to the status of such modified files, you must delete
+;; this exception notice from them.
+;;
+;; If you write modifications of your own for SCM, it is your choice
+;; whether to permit this exception to apply to your modifications.
+;; If you do not wish that, delete this exception notice.
+
+;;;; "compile.scm", Compile C ==> Scheme ==> object-file.
+;;; Author: Aubrey Jaffer.
+
+(define (go-script)
+ (cond ((not *script*))
+ ((and (<= 1 (- (length *argv*) *optind*))
+ (not (eqv? #\- (string-ref (car (list-tail *argv* *optind*)) 0))))
+ (apply compile-file (list-tail *argv* *optind*)))
+ (else
+ (display "\
+\
+Usage: compile.scm FILE1.scm FILE2.scm ...
+\
+ Compiles Scheme FILE1.scm FILE2.scm ... to an object file named
+ FILE1<object-suffix>, where <object-suffix> is the object file suffix
+ for your computer (for instance, `.o'). FILE1.scm must be in the
+ current directory; FILE2.scm ... can be in other directories.
+"
+ (current-error-port))
+ (exit #f))))
+
+;;; This unusual autoload loads either the
+;;; source or compiled version if present.
+(if (not (defined? hobbit)) ;Autoload for hobbit
+(define (hobbit . args)
+ (require 'hobbit)
+ (apply hobbit args)))
+
+(define (compile-file file . args)
+ (require 'glob)
+ (apply hobbit file args)
+ (let ((command
+ (list "build"
+ "-hsystem"
+ "-tdll"
+ (string-append "--compiler-options=-I" (implementation-vicinity))
+ "-c" (replace-suffix file (scheme-file-suffix) ".c"))))
+ (require 'build)
+ (cond ((>= (verbose) 3) (write command) (newline)))
+ (build-from-whole-argv command)))
+
+(define (compile->executable name . args)
+ (define sfs (scheme-file-suffix))
+ (require 'glob)
+ (for-each hobbit args)
+ (let ((inits (map (lambda (file)
+ (string-append "-iinit_" (replace-suffix file sfs "")))
+ args))
+ (files (map (lambda (file)
+ (string-append "-c" (replace-suffix file sfs ".c")))
+ args)))
+ (define command (append (list "build"
+ "-hsystem"
+ "--type=exe"
+ "-o" name
+ "-F" "compiled-closure" "inexact"
+ (string-append "--linker-options=-L"
+ (implementation-vicinity)))
+ files
+ inits))
+ (require 'build)
+ (cond ((>= (verbose) 3) (write command) (newline)))
+ (build-from-whole-argv command)))
+
+(go-script)
+
+;;; Local Variables:
+;;; mode:scheme
+;;; End: