Commit 53b42072 authored by Robert P. Goldman's avatar Robert P. Goldman
Browse files

Add use-ecl-byte-compiler-p to Juanjo's patches.

parent 8f5e2d90
Loading
Loading
Loading
Loading
+31 −17
Original line number Diff line number Diff line
;; -*- mode: common-lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
;;; This is ASDF 2.017.1: Another System Definition Facility.
;;; This is ASDF 2.017.2: Another System Definition Facility.
;;;
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel@common-lisp.net>.
@@ -61,7 +61,7 @@
  (setf excl::*autoload-package-name-alist*
        (remove "asdf" excl::*autoload-package-name-alist*
                :test 'equalp :key 'car)) ; need that BEFORE any mention of package ASDF as below
  #+(and ecl (not ecl-bytecmp)) (require :cmp)
  #+ecl (unless (member :ecl-bytecmp *features*) (require :cmp))
  #+gcl ;; Debian's GCL 2.7 has bugs with compiling multiple-value stuff, but can run ASDF 2.011
  (when (or (< system::*gcl-major-version* 2) ;; GCL 2.6 fails to fully compile ASDF at all
            (and (= system::*gcl-major-version* 2)
@@ -112,7 +112,7 @@
         ;; "2.345.6" would be a development version in the official upstream
         ;; "2.345.0.7" would be your seventh local modification of official release 2.345
         ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
         (asdf-version "2.017.1")
         (asdf-version "2.017.2")
         (existing-asdf (find-class 'component nil))
         (existing-version *asdf-version*)
         (already-there (equal asdf-version existing-version)))
@@ -298,6 +298,7 @@
            #:*compile-file-warnings-behaviour*
            #:*compile-file-failure-behaviour*
            #:*resolve-symlinks*
            #:*require-asdf-operator*
            #:*asdf-verbose*

            #:asdf-version
@@ -4121,8 +4122,9 @@ with a different configuration, so the configuration would be re-read then."
#+ecl
(progn
  (setf *compile-op-compile-file-function*
        (lambda (input-file &rest keys &key output-file &allow-other-keys)
          (declare (ignore output-file))
        (lambda (input-file &rest keys &key &allow-other-keys)
          (if (use-ecl-byte-compiler-p)
              (apply 'compile-file input-file keys)
              (multiple-value-bind (object-file flags1 flags2)
                  (apply 'compile-file* input-file :system-p t keys)
                (values (and object-file
@@ -4130,13 +4132,15 @@ with a different configuration, so the configuration would be re-read then."
                                            :lisp-files (list object-file))
                             object-file)
                        flags1
                    flags2))))
                        flags2)))))

  (defmethod output-files ((operation compile-op) (c cl-source-file))
    (declare (ignorable operation))
    (let ((p (lispize-pathname (component-pathname c))))
      (list (compile-file-pathname p :type :object)
            (compile-file-pathname p :type :fasl))))
    (let* ((p (lispize-pathname (component-pathname c)))
           (f (compile-file-pathname p :type :fasl)))
      (if (use-ecl-byte-compiler-p)
          (list f)
          (list (compile-file-pathname p :type :object) f))))

  (defmethod perform ((o load-op) (c cl-source-file))
    (map () #'load
@@ -4144,6 +4148,16 @@ with a different configuration, so the configuration would be re-read then."
           :unless (string= (pathname-type i) "fas")
               :collect (compile-file-pathname (lispize-pathname i))))))

;;;---------------------------------------------------------------------------
;;; ECL logic for switching between conventional and byte compiling
;;;---------------------------------------------------------------------------
#+ecl
(defun use-ecl-byte-compiler-p ()
  (member :ecl-bytecmp *features*))
#-ecl
(defun use-ecl-byte-compiler-p ()
  nil)

;;;; -----------------------------------------------------------------
;;;; Hook into REQUIRE for ABCL, CLISP, ClozureCL, CMUCL, ECL and SBCL
;;;;