Changeset 11675


Ignore:
Timestamp:
02/21/09 09:33:53 (12 years ago)
Author:
ehuelsmann
Message:

Support compiling the system to a different output path.

COMPILE-FILE-IF-NEEDED needs to support other keywords (those applying to COMPILE-FILE)
%COMPILE-SYSTEM adapted to merge the output path with the name of the file to compile.

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/compile-file.lisp

    r11568 r11675  
    479479    (values (truename output-file) warnings-p failure-p)))
    480480
    481 (defun compile-file-if-needed (input-file &rest allargs &key force-compile)
     481(defun compile-file-if-needed (input-file &rest allargs &key force-compile
     482                               &allow-other-keys)
    482483  (setf input-file (truename input-file))
    483484  (cond (force-compile
  • trunk/abcl/src/org/armedbear/lisp/compile-system.lisp

    r11455 r11675  
    8080         (grovel-java-definitions-in-file file stream))))))
    8181
    82 (defun %compile-system ()
     82(defun %compile-system (&key output-path)
    8383  (let ((*default-pathname-defaults* (pathname *lisp-home*))
    84          (*warn-on-redefinition* nil))
    85     (load (compile-file-if-needed "coerce.lisp"))
    86     (load (compile-file-if-needed "open.lisp"))
    87     (load (compile-file-if-needed "dump-form.lisp"))
    88     (load (compile-file-if-needed "compiler-types.lisp"))
    89     (load (compile-file-if-needed "compile-file.lisp"))
    90     (load (compile-file-if-needed "precompiler.lisp"))
    91     (load (compile-file-if-needed "compiler-pass1.lisp"))
    92     (load (compile-file-if-needed "compiler-pass2.lisp"))
    93     (load (compile-file-if-needed "jvm.lisp"))
    94     (load (compile-file-if-needed "source-transform.lisp"))
    95     (load (compile-file-if-needed "compiler-macro.lisp"))
    96     (load (compile-file-if-needed "opcodes.lisp"))
    97     (load (compile-file-if-needed "setf.lisp"))
    98     (load (compile-file-if-needed "substitute.lisp"))
    99     (load (compile-file-if-needed "clos.lisp"))
    100     ;; Order matters for these files.
    101     (mapc #'compile-file-if-needed '("collect.lisp"
    102                                      "macros.lisp"
    103                                      "loop.lisp"))
    104     (load (compile-file-if-needed "backquote.lisp"))
    105     (load (compile-file-if-needed "early-defuns.lisp"))
    106     (load (compile-file-if-needed "typep.lisp"))
    107     (load (compile-file-if-needed "subtypep.lisp"))
    108     (load (compile-file-if-needed "find.lisp"))
    109     (load (compile-file-if-needed "print.lisp"))
    110     (load (compile-file-if-needed "pprint-dispatch.lisp"))
    111     (load (compile-file-if-needed "pprint.lisp"))
    112     (load (compile-file-if-needed "format.lisp"))
    113     (load (compile-file-if-needed "delete.lisp"))
    114     (load (compile-file-if-needed "concatenate.lisp"))
    115     (load (compile-file-if-needed "ldb.lisp"))
    116     (load (compile-file-if-needed "destructuring-bind.lisp"))
    117     ;; But not for these.
    118     (mapc #'compile-file-if-needed '("adjoin.lisp"
    119                                      "and.lisp"
    120                                      "apropos.lisp"
    121                                      "arrays.lisp"
    122                                      "asdf.lisp"
    123                                      "assert.lisp"
    124                                      "assoc.lisp"
    125                                      "autoloads.lisp"
    126                                      "aver.lisp"
    127                                      "bit-array-ops.lisp"
    128                                      "boole.lisp"
    129                                      ;;"boot.lisp"
    130                                      "butlast.lisp"
    131                                      "byte-io.lisp"
    132                                      "case.lisp"
    133                                      "chars.lisp"
    134                                      "check-type.lisp"
    135                                      "compile-file-pathname.lisp"
    136                                      "compile-system.lisp"
    137                                      "compiler-error.lisp"
    138                                      "cond.lisp"
    139                                      "copy-seq.lisp"
    140                                      "copy-symbol.lisp"
    141                                      "count.lisp"
    142                                      "debug.lisp"
    143                                      "define-modify-macro.lisp"
    144                                      "define-symbol-macro.lisp"
    145                                      "defmacro.lisp"
    146                                      "defpackage.lisp"
    147                                      "defsetf.lisp"
    148                                      "defstruct.lisp"
    149                                      "deftype.lisp"
    150                                      "delete-duplicates.lisp"
    151                                      "deposit-field.lisp"
    152                                      "describe.lisp"
    153                                      "describe-compiler-policy.lisp"
    154                                      "directory.lisp"
    155                                      "disassemble.lisp"
    156                                      "do-all-symbols.lisp"
    157                                      "do-external-symbols.lisp"
    158                                      "do-symbols.lisp"
    159                                      "do.lisp"
    160                                      "dolist.lisp"
    161                                      "dotimes.lisp"
    162                                      "dribble.lisp"
    163                                      "dump-class.lisp"
    164                                      "ed.lisp"
    165                                      "enough-namestring.lisp"
    166                                      "ensure-directories-exist.lisp"
    167                                      "error.lisp"
    168                                      "featurep.lisp"
    169                                      "fdefinition.lisp"
    170                                      "fill.lisp"
    171                                      "find-all-symbols.lisp"
    172                                      "gentemp.lisp"
    173                                      "gray-streams.lisp"
    174                                      "inline.lisp"
    175                                      "inspect.lisp"
    176                                      ;;"j.lisp"
    177                                      "java.lisp"
    178                                      "known-functions.lisp"
    179                                      "known-symbols.lisp"
    180                                      "late-setf.lisp"
    181                                      "lcm.lisp"
    182                                      "ldiff.lisp"
    183                                      "list-length.lisp"
    184                                      "list.lisp"
    185                                      "load.lisp"
    186                                      "make-hash-table.lisp"
    187                                      "make-load-form-saving-slots.lisp"
    188                                      "make-sequence.lisp"
    189                                      "make-string-output-stream.lisp"
    190                                      "make-string.lisp"
    191                                      "map-into.lisp"
    192                                      "map.lisp"
    193                                      "map1.lisp"
    194                                      "mask-field.lisp"
    195                                      "member-if.lisp"
    196                                      "mismatch.lisp"
    197                                      "multiple-value-bind.lisp"
    198                                      "multiple-value-list.lisp"
    199                                      "multiple-value-setq.lisp"
    200                                      "nsubstitute.lisp"
    201                                      "nth-value.lisp"
    202                                      "numbers.lisp"
    203                                      "or.lisp"
    204                                      "parse-integer.lisp"
    205                                      "parse-lambda-list.lisp"
    206                                      "pathnames.lisp"
    207                                      "package.lisp"
    208                                      "print-object.lisp"
    209                                      "print-unreadable-object.lisp"
    210                                      "proclaim.lisp"
    211                                      "profiler.lisp"
    212                                      "prog.lisp"
    213                                      "psetf.lisp"
    214                                      "query.lisp"
    215                                      "read-conditional.lisp"
    216                                      "read-from-string.lisp"
    217                                      "read-sequence.lisp"
    218                                      "reduce.lisp"
    219                                      "remf.lisp"
    220                                      "remove-duplicates.lisp"
    221                                      "remove.lisp"
    222                                      "replace.lisp"
    223                                      "require.lisp"
    224                                      "restart.lisp"
    225                                      "revappend.lisp"
    226                                      "rotatef.lisp"
    227                                      "rt.lisp"
    228                                      ;;"run-benchmarks.lisp"
    229                                      "run-shell-command.lisp"
    230                                      ;;"runtime-class.lisp"
    231                                      "search.lisp"
    232                                      "sequences.lisp"
    233                                      "sets.lisp"
    234                                      "shiftf.lisp"
    235                                      "signal.lisp"
    236                                      "socket.lisp"
    237                                      "sort.lisp"
    238                                      "step.lisp"
    239                                      "strings.lisp"
    240                                      "sublis.lisp"
    241                                      "subst.lisp"
    242                                      "tailp.lisp"
    243                                      "time.lisp"
    244                                      "top-level.lisp"
    245                                      "trace.lisp"
    246                                      "tree-equal.lisp"
    247                                      "upgraded-complex-part-type.lisp"
    248                                      "with-accessors.lisp"
    249                                      "with-hash-table-iterator.lisp"
    250                                      "with-input-from-string.lisp"
    251                                      "with-mutex.lisp"
    252                                      "with-open-file.lisp"
    253                                      "with-output-to-string.lisp"
    254                                      "with-package-iterator.lisp"
    255                                      "with-slots.lisp"
    256                                      "with-standard-io-syntax.lisp"
    257                                      "with-thread-lock.lisp"
    258                                      "write-sequence.lisp"))
     84        (*warn-on-redefinition* nil))
     85    (unless output-path
     86      (setf output-path *default-pathname-defaults*))
     87    (flet ((do-compile (file)
     88             (print file)
     89             (print output-path)
     90             (let ((out (make-pathname :type "abcl"
     91                                       :defaults (print (merge-pathnames
     92                                                  file output-path)))))
     93               (compile-file-if-needed file :output-file out))))
     94      (load (do-compile "coerce.lisp"))
     95      (load (do-compile "open.lisp"))
     96      (load (do-compile "dump-form.lisp"))
     97      (load (do-compile "compiler-types.lisp"))
     98      (load (do-compile "compile-file.lisp"))
     99      (load (do-compile "precompiler.lisp"))
     100      (load (do-compile "compiler-pass1.lisp"))
     101      (load (do-compile "compiler-pass2.lisp"))
     102      (load (do-compile "jvm.lisp"))
     103      (load (do-compile "source-transform.lisp"))
     104      (load (do-compile "compiler-macro.lisp"))
     105      (load (do-compile "opcodes.lisp"))
     106      (load (do-compile "setf.lisp"))
     107      (load (do-compile "substitute.lisp"))
     108      (load (do-compile "clos.lisp"))
     109      ;; Order matters for these files.
     110      (mapc #'do-compile '("collect.lisp"
     111                           "macros.lisp"
     112                           "loop.lisp"))
     113      (load (do-compile "backquote.lisp"))
     114      (load (do-compile "early-defuns.lisp"))
     115      (load (do-compile "typep.lisp"))
     116      (load (do-compile "subtypep.lisp"))
     117      (load (do-compile "find.lisp"))
     118      (load (do-compile "print.lisp"))
     119      (load (do-compile "pprint-dispatch.lisp"))
     120      (load (do-compile "pprint.lisp"))
     121      (load (do-compile "format.lisp"))
     122      (load (do-compile "delete.lisp"))
     123      (load (do-compile "concatenate.lisp"))
     124      (load (do-compile "ldb.lisp"))
     125      (load (do-compile "destructuring-bind.lisp"))
     126      ;; But not for these.
     127      (mapc #'do-compile '("adjoin.lisp"
     128                           "and.lisp"
     129                           "apropos.lisp"
     130                           "arrays.lisp"
     131                           "asdf.lisp"
     132                           "assert.lisp"
     133                           "assoc.lisp"
     134                           "autoloads.lisp"
     135                           "aver.lisp"
     136                           "bit-array-ops.lisp"
     137                           "boole.lisp"
     138                           ;;"boot.lisp"
     139                           "butlast.lisp"
     140                           "byte-io.lisp"
     141                           "case.lisp"
     142                           "chars.lisp"
     143                           "check-type.lisp"
     144                           "compile-file-pathname.lisp"
     145                           "compile-system.lisp"
     146                           "compiler-error.lisp"
     147                           "cond.lisp"
     148                           "copy-seq.lisp"
     149                           "copy-symbol.lisp"
     150                           "count.lisp"
     151                           "debug.lisp"
     152                           "define-modify-macro.lisp"
     153                           "define-symbol-macro.lisp"
     154                           "defmacro.lisp"
     155                           "defpackage.lisp"
     156                           "defsetf.lisp"
     157                           "defstruct.lisp"
     158                           "deftype.lisp"
     159                           "delete-duplicates.lisp"
     160                           "deposit-field.lisp"
     161                           "describe.lisp"
     162                           "describe-compiler-policy.lisp"
     163                           "directory.lisp"
     164                           "disassemble.lisp"
     165                           "do-all-symbols.lisp"
     166                           "do-external-symbols.lisp"
     167                           "do-symbols.lisp"
     168                           "do.lisp"
     169                           "dolist.lisp"
     170                           "dotimes.lisp"
     171                           "dribble.lisp"
     172                           "dump-class.lisp"
     173                           "ed.lisp"
     174                           "enough-namestring.lisp"
     175                           "ensure-directories-exist.lisp"
     176                           "error.lisp"
     177                           "featurep.lisp"
     178                           "fdefinition.lisp"
     179                           "fill.lisp"
     180                           "find-all-symbols.lisp"
     181                           "gentemp.lisp"
     182                           "gray-streams.lisp"
     183                           "inline.lisp"
     184                           "inspect.lisp"
     185                           ;;"j.lisp"
     186                           "java.lisp"
     187                           "known-functions.lisp"
     188                           "known-symbols.lisp"
     189                           "late-setf.lisp"
     190                           "lcm.lisp"
     191                           "ldiff.lisp"
     192                           "list-length.lisp"
     193                           "list.lisp"
     194                           "load.lisp"
     195                           "make-hash-table.lisp"
     196                           "make-load-form-saving-slots.lisp"
     197                           "make-sequence.lisp"
     198                           "make-string-output-stream.lisp"
     199                           "make-string.lisp"
     200                           "map-into.lisp"
     201                           "map.lisp"
     202                           "map1.lisp"
     203                           "mask-field.lisp"
     204                           "member-if.lisp"
     205                           "mismatch.lisp"
     206                           "multiple-value-bind.lisp"
     207                           "multiple-value-list.lisp"
     208                           "multiple-value-setq.lisp"
     209                           "nsubstitute.lisp"
     210                           "nth-value.lisp"
     211                           "numbers.lisp"
     212                           "or.lisp"
     213                           "parse-integer.lisp"
     214                           "parse-lambda-list.lisp"
     215                           "pathnames.lisp"
     216                           "package.lisp"
     217                           "print-object.lisp"
     218                           "print-unreadable-object.lisp"
     219                           "proclaim.lisp"
     220                           "profiler.lisp"
     221                           "prog.lisp"
     222                           "psetf.lisp"
     223                           "query.lisp"
     224                           "read-conditional.lisp"
     225                           "read-from-string.lisp"
     226                           "read-sequence.lisp"
     227                           "reduce.lisp"
     228                           "remf.lisp"
     229                           "remove-duplicates.lisp"
     230                           "remove.lisp"
     231                           "replace.lisp"
     232                           "require.lisp"
     233                           "restart.lisp"
     234                           "revappend.lisp"
     235                           "rotatef.lisp"
     236                           "rt.lisp"
     237                           ;;"run-benchmarks.lisp"
     238                           "run-shell-command.lisp"
     239                           ;;"runtime-class.lisp"
     240                           "search.lisp"
     241                           "sequences.lisp"
     242                           "sets.lisp"
     243                           "shiftf.lisp"
     244                           "signal.lisp"
     245                           "socket.lisp"
     246                           "sort.lisp"
     247                           "step.lisp"
     248                           "strings.lisp"
     249                           "sublis.lisp"
     250                           "subst.lisp"
     251                           "tailp.lisp"
     252                           "time.lisp"
     253                           "top-level.lisp"
     254                           "trace.lisp"
     255                           "tree-equal.lisp"
     256                           "upgraded-complex-part-type.lisp"
     257                           "with-accessors.lisp"
     258                           "with-hash-table-iterator.lisp"
     259                           "with-input-from-string.lisp"
     260                           "with-mutex.lisp"
     261                           "with-open-file.lisp"
     262                           "with-output-to-string.lisp"
     263                           "with-package-iterator.lisp"
     264                           "with-slots.lisp"
     265                           "with-standard-io-syntax.lisp"
     266                           "with-thread-lock.lisp"
     267                           "write-sequence.lisp")))
    259268    t))
    260269
    261 (defun compile-system (&key quit (zip t))
     270(defun compile-system (&key quit (zip t) output-path)
    262271  (let ((status -1))
    263272    (check-lisp-home)
     
    265274     (with-compilation-unit ()
    266275       (let ((*compile-file-zip* zip))
    267          (%compile-system))
     276         (%compile-system :output-path output-path))
    268277       (when (zerop (+ jvm::*errors* jvm::*warnings*))
    269278         (setf status 0))))
Note: See TracChangeset for help on using the changeset viewer.