Commit 4e99fe51 authored by Robert P. Goldman's avatar Robert P. Goldman
Browse files

Merge branch 'ecl-patches'

parents fd255903 be390fe4
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
;;; Copyright (c) 2005-2011 Michael Goffioul (michael dot goffioul at swing dot be)
;;; Copyright (c) 2005 - 2007, Michael Goffioul (michael dot goffioul at swing dot be)
;;; Copyright (c) 2008, Juan Jose Garcia Ripoll
;;;
;;;   This program is free software; you can redistribute it and/or
;;;   modify it under the terms of the GNU Library General Public
@@ -13,6 +14,15 @@

(in-package :asdf)

;;;
;;; COMPILE-OP / LOAD-OP (in asdf.lisp)
;;;
;;; In ECL, these operations produce both FASL files and the
;;; object files that they are built from. Having both of them allows
;;; us to later on reuse the object files for bundles, libraries,
;;; standalone executables, etc.
;;;

;;;
;;; BUNDLE-OP
;;;
@@ -72,6 +82,11 @@
        (remove-keys '(type monolithic name-suffix)
                     (slot-value instance 'original-initargs))))

(defmethod bundle-op-build-args :around ((op lib-op))
  (let ((args (call-next-method)))
    (remf args :ld-flags)
    args))

(defvar *force-load-p* nil)

(defmethod operation-done-p :around ((operation load-op) c)
@@ -413,7 +428,6 @@
                       (and (first l) (register-pre-built-system name))
                       (values-list l)))))
#+win32 (push '("asd" . si::load-source) si::*load-hooks*)
(pushnew 'module-provide-asdf si:*module-provider-functions*)
(pushnew (translate-logical-pathname "SYS:") *central-registry*)

(provide :asdf)
+29 −15
Original line number Diff line number Diff line
@@ -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)
@@ -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
;;;;