chiark / gitweb /
ae90abf8f023707bbf03991ff70581a46294286d
[runlisp] / make-runlisp.lisp
1 ;;; -*-lisp-*-
2 ;;;
3 ;;; Build a runlisp image
4 ;;;
5 ;;; (c) 2006 Straylight/Edgeware
6 ;;;
7
8 ;;;----- Licensing notice ---------------------------------------------------
9 ;;;
10 ;;; This program is free software; you can redistribute it and/or modify
11 ;;; it under the terms of the GNU General Public License as published by
12 ;;; the Free Software Foundation; either version 2 of the License, or
13 ;;; (at your option) any later version.
14 ;;; 
15 ;;; This program is distributed in the hope that it will be useful,
16 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ;;; GNU General Public License for more details.
19 ;;; 
20 ;;; You should have received a copy of the GNU General Public License
21 ;;; along with this program; if not, write to the Free Software Foundation,
22 ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
24 #-ecl (load "runlisp" :verbose t)
25 #+ecl (defpackage #:runlisp (:export #:run))
26
27 ;;; Build core file for CMU CL.
28 #+cmu
29 (save-lisp "runlisp-cmucl.core"
30            :load-init-file nil
31            :site-init nil
32            :print-herald nil
33            :process-command-line nil
34            :batch-mode t
35            :init-function (lambda ()
36                             (if (runlisp:run) 0 127)))
37
38 ;;; Build mem file for CLISP.
39 #+clisp
40 (saveinitmem "runlisp-clisp.mem")
41
42 ;;; Build standalone binary for ECL.
43 #+ecl
44 (let ((fasl-skel #p"/var/cache/common-lisp-controller/0/ecl/thing.o"))
45   (c:build-program "runlisp-ecl"
46                    :lisp-files
47                    (append '("runlisp.o")
48                            (mapcan
49                             (lambda (thing)
50                               (let ((comp (car thing)))
51                                 (mapcar (lambda (file)
52                                           (merge-pathnames
53                                            (make-pathname
54                                             :directory (list :relative comp)
55                                             :name file)
56                                            fasl-skel))
57                                         (cdr thing))))
58                             '((#1="common-lisp-controller" #1#)
59                               ("asdf" "asdf")
60                               (#1# "post-sysdef-install"))))
61                    :init-name "init_runlisp_boot"
62                    :epilogue-code '(ext:quit (if (runlisp:run) 0 127))))
63
64 ;;; If we're not dead, die.
65 (ext:quit 0)
66
67 ;;;----- That's all, folks --------------------------------------------------