Raymond Toy pushed to branch sparc64-dev at cmucl / cmucl

Commits:

9 changed files:

Changes:

  • BUILDING
    ... ... @@ -25,6 +25,9 @@ b) A supported C compiler for the C runtime code.
    25 25
        means the vendor-supplied C compiler.  The compiler must be
    
    26 26
        available under the name specified by your ports Config file.
    
    27 27
     
    
    28
    +   Note for FreeBSD 10 and above: The build requires gcc (Clang will
    
    29
    +   not work) and the lib32 compatiblity package.
    
    30
    +
    
    28 31
     c) GNU make
    
    29 32
     
    
    30 33
        This has to be available either as gmake or make in your PATH, or
    
    ... ... @@ -691,3 +694,4 @@ In particular steps 3, 4, and 5 can be combined into one by using the
    691 694
     -c, -r, and -l options for cross-build-world.sh.  The -c option cleans
    
    692 695
     out the targe and cross directories; -r does step 4; and -l does step
    
    693 696
     5.
    
    697
    +===============

  • src/contrib/asdf/asdf.lisp
    1 1
     ;;; -*- mode: Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; buffer-read-only: t; -*-
    
    2
    -;;; This is ASDF 3.2.0: Another System Definition Facility.
    
    2
    +;;; This is ASDF 3.2.1: Another System Definition Facility.
    
    3 3
     ;;;
    
    4 4
     ;;; Feedback, bug reports, and patches are all welcome:
    
    5 5
     ;;; please mail to <asdf-devel@common-lisp.net>.
    
    ... ... @@ -1616,7 +1616,8 @@ or a string describing the format-control of a simple-condition."
    1616 1616
          (format-control :initarg :format-control)
    
    1617 1617
          (format-arguments :initarg :format-arguments))
    
    1618 1618
         (:report (lambda (condition stream)
    
    1619
    -               (format stream "Not implemented: ~s~@[ ~?~]"
    
    1619
    +               (format stream "Not (currently) implemented on ~A: ~S~@[ ~?~]"
    
    1620
    +                       (nth-value 1 (symbol-call :uiop :implementation-type))
    
    1620 1621
                            (slot-value condition 'functionality)
    
    1621 1622
                            (slot-value condition 'format-control)
    
    1622 1623
                            (slot-value condition 'format-arguments)))))
    
    ... ... @@ -1667,7 +1668,7 @@ message, that takes the functionality as its first argument (that can be skipped
    1667 1668
     (in-package :uiop/version)
    
    1668 1669
     
    
    1669 1670
     (with-upgradability ()
    
    1670
    -  (defparameter *uiop-version* "3.2.0")
    
    1671
    +  (defparameter *uiop-version* "3.2.1")
    
    1671 1672
     
    
    1672 1673
       (defun unparse-version (version-list)
    
    1673 1674
         "From a parsed version (a list of natural numbers), compute the version string"
    
    ... ... @@ -1865,7 +1866,7 @@ keywords explicitly."
    1865 1866
           ((eq :not (car x)) (assert (null (cddr x))) (not (featurep (cadr x))))
    
    1866 1867
           ((eq :or (car x)) (some #'featurep (cdr x)))
    
    1867 1868
           ((eq :and (car x)) (every #'featurep (cdr x)))
    
    1868
    -      (t (error "Malformed feature specification ~S" x))))
    
    1869
    +      (t (parameter-error "~S: malformed feature specification ~S" 'featurep x))))
    
    1869 1870
     
    
    1870 1871
       ;; Starting with UIOP 3.1.5, these are runtime tests.
    
    1871 1872
       ;; You may bind *features* with a copy of what your target system offers to test its properties.
    
    ... ... @@ -1948,7 +1949,7 @@ use getenvp to return NIL in such a case."
    1948 1949
         #+mkcl (#.(or (find-symbol* 'getenv :si nil) (find-symbol* 'getenv :mk-ext nil)) x)
    
    1949 1950
         #+sbcl (sb-ext:posix-getenv x)
    
    1950 1951
         #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mcl mkcl sbcl scl xcl)
    
    1951
    -    (error "~S is not supported on your implementation" 'getenv))
    
    1952
    +    (not-implemented-error 'getenv))
    
    1952 1953
     
    
    1953 1954
       (defsetf getenv (x) (val)
    
    1954 1955
         "Set an environment variable."
    
    ... ... @@ -1962,7 +1963,7 @@ use getenvp to return NIL in such a case."
    1962 1963
         #+mkcl `(mkcl:setenv ,x ,val)
    
    1963 1964
         #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1))
    
    1964 1965
         #-(or allegro clisp clozure cmucl ecl lispworks mkcl sbcl)
    
    1965
    -    '(error "~S ~S is not supported on your implementation" 'setf 'getenv))
    
    1966
    +    '(not-implemented-error '(setf getenv)))
    
    1966 1967
     
    
    1967 1968
       (defun getenvp (x)
    
    1968 1969
         "Predicate that is true if the named variable is present in the libc environment,
    
    ... ... @@ -2059,7 +2060,8 @@ then returning the non-empty string value of the variable"
    2059 2060
                           (ecase ext:*case-mode* (:upper "") (:lower "l")))
    
    2060 2061
             #+ecl (format nil "~A~@[-~A~]" s
    
    2061 2062
                           (let ((vcs-id (ext:lisp-implementation-vcs-id)))
    
    2062
    -                        (subseq vcs-id 0 (min (length vcs-id) 8))))
    
    2063
    +                        (unless (equal vcs-id "UNKNOWN")
    
    2064
    +                          (subseq vcs-id 0 (min (length vcs-id) 8)))))
    
    2063 2065
             #+gcl (subseq s (1+ (position #\space s)))
    
    2064 2066
             #+genera
    
    2065 2067
             (multiple-value-bind (major minor) (sct:get-system-version "System")
    
    ... ... @@ -2124,7 +2126,7 @@ suitable for use as a directory name to segregate Lisp FASLs, C dynamic librarie
    2124 2126
             #+mkcl (mk-ext:getcwd)
    
    2125 2127
             #+sbcl (sb-ext:parse-native-namestring (sb-unix:posix-getcwd/))
    
    2126 2128
             #+xcl (extensions:current-directory)
    
    2127
    -        (error "getcwd not supported on your implementation")))
    
    2129
    +        (not-implemented-error 'getcwd)))
    
    2128 2130
     
    
    2129 2131
       (defun chdir (x)
    
    2130 2132
         "Change current directory, as per POSIX chdir(2), to a given pathname object"
    
    ... ... @@ -2142,7 +2144,7 @@ suitable for use as a directory name to segregate Lisp FASLs, C dynamic librarie
    2142 2144
           #+mkcl (mk-ext:chdir x)
    
    2143 2145
           #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :chdir (sb-ext:native-namestring x)))
    
    2144 2146
           #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mkcl sbcl scl xcl)
    
    2145
    -      (error "chdir not supported on your implementation"))))
    
    2147
    +      (not-implemented-error 'chdir))))
    
    2146 2148
     
    
    2147 2149
     
    
    2148 2150
     ;;;; -----------------------------------------------------------------
    
    ... ... @@ -2286,7 +2288,8 @@ that is a list and not a string."
    2286 2288
           ((consp directory)
    
    2287 2289
            (cons :relative directory))
    
    2288 2290
           (t
    
    2289
    -       (error (compatfmt "~@<Unrecognized pathname directory component ~S~@:>") directory))))
    
    2291
    +       (parameter-error (compatfmt "~@<~S: Unrecognized pathname directory component ~S~@:>")
    
    2292
    +                        'normalize-pathname-directory-component directory))))
    
    2290 2293
     
    
    2291 2294
       (defun denormalize-pathname-directory-component (directory-component)
    
    2292 2295
         "Convert the DIRECTORY-COMPONENT from a CLHS-standard format to a format usable
    
    ... ... @@ -2717,7 +2720,8 @@ or if it is a PATHNAME but some of its components are not recognized."
    2717 2720
           ((or null string) pathname)
    
    2718 2721
           (pathname
    
    2719 2722
            (with-output-to-string (s)
    
    2720
    -         (flet ((err () #+lispworks (describe pathname) (error "Not a valid unix-namestring ~S" pathname)))
    
    2723
    +         (flet ((err () (parameter-error "~S: invalid unix-namestring ~S"
    
    2724
    +                                         'unix-namestring pathname)))
    
    2721 2725
                (let* ((dir (normalize-pathname-directory-component (pathname-directory pathname)))
    
    2722 2726
                       (name (pathname-name pathname))
    
    2723 2727
                       (name (and (not (eq name :unspecific)) name))
    
    ... ... @@ -2951,7 +2955,7 @@ In that last case, if ROOT is non-NIL, PATH is first transformated by DIRECTORIZ
    2951 2955
           ((eq destination t)
    
    2952 2956
            path)
    
    2953 2957
           ((not (pathnamep destination))
    
    2954
    -       (error "Invalid destination"))
    
    2958
    +       (parameter-error "~S: Invalid destination" 'translate-pathname*))
    
    2955 2959
           ((not (absolute-pathname-p destination))
    
    2956 2960
            (translate-pathname path absolute-source (merge-pathnames* destination root)))
    
    2957 2961
           (root
    
    ... ... @@ -3178,9 +3182,10 @@ but the behavior in presence of symlinks is not portable. Use IOlib to handle su
    3178 3182
             ;; logical pathnames have restrictions on wild patterns.
    
    3179 3183
             ;; Not that the results are very portable when you use these patterns on physical pathnames.
    
    3180 3184
             (when (wild-pathname-p dir)
    
    3181
    -          (error "Invalid wild pattern in logical directory ~S" directory))
    
    3185
    +          (parameter-error "~S: Invalid wild pattern in logical directory ~S"
    
    3186
    +                           'directory-files directory))
    
    3182 3187
             (unless (member (pathname-directory pattern) '(() (:relative)) :test 'equal)
    
    3183
    -          (error "Invalid file pattern ~S for logical directory ~S" pattern directory))
    
    3188
    +          (parameter-error "~S: Invalid file pattern ~S for logical directory ~S" 'directory-files pattern directory))
    
    3184 3189
             (setf pattern (make-pathname-logical pattern (pathname-host dir))))
    
    3185 3190
           (let* ((pat (merge-pathnames* pattern dir))
    
    3186 3191
                  (entries (ignore-errors (directory* pat))))
    
    ... ... @@ -3493,7 +3498,7 @@ check constraints and normalize as per ENSURE-PATHNAME."
    3493 3498
     check constraints and normalize each one as per ENSURE-PATHNAME.
    
    3494 3499
            Any empty entries in the environment variable X will be returned as NILs."
    
    3495 3500
         (unless (getf constraints :empty-is-nil t)
    
    3496
    -      (error "Cannot have EMPTY-IS-NIL false for GETENV-PATHNAMES."))
    
    3501
    +      (parameter-error "Cannot have EMPTY-IS-NIL false for ~S" 'getenv-pathnames))
    
    3497 3502
         (apply 'split-native-pathnames-string (getenvp x)
    
    3498 3503
                :on-error (or on-error
    
    3499 3504
                              `(error "In (~S ~S), invalid pathname ~*~S: ~*~?" getenv-pathnames ,x))
    
    ... ... @@ -3610,13 +3615,13 @@ If you're suicidal or extremely confident, just use :VALIDATE T."
    3610 3615
         (cond
    
    3611 3616
           ((not (and (pathnamep directory-pathname) (directory-pathname-p directory-pathname)
    
    3612 3617
                      (physical-pathname-p directory-pathname) (not (wild-pathname-p directory-pathname))))
    
    3613
    -       (error "~S was asked to delete ~S but it is not a physical non-wildcard directory pathname"
    
    3618
    +       (parameter-error "~S was asked to delete ~S but it is not a physical non-wildcard directory pathname"
    
    3614 3619
                   'delete-directory-tree directory-pathname))
    
    3615 3620
           ((not validatep)
    
    3616
    -       (error "~S was asked to delete ~S but was not provided a validation predicate"
    
    3621
    +       (parameter-error "~S was asked to delete ~S but was not provided a validation predicate"
    
    3617 3622
                   'delete-directory-tree directory-pathname))
    
    3618 3623
           ((not (call-function validate directory-pathname))
    
    3619
    -       (error "~S was asked to delete ~S but it is not valid ~@[according to ~S~]"
    
    3624
    +       (parameter-error "~S was asked to delete ~S but it is not valid ~@[according to ~S~]"
    
    3620 3625
                   'delete-directory-tree directory-pathname validate))
    
    3621 3626
           ((not (directory-exists-p directory-pathname))
    
    3622 3627
            (ecase if-does-not-exist
    
    ... ... @@ -4445,7 +4450,7 @@ This is designed to abstract away the implementation specific quit forms."
    4445 4450
                      (exit `(,exit :code code :abort (not finish-output)))
    
    4446 4451
                      (quit `(,quit :unix-status code :recklessly-p (not finish-output)))))
    
    4447 4452
         #-(or abcl allegro clasp clisp clozure cmucl ecl gcl genera lispworks mcl mkcl sbcl scl xcl)
    
    4448
    -    (error "~S called with exit code ~S but there's no quitting on this implementation" 'quit code))
    
    4453
    +    (not-implemented-error 'quit "(called with exit code ~S)" code))
    
    4449 4454
     
    
    4450 4455
       (defun die (code format &rest arguments)
    
    4451 4456
         "Die in error with some error message"
    
    ... ... @@ -4719,7 +4724,7 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
    4719 4724
         (setf *image-restored-p* nil)
    
    4720 4725
         #-(or clisp clozure (and cmucl executable) lispworks sbcl scl)
    
    4721 4726
         (when executable
    
    4722
    -      (error "Dumping an executable is not supported on this implementation! Aborting."))
    
    4727
    +      (not-implemented-error 'dump-image "dumping an executable"))
    
    4723 4728
         #+allegro
    
    4724 4729
         (progn
    
    4725 4730
           (sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t) ; :new 5000000
    
    ... ... @@ -4777,8 +4782,7 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
    4777 4782
                   ;; the default is :console - only works with SBCL 1.1.15 or later.
    
    4778 4783
                   (when application-type (list :application-type application-type)))))
    
    4779 4784
         #-(or allegro clisp clozure cmucl gcl lispworks sbcl scl)
    
    4780
    -    (error "Can't ~S ~S: UIOP doesn't support image dumping with ~A.~%"
    
    4781
    -           'dump-image filename (nth-value 1 (implementation-type))))
    
    4785
    +    (not-implemented-error 'dump-image))
    
    4782 4786
     
    
    4783 4787
       (defun create-image (destination lisp-object-files
    
    4784 4788
                            &key kind output-name prologue-code epilogue-code extra-object-files
    
    ... ... @@ -4812,17 +4816,27 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
    4812 4816
                                 (shell-boolean-exit
    
    4813 4817
                                  (restore-image))))))))
    
    4814 4818
                      (when forms `(progn ,@forms))))))
    
    4815
    -      #+(or clasp ecl) (check-type kind (member :dll :lib :static-library :program :object :fasl))
    
    4819
    +      #+(or clasp ecl mkcl)
    
    4820
    +      (check-type kind (member :dll :shared-library :lib :static-library
    
    4821
    +                               :fasl :fasb :program))
    
    4816 4822
           (apply #+clasp 'cmp:builder #+clasp kind
    
    4817
    -             #+ecl 'c::builder #+ecl kind
    
    4818
    -             #+mkcl (ecase kind
    
    4819
    -                      ((:dll) 'compiler::build-shared-library)
    
    4820
    -                      ((:lib :static-library) 'compiler::build-static-library)
    
    4821
    -                      ((:fasl) 'compiler::build-bundle)
    
    4822
    -                      ((:program) 'compiler::build-program))
    
    4823
    +             #+(or ecl mkcl)
    
    4824
    +             (ecase kind
    
    4825
    +               ((:dll :shared-library)
    
    4826
    +                #+ecl 'c::build-shared-library #+mkcl 'compiler:build-shared-library)
    
    4827
    +               ((:lib :static-library)
    
    4828
    +                #+ecl 'c::build-static-library #+mkcl 'compiler:build-static-library)
    
    4829
    +               ((:fasl #+ecl :fasb)
    
    4830
    +                #+ecl 'c::build-fasl #+mkcl 'compiler:build-fasl)
    
    4831
    +               #+mkcl ((:fasb) 'compiler:build-bundle)
    
    4832
    +               ((:program)
    
    4833
    +                #+ecl 'c::build-program #+mkcl 'compiler:build-program))
    
    4823 4834
                  (pathname destination)
    
    4824
    -             #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files (append lisp-object-files #+(or clasp ecl) extra-object-files)
    
    4825
    -             #+(or clasp ecl) :init-name #+(or clasp ecl) (c::compute-init-name (or output-name destination) :kind kind)
    
    4835
    +             #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files
    
    4836
    +             (append lisp-object-files #+(or clasp ecl) extra-object-files)
    
    4837
    +             #+ecl :init-name
    
    4838
    +             #+ecl (c::compute-init-name (or output-name destination)
    
    4839
    +                                         :kind (if (eq kind :fasb) :fasl kind))
    
    4826 4840
                  (append
    
    4827 4841
                   (when prologue-code `(:prologue-code ,prologue-code))
    
    4828 4842
                   (when epilogue-code `(:epilogue-code ,epilogue-code))
    
    ... ... @@ -5609,8 +5623,7 @@ it will filter them appropriately."
    5609 5623
       (defun combine-fasls (inputs output)
    
    5610 5624
         "Combine a list of FASLs INPUTS into a single FASL OUTPUT"
    
    5611 5625
         #-(or abcl allegro clisp clozure cmucl lispworks sbcl scl xcl)
    
    5612
    -    (error "~A does not support ~S~%inputs ~S~%output  ~S"
    
    5613
    -           (implementation-type) 'combine-fasls inputs output)
    
    5626
    +    (not-implemented-error 'combine-fasls "~%inputs: ~S~%output: ~S" inputs output)
    
    5614 5627
         #+abcl (funcall 'sys::concatenate-fasls inputs output) ; requires ABCL 1.2.0
    
    5615 5628
         #+(or allegro clisp cmucl sbcl scl xcl) (concatenate-files inputs output)
    
    5616 5629
         #+clozure (ccl:fasl-concatenate output inputs :if-exists :supersede)
    
    ... ... @@ -5661,7 +5674,8 @@ as either a recognizing function or a sequence of characters."
    5661 5674
         (some
    
    5662 5675
          (cond
    
    5663 5676
            ((and good-chars bad-chars)
    
    5664
    -        (error "only one of good-chars and bad-chars can be provided"))
    
    5677
    +        (parameter-error "~S: only one of good-chars and bad-chars can be provided"
    
    5678
    +                         'requires-escaping-p))
    
    5665 5679
            ((typep good-chars 'function)
    
    5666 5680
             (complement good-chars))
    
    5667 5681
            ((typep bad-chars 'function)
    
    ... ... @@ -5670,7 +5684,7 @@ as either a recognizing function or a sequence of characters."
    5670 5684
             #'(lambda (c) (not (find c good-chars))))
    
    5671 5685
            ((and bad-chars (typep bad-chars 'sequence))
    
    5672 5686
             #'(lambda (c) (find c bad-chars)))
    
    5673
    -       (t (error "requires-escaping-p: no good-char criterion")))
    
    5687
    +       (t (parameter-error "~S: no good-char criterion" 'requires-escaping-p)))
    
    5674 5688
          token))
    
    5675 5689
     
    
    5676 5690
       (defun escape-token (token &key stream quote good-chars bad-chars escaper)
    
    ... ... @@ -6027,13 +6041,14 @@ to ignore if URGENT is T. On some platforms, it may also be subject to
    6027 6041
     race conditions."
    
    6028 6042
         (declare (ignorable urgent))
    
    6029 6043
         #+abcl (sys:process-kill (slot-value process-info 'process))
    
    6044
    +    #+clasp (mp:process-kill (slot-value process-info 'process))
    
    6030 6045
         ;; On ECL, this will only work on versions later than 2016-09-06,
    
    6031 6046
         ;; but we still want to compile on earlier versions, so we use symbol-call
    
    6032 6047
         #+ecl (symbol-call :ext :terminate-process (slot-value process-info 'process) urgent)
    
    6033 6048
         #+lispworks7+ (sys:pipe-kill-process (slot-value process-info 'process))
    
    6034 6049
         #+mkcl (mk-ext:terminate-process (slot-value process-info 'process)
    
    6035 6050
                                          :force urgent)
    
    6036
    -    #-(or abcl ecl lispworks7+ mkcl)
    
    6051
    +    #-(or abcl clasp ecl lispworks7+ mkcl)
    
    6037 6052
         (os-cond
    
    6038 6053
          ((os-unix-p) (%posix-send-signal process-info (if urgent 9 15)))
    
    6039 6054
          ((os-windows-p) (if-let (pid (process-info-pid process-info))
    
    ... ... @@ -6140,6 +6155,9 @@ LAUNCH-PROGRAM returns a PROCESS-INFO object."
    6140 6155
            (%handle-if-does-not-exist input if-input-does-not-exist)
    
    6141 6156
            (%handle-if-exists output if-output-exists)
    
    6142 6157
            (%handle-if-exists error-output if-error-output-exists))
    
    6158
    +     #+ecl (let ((*standard-input* *stdin*)
    
    6159
    +                 (*standard-output* *stdout*)
    
    6160
    +                 (*error-output* *stderr*)))
    
    6143 6161
          (let ((process-info (make-instance 'process-info))
    
    6144 6162
                (input (%normalize-io-specifier input :input))
    
    6145 6163
                (output (%normalize-io-specifier output :output))
    
    ... ... @@ -6151,6 +6169,14 @@ LAUNCH-PROGRAM returns a PROCESS-INFO object."
    6151 6169
                   #+os-unix (list command)
    
    6152 6170
                   #+os-windows
    
    6153 6171
                   (string
    
    6172
    +               ;; NB: On other Windows implementations, this is utterly bogus
    
    6173
    +               ;; except in the most trivial cases where no quoting is needed.
    
    6174
    +               ;; Use at your own risk.
    
    6175
    +               #-(or allegro clisp clozure ecl)
    
    6176
    +               (nest
    
    6177
    +                #+(or ecl sbcl) (unless (find-symbol* :escape-arguments #+ecl :ext #+sbcl :sb-impl nil))
    
    6178
    +                (parameter-error "~S doesn't support string commands on Windows on this Lisp"
    
    6179
    +                                 'launch-program command))
    
    6154 6180
                    ;; NB: We add cmd /c here. Behavior without going through cmd is not well specified
    
    6155 6181
                    ;; when the command contains spaces or special characters:
    
    6156 6182
                    ;; IIUC, the system will use space as a separator,
    
    ... ... @@ -6161,14 +6187,9 @@ LAUNCH-PROGRAM returns a PROCESS-INFO object."
    6161 6187
                    ;; On ClozureCL for Windows, we assume you are using
    
    6162 6188
                    ;; r15398 or later in 1.9 or later,
    
    6163 6189
                    ;; so that bug 858 is fixed http://trac.clozure.com/ccl/ticket/858
    
    6190
    +               ;; On ECL, commit 2040629 https://gitlab.com/embeddable-common-lisp/ecl/issues/304
    
    6164 6191
                    ;; On SBCL, we assume the patch from fcae0fd (to be part of SBCL 1.3.13)
    
    6165
    -               #+(or clozure sbcl) (cons "cmd" (strcat "/c " command))
    
    6166
    -               ;; NB: On other Windows implementations, this is utterly bogus
    
    6167
    -               ;; except in the most trivial cases where no quoting is needed.
    
    6168
    -               ;; Use at your own risk.
    
    6169
    -               #-(or allegro clisp clozure sbcl)
    
    6170
    -               (parameter-error "~S doesn't support string commands on Windows on this lisp: ~S"
    
    6171
    -                                'launch-program command))
    
    6192
    +               #+(or clozure ecl sbcl) (cons "cmd" (strcat "/c " command)))
    
    6172 6193
                   #+os-windows
    
    6173 6194
                   (list
    
    6174 6195
                    #+allegro (escape-windows-command command)
    
    ... ... @@ -6176,7 +6197,7 @@ LAUNCH-PROGRAM returns a PROCESS-INFO object."
    6176 6197
          #+(or abcl (and allegro os-unix) clozure cmucl ecl mkcl sbcl)
    
    6177 6198
          (let ((program (car command))
    
    6178 6199
                #-allegro (arguments (cdr command))))
    
    6179
    -     #+(and sbcl os-windows)
    
    6200
    +     #+(and (or ecl sbcl) os-windows)
    
    6180 6201
          (multiple-value-bind (arguments escape-arguments)
    
    6181 6202
              (if (listp arguments)
    
    6182 6203
                  (values arguments t)
    
    ... ... @@ -6199,7 +6220,7 @@ LAUNCH-PROGRAM returns a PROCESS-INFO object."
    6199 6220
                #+mkcl 'mk-ext:run-program
    
    6200 6221
                #+sbcl 'sb-ext:run-program
    
    6201 6222
                #+(or abcl clozure cmucl ecl mkcl sbcl) ,@'(program arguments)
    
    6202
    -           #+(and sbcl os-windows) ,@'(:escape-arguments escape-arguments)
    
    6223
    +           #+(and (or ecl sbcl) os-windows) ,@'(:escape-arguments escape-arguments)
    
    6203 6224
                :input input :if-input-does-not-exist :error
    
    6204 6225
                :output output :if-output-exists :append
    
    6205 6226
                ,(or #+(or allegro lispworks) :error-output :error) error-output
    
    ... ... @@ -6397,7 +6418,7 @@ Programmers are encouraged to define their own methods for this generic function
    6397 6418
             stream x
    
    6398 6419
             :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size))
    
    6399 6420
           (t
    
    6400
    -       (error "Invalid ~S destination ~S" 'slurp-input-stream x)))))
    
    6421
    +       (parameter-error "Invalid ~S destination ~S" 'slurp-input-stream x)))))
    
    6401 6422
     
    
    6402 6423
     ;;;; Vomiting a stream, typically into the input of another program.
    
    6403 6424
     (with-upgradability ()
    
    ... ... @@ -6474,7 +6495,7 @@ Programmers are encouraged to define their own methods for this generic function
    6474 6495
             x stream
    
    6475 6496
             :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size))
    
    6476 6497
           (t
    
    6477
    -       (error "Invalid ~S source ~S" 'vomit-output-stream x)))))
    
    6498
    +       (parameter-error "Invalid ~S source ~S" 'vomit-output-stream x)))))
    
    6478 6499
     
    
    6479 6500
     
    
    6480 6501
     ;;;; Run-program: synchronously run a program in a subprocess, handling input, output and error-output.
    
    ... ... @@ -6530,8 +6551,8 @@ or whether it's already taken care of by the implementation's underlying run-pro
    6530 6551
                (activity-spec (if (eq actual-spec :output)
    
    6531 6552
                                   (ecase direction
    
    6532 6553
                                     ((:input :output)
    
    6533
    -                                 (error "~S not allowed as a ~S ~S spec"
    
    6534
    -                                        :output 'run-program direction))
    
    6554
    +                                 (parameter-error "~S does not allow ~S as a ~S spec"
    
    6555
    +                                                  'run-program :output direction))
    
    6535 6556
                                     ((:error-output)
    
    6536 6557
                                      nil))
    
    6537 6558
                                   actual-spec)))
    
    ... ... @@ -6657,20 +6678,10 @@ or whether it's already taken care of by the implementation's underlying run-pro
    6657 6678
     
    
    6658 6679
       (defun %normalize-system-command (command) ;; helper for %USE-SYSTEM
    
    6659 6680
         (etypecase command
    
    6660
    -      (string
    
    6661
    -       (os-cond
    
    6662
    -        ((os-windows-p)
    
    6663
    -         #+(or allegro clisp ecl)
    
    6664
    -         (strcat "cmd" " /c " command)
    
    6665
    -         #-(or allegro clisp ecl) command)
    
    6666
    -        (t command)))
    
    6681
    +      (string command)
    
    6667 6682
           (list (escape-shell-command
    
    6668 6683
                  (os-cond
    
    6669 6684
                   ((os-unix-p) (cons "exec" command))
    
    6670
    -              ((os-windows-p)
    
    6671
    -               #+(or allegro clisp ecl sbcl)
    
    6672
    -               (list* "cmd" "/c" command)
    
    6673
    -               #-(or allegro clisp ecl sbcl) command)
    
    6674 6685
                   (t command))))))
    
    6675 6686
     
    
    6676 6687
       (defun %redirected-system-command (command in out err directory) ;; helper for %USE-SYSTEM
    
    ... ... @@ -7183,7 +7194,7 @@ MORE may contain specifications for a subpath relative to these directories: a
    7183 7194
     subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see
    
    7184 7195
     also \"Configuration DSL\"\) in the ASDF manual."
    
    7185 7196
         (mapcar #'(lambda (d) (resolve-location `(,d ,more)))
    
    7186
    -            (or (getenv-absolute-directories "XDG_DATA_DIRS")
    
    7197
    +            (or (remove nil (getenv-absolute-directories "XDG_DATA_DIRS"))
    
    7187 7198
                     (os-cond
    
    7188 7199
                      ((os-windows-p) (mapcar 'get-folder-path '(:appdata :common-appdata)))
    
    7189 7200
                      (t (mapcar 'parse-unix-namestring '("/usr/local/share/" "/usr/share/")))))))
    
    ... ... @@ -7195,7 +7206,7 @@ MORE may contain specifications for a subpath relative to these directories:
    7195 7206
     subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see
    
    7196 7207
     also \"Configuration DSL\"\) in the ASDF manual."
    
    7197 7208
         (mapcar #'(lambda (d) (resolve-location `(,d ,more)))
    
    7198
    -            (or (getenv-absolute-directories "XDG_CONFIG_DIRS")
    
    7209
    +            (or (remove nil (getenv-absolute-directories "XDG_CONFIG_DIRS"))
    
    7199 7210
                     (os-cond
    
    7200 7211
                      ((os-windows-p) (xdg-data-dirs "config/"))
    
    7201 7212
                      (t (mapcar 'parse-unix-namestring '("/etc/xdg/")))))))
    
    ... ... @@ -7292,7 +7303,7 @@ objects. Side-effects for cached file location computation."
    7292 7303
     (in-package :uiop/backward-driver)
    
    7293 7304
     
    
    7294 7305
     (eval-when (:compile-toplevel :load-toplevel :execute)
    
    7295
    -(with-deprecation ((version-deprecation *uiop-version* :style-warning "3.2.0" :warning "3.2.1"))
    
    7306
    +(with-deprecation ((version-deprecation *uiop-version* :style-warning "3.2"))
    
    7296 7307
       ;; Backward compatibility with ASDF 2.000 to 2.26
    
    7297 7308
     
    
    7298 7309
       ;; For backward-compatibility only, for people using internals
    
    ... ... @@ -7411,9 +7422,10 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
    7411 7422
       ;; This public variable will be bound shortly to the currently loaded version of ASDF.
    
    7412 7423
       (defvar *asdf-version* nil)
    
    7413 7424
       ;; We need to clear systems from versions older than the one in this (private) parameter.
    
    7414
    -  ;; The latest incompatible defclass is 2.32.13 renaming a slot in component;
    
    7425
    +  ;; The latest incompatible defclass is 2.32.13 renaming a slot in component,
    
    7426
    +  ;; or 3.2.0.2 for CCL (incompatibly changing some superclasses).
    
    7415 7427
       ;; the latest incompatible gf change is in 3.1.7.20 (see redefined-functions below).
    
    7416
    -  (defparameter *oldest-forward-compatible-asdf-version* "3.1.7.20")
    
    7428
    +  (defparameter *oldest-forward-compatible-asdf-version* "3.2.0.2")
    
    7417 7429
       ;; Semi-private variable: a designator for a stream on which to output ASDF progress messages
    
    7418 7430
       (defvar *verbose-out* nil)
    
    7419 7431
       ;; Private function by which ASDF outputs progress messages and warning messages:
    
    ... ... @@ -7458,7 +7470,7 @@ previously-loaded version of ASDF."
    7458 7470
              ;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5.
    
    7459 7471
              ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
    
    7460 7472
              ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
    
    7461
    -         (asdf-version "3.2.0")
    
    7473
    +         (asdf-version "3.2.1")
    
    7462 7474
              (existing-version (asdf-version)))
    
    7463 7475
         (setf *asdf-version* asdf-version)
    
    7464 7476
         (when (and existing-version (not (equal asdf-version existing-version)))
    
    ... ... @@ -7487,7 +7499,15 @@ previously-loaded version of ASDF."
    7487 7499
             (redefined-classes
    
    7488 7500
              ;; redefining the classes causes interim circularities
    
    7489 7501
              ;; with the old ASDF during upgrade, and many implementations bork
    
    7490
    -         '((#:compile-concatenated-source-op (#:operation) ()))))
    
    7502
    +         #-clozure ()
    
    7503
    +         #+clozure
    
    7504
    +         '((#:compile-concatenated-source-op (#:operation) ())
    
    7505
    +           (#:compile-bundle-op (#:operation) ())
    
    7506
    +           (#:concatenate-source-op (#:operation) ())
    
    7507
    +           (#:dll-op (#:operation) ())
    
    7508
    +           (#:lib-op (#:operation) ())
    
    7509
    +           (#:monolithic-compile-bundle-op (#:operation) ())
    
    7510
    +           (#:monolithic-concatenate-source-op (#:operation) ()))))
    
    7491 7511
         (loop :for name :in redefined-functions
    
    7492 7512
           :for sym = (find-symbol* name :asdf nil)
    
    7493 7513
           :do (when sym (fmakunbound sym)))
    
    ... ... @@ -8917,6 +8937,7 @@ Use of INITARGS is not supported at this time."
    8917 8937
       (:use :uiop/common-lisp :uiop :asdf/upgrade
    
    8918 8938
        :asdf/component :asdf/system #:asdf/cache :asdf/find-system :asdf/find-component :asdf/operation)
    
    8919 8939
       (:import-from :asdf/operation #:check-operation-constructor)
    
    8940
    +  #-clisp (:unintern #:required-components #:traverse-action #:traverse-sub-actions)
    
    8920 8941
       (:export
    
    8921 8942
        #:action #:define-convenience-action-methods
    
    8922 8943
        #:action-description
    
    ... ... @@ -8998,15 +9019,18 @@ and a class-name or class designates the canonical instance of the designated cl
    8998 9019
                        `(,function ,@prefix ,o ,c ,@suffix))))
    
    8999 9020
             `(progn
    
    9000 9021
                (defmethod ,function (,@prefix (,operation string) ,component ,@suffix ,@more-args)
    
    9022
    +             (declare (notinline ,function))
    
    9001 9023
                  (let ((,component (find-component () ,component))) ;; do it first, for defsystem-depends-on
    
    9002 9024
                    ,(next-method `(safe-read-from-string ,operation :package :asdf/interface) component)))
    
    9003 9025
                (defmethod ,function (,@prefix (,operation symbol) ,component ,@suffix ,@more-args)
    
    9026
    +             (declare (notinline ,function))
    
    9004 9027
                  (if ,operation
    
    9005 9028
                      ,(next-method
    
    9006 9029
                        `(make-operation ,operation)
    
    9007 9030
                        `(or (find-component () ,component) ,if-no-component))
    
    9008 9031
                      ,if-no-operation))
    
    9009 9032
                (defmethod ,function (,@prefix (,operation operation) ,component ,@suffix ,@more-args)
    
    9033
    +             (declare (notinline ,function))
    
    9010 9034
                  (if (typep ,component 'component)
    
    9011 9035
                      (error "No defined method for ~S on ~/asdf-action:format-action/"
    
    9012 9036
                             ',function (make-action ,operation ,component))
    
    ... ... @@ -9621,6 +9645,8 @@ an OPERATION and a COMPONENT."
    9621 9645
     ;;;; Plan
    
    9622 9646
     
    
    9623 9647
     (uiop/package:define-package :asdf/plan
    
    9648
    +  ;; asdf/action below is needed for required-components, traverse-action and traverse-sub-actions
    
    9649
    +  ;; that used to live there before 3.2.0.
    
    9624 9650
       (:recycle :asdf/plan :asdf)
    
    9625 9651
       (:use :uiop/common-lisp :uiop :asdf/upgrade
    
    9626 9652
        :asdf/component :asdf/operation :asdf/system
    
    ... ... @@ -10174,7 +10200,7 @@ return a list of the components involved in building the desired action."
    10174 10200
        #:build-op #:make
    
    10175 10201
        #:load-system #:load-systems #:load-systems*
    
    10176 10202
        #:compile-system #:test-system #:require-system
    
    10177
    -   #:*load-system-operation* #:module-provide-asdf
    
    10203
    +   #:module-provide-asdf
    
    10178 10204
        #:component-loaded-p #:already-loaded-systems))
    
    10179 10205
     (in-package :asdf/operate)
    
    10180 10206
     
    
    ... ... @@ -10266,45 +10292,34 @@ But do NOT depend on it, for this is deprecated behavior."))
    10266 10292
     
    
    10267 10293
     
    
    10268 10294
     ;;;; Common operations
    
    10269
    -(with-upgradability ()
    
    10270
    -  (defvar *load-system-operation* 'load-op
    
    10271
    -    "Operation used by ASDF:LOAD-SYSTEM. By default, ASDF:LOAD-OP.
    
    10272
    -You may override it with e.g. ASDF:LOAD-BUNDLE-OP from asdf/bundle
    
    10273
    -or ASDF:LOAD-SOURCE-OP if your fasl loading is somehow broken.
    
    10274
    -
    
    10275
    -The default operation may change in the future if we implement a
    
    10276
    -component-directed strategy for how to load or compile systems.")
    
    10277
    -
    
    10278
    -  ;; In prepare-op for a system, propagate *load-system-operation* rather than load-op
    
    10295
    +(when-upgrading ()
    
    10279 10296
       (defmethod component-depends-on ((o prepare-op) (s system))
    
    10280
    -    (loop :for (do . dc) :in (call-next-method)
    
    10281
    -          :collect (cons (if (eq do 'load-op) *load-system-operation* do) dc)))
    
    10282
    -
    
    10297
    +    (call-next-method)))
    
    10298
    +(with-upgradability ()
    
    10283 10299
       (defclass build-op (non-propagating-operation) ()
    
    10284 10300
         (:documentation "Since ASDF3, BUILD-OP is the recommended 'master' operation,
    
    10285 10301
     to operate by default on a system or component, via the function BUILD.
    
    10286 10302
     Its meaning is configurable via the :BUILD-OPERATION option of a component.
    
    10287 10303
     which typically specifies the name of a specific operation to which to delegate the build,
    
    10288 10304
     as a symbol or as a string later read as a symbol (after loading the defsystem-depends-on);
    
    10289
    -if NIL is specified (the default), BUILD-OP falls back to the *LOAD-SYSTEM-OPERATION*
    
    10290
    -that will load the system in the current image, and its typically LOAD-OP."))
    
    10305
    +if NIL is specified (the default), BUILD-OP falls back to LOAD-OP,
    
    10306
    +that will load the system in the current image."))
    
    10291 10307
       (defmethod component-depends-on ((o build-op) (c component))
    
    10292
    -    `((,(or (component-build-operation c) *load-system-operation*) ,c)
    
    10308
    +    `((,(or (component-build-operation c) 'load-op) ,c)
    
    10293 10309
           ,@(call-next-method)))
    
    10294 10310
     
    
    10295 10311
       (defun make (system &rest keys)
    
    10296 10312
         "The recommended way to interact with ASDF3.1 is via (ASDF:MAKE :FOO).
    
    10297 10313
     It will build system FOO using the operation BUILD-OP,
    
    10298 10314
     the meaning of which is configurable by the system, and
    
    10299
    -defaults to *LOAD-SYSTEM-OPERATION*, usually LOAD-OP,
    
    10300
    -to load it in current image."
    
    10315
    +defaults to LOAD-OP, to load it in current image."
    
    10301 10316
         (apply 'operate 'build-op system keys)
    
    10302 10317
         t)
    
    10303 10318
     
    
    10304 10319
       (defun load-system (system &rest keys &key force force-not verbose version &allow-other-keys)
    
    10305 10320
         "Shorthand for `(operate 'asdf:load-op system)`. See OPERATE for details."
    
    10306 10321
         (declare (ignore force force-not verbose version))
    
    10307
    -    (apply 'operate *load-system-operation* system keys)
    
    10322
    +    (apply 'operate 'load-op system keys)
    
    10308 10323
         t)
    
    10309 10324
     
    
    10310 10325
       (defun load-systems* (systems &rest keys)
    
    ... ... @@ -10366,8 +10381,7 @@ the implementation's REQUIRE rather than by internal ASDF mechanisms."))
    10366 10381
         (let* ((module (or (required-module s) (coerce-name s)))
    
    10367 10382
                (*modules-being-required* (cons module *modules-being-required*)))
    
    10368 10383
           (assert (null (component-children s)))
    
    10369
    -      ;; CMUCL likes its module names to be all upcase.
    
    10370
    -      (require (nest #+cmucl (string-upcase) module))))
    
    10384
    +      (require module)))
    
    10371 10385
     
    
    10372 10386
       (defmethod resolve-dependency-combination (component (combinator (eql :require)) arguments)
    
    10373 10387
         (unless (and (length=n-p arguments 1)
    
    ... ... @@ -10384,9 +10398,11 @@ the implementation's REQUIRE rather than by internal ASDF mechanisms."))
    10384 10398
         ;; cl:require and asdf:operate that could potentially blow up the stack,
    
    10385 10399
         ;; all the while defeating the consistency of the dependency graph.
    
    10386 10400
         (let* ((module (car arguments)) ;; NB: we already checked that it was not null
    
    10387
    -           (name (string-downcase module))
    
    10388
    -           (system (find-system name nil)))
    
    10389
    -      (or system (let ((system (make-instance 'require-system :name name)))
    
    10401
    +           ;; CMUCL, MKCL, SBCL like their module names to be all upcase.
    
    10402
    +           (module-name (string module))
    
    10403
    +           (system-name (string-downcase module))
    
    10404
    +           (system (find-system system-name nil)))
    
    10405
    +      (or system (let ((system (make-instance 'require-system :name system-name :module module-name)))
    
    10390 10406
                        (register-system system)
    
    10391 10407
                        system))))
    
    10392 10408
     
    
    ... ... @@ -10396,10 +10412,11 @@ the implementation's REQUIRE rather than by internal ASDF mechanisms."))
    10396 10412
         ;; with a name that is traditionally in lowercase. Case is lost along the way. That's fine.
    
    10397 10413
         ;; We could make complex, non-portable rules to try to preserve case, and just documenting
    
    10398 10414
         ;; them would be a hell that it would be a disservice to inflict on users.
    
    10399
    -    (let ((module (string-downcase name)))
    
    10400
    -      (unless (member module *modules-being-required* :test 'equal)
    
    10401
    -        (let ((*modules-being-required* (cons module *modules-being-required*))
    
    10402
    -              #+sbcl (sb-impl::*requiring* (remove module sb-impl::*requiring* :test 'equal)))
    
    10415
    +    (let ((module-name (string name))
    
    10416
    +          (system-name (string-downcase name)))
    
    10417
    +      (unless (member module-name *modules-being-required* :test 'equal)
    
    10418
    +        (let ((*modules-being-required* (cons module-name *modules-being-required*))
    
    10419
    +              #+sbcl (sb-impl::*requiring* (remove module-name sb-impl::*requiring* :test 'equal)))
    
    10403 10420
               (handler-bind
    
    10404 10421
                   ((style-warning #'muffle-warning)
    
    10405 10422
                    (missing-component (constantly nil))
    
    ... ... @@ -10408,9 +10425,9 @@ the implementation's REQUIRE rather than by internal ASDF mechanisms."))
    10408 10425
                         (format *error-output* (compatfmt "~@<ASDF could not load ~(~A~) because ~A.~@:>~%")
    
    10409 10426
                                 name e))))
    
    10410 10427
                 (let ((*verbose-out* (make-broadcast-stream)))
    
    10411
    -              (let ((system (find-system module nil)))
    
    10428
    +              (let ((system (find-system system-name nil)))
    
    10412 10429
                     (when system
    
    10413
    -                  (require-system system :verbose nil)
    
    10430
    +                  (require-system system-name :verbose nil)
    
    10414 10431
                       t)))))))))
    
    10415 10432
     
    
    10416 10433
     
    
    ... ... @@ -10737,10 +10754,11 @@ system names contained using COERCE-NAME. Return the result."
    10737 10754
         (nest
    
    10738 10755
          (with-asdf-cache ())
    
    10739 10756
          (let* ((name (coerce-name name))
    
    10740
    -            (source-file (if sfp source-file (resolve-symlinks* (load-pathname))))
    
    10741
    -            (asd-name (and source-file
    
    10742
    -                           (equalp "asd" (pathname-type source-file))
    
    10743
    -                           (pathname-name source-file)))
    
    10757
    +            (source-file (if sfp source-file (resolve-symlinks* (load-pathname))))))
    
    10758
    +     (flet ((fix-case (x) (if (logical-pathname-p source-file) (string-downcase x) x))))
    
    10759
    +     (let* ((asd-name (and source-file
    
    10760
    +                           (equal "asd" (fix-case (pathname-type source-file)))
    
    10761
    +                           (fix-case (pathname-name source-file))))
    
    10744 10762
                 (primary-name (primary-system-name name)))
    
    10745 10763
            (when (and asd-name (not (equal asd-name primary-name)))
    
    10746 10764
              (warn (make-condition 'bad-system-name :source-file source-file :name name))))
    
    ... ... @@ -10803,7 +10821,7 @@ system names contained using COERCE-NAME. Return the result."
    10803 10821
     (in-package :asdf/bundle)
    
    10804 10822
     
    
    10805 10823
     (with-upgradability ()
    
    10806
    -  (defclass bundle-op (basic-compile-op)
    
    10824
    +  (defclass bundle-op (operation)
    
    10807 10825
         ;; NB: use of instance-allocated slots for operations is DEPRECATED
    
    10808 10826
         ;; and only supported in a temporary fashion for backward compatibility.
    
    10809 10827
         ;; Supported replacement: Define slots on program-system instead.
    
    ... ... @@ -10882,17 +10900,17 @@ itself."))
    10882 10900
                 ;; Using load-op as the goal operation and basic-compile-op as the keep-operation works
    
    10883 10901
                 ;; for our needs of gathering all the files we want to include in a bundle.
    
    10884 10902
                 ;; Note that we use basic-compile-op rather than compile-op so it will still work on
    
    10885
    -            ;; systems when *load-system-operation* is load-bundle-op.
    
    10903
    +            ;; systems that would somehow load dependencies with load-bundle-op.
    
    10886 10904
                 (required-components
    
    10887 10905
                  s :other-systems mono :component-type component-type :keep-component keep-component
    
    10888 10906
                  :goal-operation 'load-op :keep-operation 'basic-compile-op)))
    
    10889 10907
           `((,go ,@deps) ,@(call-next-method))))
    
    10890 10908
     
    
    10891 10909
       ;; Create a single fasl for the entire library
    
    10892
    -  (defclass basic-compile-bundle-op (bundle-op)
    
    10910
    +  (defclass basic-compile-bundle-op (bundle-op basic-compile-op)
    
    10893 10911
         ((gather-type :initform #-(or clasp ecl mkcl) :fasl #+(or clasp ecl mkcl) :object
    
    10894 10912
                       :allocation :class)
    
    10895
    -     (bundle-type :initform :fasl :allocation :class))
    
    10913
    +     (bundle-type :initform :fasb :allocation :class))
    
    10896 10914
         (:documentation "Base class for compiling into a bundle"))
    
    10897 10915
     
    
    10898 10916
       ;; Analog to prepare-op, for load-bundle-op and compile-bundle-op
    
    ... ... @@ -10999,6 +11017,8 @@ for all the linkable object files associated with the system or its dependencies
    10999 11017
           ((eql :no-output-file) ;; marker for a bundle-type that has NO output file
    
    11000 11018
            (error "No output file, therefore no pathname type"))
    
    11001 11019
           ((eql :fasl) ;; the type of a fasl
    
    11020
    +       (compile-file-type)) ; on image-based platforms, used as input and output
    
    11021
    +      ((eql :fasb) ;; the type of a fasl
    
    11002 11022
            #-(or clasp ecl mkcl) (compile-file-type) ; on image-based platforms, used as input and output
    
    11003 11023
            #+(or clasp ecl mkcl) "fasb") ; on C-linking platforms, only used as output for system bundles
    
    11004 11024
           ((member :image)
    
    ... ... @@ -11056,7 +11076,7 @@ e.g. as part of the implementation, of an outer build system that calls into ASD
    11056 11076
     or of opaque libraries shipped along the source code."))
    
    11057 11077
     
    
    11058 11078
       (defclass precompiled-system (system)
    
    11059
    -    ((build-pathname :initarg :fasl))
    
    11079
    +    ((build-pathname :initarg :fasb :initarg :fasl))
    
    11060 11080
         (:documentation "Class For a system that is delivered as a precompiled fasl"))
    
    11061 11081
     
    
    11062 11082
       (defclass prebuilt-system (system)
    
    ... ... @@ -11123,7 +11143,7 @@ or of opaque libraries shipped along the source code."))
    11123 11143
            (if monolithic 'monolithic-dll-op 'dll-op))
    
    11124 11144
           ((:lib :static-library)
    
    11125 11145
            (if monolithic 'monolithic-lib-op 'lib-op))
    
    11126
    -      ((:fasl)
    
    11146
    +      ((:fasb)
    
    11127 11147
            (if monolithic 'monolithic-compile-bundle-op 'compile-bundle-op))
    
    11128 11148
           ((:image)
    
    11129 11149
            'image-op)
    
    ... ... @@ -11215,7 +11235,7 @@ or of opaque libraries shipped along the source code."))
    11215 11235
                (dependencies
    
    11216 11236
                  (if (operation-monolithic-p o)
    
    11217 11237
                      ;; We want only dependencies, and we use basic-load-op rather than load-op so that
    
    11218
    -                 ;; this will keep working on systems when *load-system-operation* is load-bundle-op
    
    11238
    +                 ;; this will keep working on systems that load dependencies with load-bundle-op
    
    11219 11239
                      (remove-if-not 'builtin-system-p
    
    11220 11240
                                     (required-components s :component-type 'system
    
    11221 11241
                                                            :keep-operation 'basic-load-op))
    
    ... ... @@ -11286,11 +11306,6 @@ which is probably not what you want; you probably need to tweak your output tran
    11286 11306
     
    
    11287 11307
     #+(or clasp ecl mkcl)
    
    11288 11308
     (with-upgradability ()
    
    11289
    -
    
    11290
    -  #+ecl ;; doesn't work on clasp or mkcl (yet?).
    
    11291
    -  (unless (use-ecl-byte-compiler-p)
    
    11292
    -    (setf *load-system-operation* 'load-bundle-op))
    
    11293
    -
    
    11294 11309
       (defun system-module-pathname (module)
    
    11295 11310
         (let ((name (coerce-name module)))
    
    11296 11311
           (some
    
    ... ... @@ -11298,6 +11313,7 @@ which is probably not what you want; you probably need to tweak your output tran
    11298 11313
            (list
    
    11299 11314
             #+clasp (compile-file-pathname (make-pathname :name name :defaults "sys:") :output-type :object)
    
    11300 11315
             #+ecl (compile-file-pathname (make-pathname :name name :defaults "sys:") :type :lib)
    
    11316
    +        #+ecl (compile-file-pathname (make-pathname :name (strcat "lib" name) :defaults "sys:") :type :lib)
    
    11301 11317
             #+ecl (compile-file-pathname (make-pathname :name name :defaults "sys:") :type :object)
    
    11302 11318
             #+mkcl (make-pathname :name name :type (bundle-pathname-type :lib) :defaults #p"sys:")
    
    11303 11319
             #+mkcl (make-pathname :name name :type (bundle-pathname-type :lib) :defaults #p"sys:contrib;")))))
    
    ... ... @@ -11309,22 +11325,30 @@ which is probably not what you want; you probably need to tweak your output tran
    11309 11325
                          :name (coerce-name name)
    
    11310 11326
                          :static-library (resolve-symlinks* pathname))))
    
    11311 11327
     
    
    11328
    +  (defun linkable-system (x)
    
    11329
    +    (or (if-let (s (find-system x))
    
    11330
    +          (and (system-source-file x) s))
    
    11331
    +        (if-let (p (system-module-pathname (coerce-name x)))
    
    11332
    +          (make-prebuilt-system x p))))
    
    11333
    +
    
    11312 11334
       (defmethod component-depends-on :around ((o image-op) (c system))
    
    11313
    -    (destructuring-bind ((lib-op . deps)) (call-next-method)
    
    11314
    -      (labels ((has-it-p (x) (find x deps :test 'equal :key 'coerce-name))
    
    11315
    -               (ensure-linkable-system (x)
    
    11316
    -		 (unless (has-it-p x)
    
    11317
    -                   (or (if-let (s (find-system x))
    
    11318
    -                         (and (system-source-directory x)
    
    11319
    -                              (list s)))
    
    11320
    -                       (if-let (p (system-module-pathname x))
    
    11321
    -                         (list (make-prebuilt-system x p)))))))
    
    11322
    -        `((,lib-op
    
    11335
    +    (let* ((next (call-next-method))
    
    11336
    +           (deps (make-hash-table :test 'equal))
    
    11337
    +           (linkable (loop* :for (do . dcs) :in next :collect
    
    11338
    +                       (cons do
    
    11339
    +                             (loop :for dc :in dcs
    
    11340
    +                               :for dep = (and dc (resolve-dependency-spec c dc))
    
    11341
    +                               :when dep
    
    11342
    +                               :do (setf (gethash (coerce-name (component-system dep)) deps) t)
    
    11343
    +                               :collect (or (and (typep dep 'system) (linkable-system dep)) dep))))))
    
    11344
    +        `((lib-op
    
    11323 11345
                ,@(unless (no-uiop c)
    
    11324
    -               (append (ensure-linkable-system "cmp")
    
    11325
    -                       (or (ensure-linkable-system "uiop")
    
    11326
    -                           (ensure-linkable-system "asdf"))))
    
    11327
    -           ,@deps)))))
    
    11346
    +               (list (linkable-system "cmp")
    
    11347
    +                     (unless (or (gethash "uiop" deps) (gethash "asdf" deps))
    
    11348
    +                       (or (linkable-system "uiop")
    
    11349
    +                           (linkable-system "asdf")
    
    11350
    +                           "asdf")))))
    
    11351
    +          ,@linkable)))
    
    11328 11352
     
    
    11329 11353
       (defmethod perform ((o link-op) (c system))
    
    11330 11354
         (let* ((object-files (input-files o c))
    
    ... ... @@ -12096,6 +12120,19 @@ after having found a .asd file? True by default.")
    12096 12120
                             (collect (list directory :recurse recurse :exclude exclude))))))
    
    12097 12121
          :test 'equal :from-end t))
    
    12098 12122
     
    
    12123
    +  ;; MAYBE: move this utility function to uiop/pathname and export it?
    
    12124
    +  (defun pathname-directory-depth (p)
    
    12125
    +    (length (normalize-pathname-directory-component (pathname-directory p))))
    
    12126
    +
    
    12127
    +  (defun preferred-source-path-p (x y)
    
    12128
    +    "Return T iff X is to be preferred over Y as a source path"
    
    12129
    +    (let ((lx (pathname-directory-depth x))
    
    12130
    +          (ly (pathname-directory-depth y)))
    
    12131
    +      (or (< lx ly)
    
    12132
    +          (and (= lx ly)
    
    12133
    +               (string< (namestring x)
    
    12134
    +                        (namestring y))))))
    
    12135
    +
    
    12099 12136
       ;; Will read the configuration and initialize all internal variables.
    
    12100 12137
       (defun compute-source-registry (&optional (parameter *source-registry-parameter*)
    
    12101 12138
                                         (registry *source-registry*))
    
    ... ... @@ -12114,18 +12151,21 @@ after having found a .asd file? True by default.")
    12114 12151
                                     ;; instead of (load-system 'foo)
    
    12115 12152
                                     (string-downcase name)
    
    12116 12153
                                     name)))
    
    12117
    -                 (cond
    
    12118
    -                   ((gethash name registry) ; already shadowed by something else
    
    12119
    -                    nil)
    
    12120
    -                   ((gethash name h) ; conflict at current level
    
    12121
    -                    (when *verbose-out*
    
    12122
    -                      (warn (compatfmt "~@<In source-registry entry ~A~@[/~*~] ~
    
    12123
    -                                found several entries for ~A - picking ~S over ~S~:>")
    
    12124
    -                            directory recurse name (gethash name h) asd)))
    
    12125
    -                   (t
    
    12126
    -                    (setf (gethash name registry) asd)
    
    12127
    -                    (setf (gethash name h) asd))))))
    
    12128
    -          h)))
    
    12154
    +                 (unless (gethash name registry) ; already shadowed by something else
    
    12155
    +                   (if-let (old (gethash name h))
    
    12156
    +                     ;; If the name appears multiple times,
    
    12157
    +                     ;; prefer the one with the shallowest directory,
    
    12158
    +                     ;; or if they have same depth, compare unix-namestring with string<
    
    12159
    +                     (multiple-value-bind (better worse)
    
    12160
    +                         (if (preferred-source-path-p asd old)
    
    12161
    +                             (progn (setf (gethash name h) asd) (values asd old))
    
    12162
    +                             (values old asd))
    
    12163
    +                       (when *verbose-out*
    
    12164
    +                         (warn (compatfmt "~@<In source-registry entry ~A~@[/~*~] ~
    
    12165
    +                                              found several entries for ~A - picking ~S over ~S~:>")
    
    12166
    +                               directory recurse name better worse)))
    
    12167
    +                     (setf (gethash name h) asd))))))
    
    12168
    +          (maphash #'(lambda (k v) (setf (gethash k registry) v)) h))))
    
    12129 12169
         (values))
    
    12130 12170
     
    
    12131 12171
       (defun initialize-source-registry (&optional (parameter *source-registry-parameter*))
    
    ... ... @@ -12635,7 +12675,6 @@ DEPRECATED. Use ASDF:ACTION-DESCRIPTION and/or ASDF::FORMAT-ACTION instead."))
    12635 12675
        #:*compile-file-warnings-behaviour*
    
    12636 12676
        #:*compile-file-failure-behaviour*
    
    12637 12677
        #:*resolve-symlinks*
    
    12638
    -   #:*load-system-operation*
    
    12639 12678
        #:*asdf-verbose* ;; unused. For backward-compatibility only.
    
    12640 12679
        #:*verbose-out*
    
    12641 12680
     
    

  • src/contrib/asdf/doc/asdf.html
    ... ... @@ -31,7 +31,7 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    31 31
     OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    
    32 32
     WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    
    33 33
      -->
    
    34
    -<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
    
    34
    +<!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ -->
    
    35 35
     <head>
    
    36 36
     <title>ASDF Manual</title>
    
    37 37
     
    
    ... ... @@ -276,7 +276,7 @@ ul.no-bullet {list-style: none}
    276 276
     <a name="Top"></a>
    
    277 277
     <a name="ASDF_003a-Another-System-Definition-Facility"></a>
    
    278 278
     <h1 class="top">ASDF: Another System Definition Facility</h1>
    
    279
    -<p>Manual for Version 3.2.0
    
    279
    +<p>Manual for Version 3.2.1
    
    280 280
     </p>
    
    281 281
     
    
    282 282
     <p>This manual describes ASDF, a system definition facility
    
    ... ... @@ -3404,8 +3404,13 @@ otherwise it continues.
    3404 3404
     If multiple systems are found, the consequences are unspecified:
    
    3405 3405
     the search may succeed with any of the found systems,
    
    3406 3406
     or an error may be raised.
    
    3407
    -ASDF currently returns the first system found,
    
    3408
    -XCVB currently raised an error.
    
    3407
    +ASDF 3.2.1 or later returns the pathname whose normalized directory component
    
    3408
    +has the shortest length (as a list), and breaks ties by choosing the system
    
    3409
    +with the smallest <code>unix-namestring</code> when compared with <code>string&lt;</code>.
    
    3410
    +Earlier versions of ASDF return ASDF return the first system found,
    
    3411
    +which is implementation-dependent, and may or may not be the pathname
    
    3412
    +with the smallest <code>unix-namestring</code> when compared with <code>string&lt;</code>.
    
    3413
    +XCVB raises an error.
    
    3409 3414
     If none is found, the search continues.
    
    3410 3415
     </p>
    
    3411 3416
     <p>Exclude statements specify patterns of subdirectories
    

  • src/contrib/asdf/doc/asdf.info
    1
    -This is asdf.info, produced by makeinfo version 6.1 from asdf.texinfo.
    
    1
    +This is asdf.info, produced by makeinfo version 6.3 from asdf.texinfo.
    
    2 2
     
    
    3 3
     This manual describes ASDF, a system definition facility for Common Lisp
    
    4 4
     programs and libraries.
    
    ... ... @@ -43,7 +43,7 @@ File: asdf.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
    43 43
     ASDF: Another System Definition Facility
    
    44 44
     ****************************************
    
    45 45
     
    
    46
    -Manual for Version 3.2.0
    
    46
    +Manual for Version 3.2.1
    
    47 47
     
    
    48 48
        This manual describes ASDF, a system definition facility for Common
    
    49 49
     Lisp programs and libraries.
    
    ... ... @@ -3097,8 +3097,14 @@ succeeds, otherwise it continues.
    3097 3097
        When looking in a tree, if one system is found, the search succeeds.
    
    3098 3098
     If multiple systems are found, the consequences are unspecified: the
    
    3099 3099
     search may succeed with any of the found systems, or an error may be
    
    3100
    -raised.  ASDF currently returns the first system found, XCVB currently
    
    3101
    -raised an error.  If none is found, the search continues.
    
    3100
    +raised.  ASDF 3.2.1 or later returns the pathname whose normalized
    
    3101
    +directory component has the shortest length (as a list), and breaks ties
    
    3102
    +by choosing the system with the smallest 'unix-namestring' when compared
    
    3103
    +with 'string<'.  Earlier versions of ASDF return ASDF return the first
    
    3104
    +system found, which is implementation-dependent, and may or may not be
    
    3105
    +the pathname with the smallest 'unix-namestring' when compared with
    
    3106
    +'string<'.  XCVB raises an error.  If none is found, the search
    
    3107
    +continues.
    
    3102 3108
     
    
    3103 3109
        Exclude statements specify patterns of subdirectories the systems
    
    3104 3110
     from which to ignore.  Typically you don't want to use copies of files
    
    ... ... @@ -5862,77 +5868,77 @@ Node: Configuration Directories131731
    5862 5868
     Node: The here directive133558
    
    5863 5869
     Node: Shell-friendly syntax for configuration135451
    
    5864 5870
     Node: Search Algorithm136468
    
    5865
    -Node: Caching Results137969
    
    5866
    -Node: Configuration API141213
    
    5867
    -Node: Introspection143252
    
    5868
    -Node: *source-registry-parameter* variable143516
    
    5869
    -Node: Information about system dependencies144085
    
    5870
    -Node: Status145001
    
    5871
    -Node: Rejected ideas145456
    
    5872
    -Node: TODO147837
    
    5873
    -Node: Credits for the source-registry148022
    
    5874
    -Node: Controlling where ASDF saves compiled files148557
    
    5875
    -Ref: Controlling where ASDF saves compiled files-Footnote-1149969
    
    5876
    -Node: Output Configurations150013
    
    5877
    -Ref: Output Configurations-Footnote-1152874
    
    5878
    -Node: Output Backward Compatibility152940
    
    5879
    -Node: Output Configuration DSL155666
    
    5880
    -Node: Output Configuration Directories161121
    
    5881
    -Node: Output Shell-friendly syntax for configuration162678
    
    5882
    -Node: Semantics of Output Translations164197
    
    5883
    -Node: Output Caching Results165766
    
    5884
    -Node: Output location API166246
    
    5885
    -Node: Credits for output translations168668
    
    5886
    -Node: Error handling169188
    
    5887
    -Node: Miscellaneous additional functionality170029
    
    5888
    -Node: Controlling file compilation170501
    
    5889
    -Node: Controlling source file character encoding173767
    
    5890
    -Node: Miscellaneous Functions180584
    
    5891
    -Ref: system-relative-pathname180881
    
    5892
    -Ref: Miscellaneous Functions-Footnote-1187328
    
    5893
    -Node: Some Utility Functions187439
    
    5894
    -Node: Getting the latest version198217
    
    5895
    -Node: FAQ199162
    
    5896
    -Node: Where do I report a bug?199557
    
    5897
    -Node: Mailing list199922
    
    5898
    -Node: What has changed between ASDF 1 ASDF 2 and ASDF 3?200257
    
    5899
    -Node: What are ASDF 1 2 3?202431
    
    5900
    -Node: How do I detect the ASDF version?203472
    
    5901
    -Node: ASDF can portably name files in subdirectories205779
    
    5902
    -Node: Output translations207329
    
    5903
    -Node: Source Registry Configuration208356
    
    5904
    -Node: Usual operations are made easier to the user209983
    
    5905
    -Node: Many bugs have been fixed210569
    
    5906
    -Node: ASDF itself is versioned212401
    
    5907
    -Node: ASDF can be upgraded213276
    
    5908
    -Node: Decoupled release cycle214428
    
    5909
    -Node: Pitfalls of the transition to ASDF 2215357
    
    5910
    -Node: Pitfalls of the upgrade to ASDF 3219627
    
    5911
    -Ref: Pitfalls of the upgrade to ASDF 3-Footnote-1223996
    
    5912
    -Node: What happened to the bundle operations224166
    
    5913
    -Node: Issues with installing the proper version of ASDF225331
    
    5914
    -Node: My Common Lisp implementation comes with an outdated version of ASDF. What to do?225802
    
    5915
    -Node: I'm a Common Lisp implementation vendor. When and how should I upgrade ASDF?226735
    
    5916
    -Node: Issues with configuring ASDF230618
    
    5917
    -Node: How can I customize where fasl files are stored?230993
    
    5918
    -Node: How can I wholly disable the compiler output cache?232086
    
    5919
    -Node: Issues with using and extending ASDF to define systems233465
    
    5920
    -Node: How can I cater for unit-testing in my system?234262
    
    5921
    -Node: How can I cater for documentation generation in my system?235150
    
    5922
    -Node: How can I maintain non-Lisp (e.g. C) source files?235671
    
    5923
    -Ref: report-bugs236103
    
    5924
    -Node: I want to put my module's files at the top level. How do I do this?236103
    
    5925
    -Node: How do I create a system definition where all the source files have a .cl extension?239253
    
    5926
    -Node: How do I mark a source file to be loaded only and not compiled?241226
    
    5927
    -Node: How do I work with readtables?242222
    
    5928
    -Node: How can I capture ASDF's output?245949
    
    5929
    -Node: LOAD-PATHNAME has a weird value246420
    
    5930
    -Node: ASDF development FAQs247906
    
    5931
    -Node: How do I run the tests interactively in a REPL?248145
    
    5932
    -Node: Ongoing Work250011
    
    5933
    -Node: Bibliography250290
    
    5934
    -Node: Concept Index253761
    
    5935
    -Node: Function and Class Index260620
    
    5936
    -Node: Variable Index272394
    
    5871
    +Node: Caching Results138338
    
    5872
    +Node: Configuration API141582
    
    5873
    +Node: Introspection143621
    
    5874
    +Node: *source-registry-parameter* variable143885
    
    5875
    +Node: Information about system dependencies144454
    
    5876
    +Node: Status145370
    
    5877
    +Node: Rejected ideas145825
    
    5878
    +Node: TODO148206
    
    5879
    +Node: Credits for the source-registry148391
    
    5880
    +Node: Controlling where ASDF saves compiled files148926
    
    5881
    +Ref: Controlling where ASDF saves compiled files-Footnote-1150338
    
    5882
    +Node: Output Configurations150382
    
    5883
    +Ref: Output Configurations-Footnote-1153243
    
    5884
    +Node: Output Backward Compatibility153309
    
    5885
    +Node: Output Configuration DSL156035
    
    5886
    +Node: Output Configuration Directories161490
    
    5887
    +Node: Output Shell-friendly syntax for configuration163047
    
    5888
    +Node: Semantics of Output Translations164566
    
    5889
    +Node: Output Caching Results166135
    
    5890
    +Node: Output location API166615
    
    5891
    +Node: Credits for output translations169037
    
    5892
    +Node: Error handling169557
    
    5893
    +Node: Miscellaneous additional functionality170398
    
    5894
    +Node: Controlling file compilation170870
    
    5895
    +Node: Controlling source file character encoding174136
    
    5896
    +Node: Miscellaneous Functions180953
    
    5897
    +Ref: system-relative-pathname181250
    
    5898
    +Ref: Miscellaneous Functions-Footnote-1187697
    
    5899
    +Node: Some Utility Functions187808
    
    5900
    +Node: Getting the latest version198586
    
    5901
    +Node: FAQ199531
    
    5902
    +Node: Where do I report a bug?199926
    
    5903
    +Node: Mailing list200291
    
    5904
    +Node: What has changed between ASDF 1 ASDF 2 and ASDF 3?200626
    
    5905
    +Node: What are ASDF 1 2 3?202800
    
    5906
    +Node: How do I detect the ASDF version?203841
    
    5907
    +Node: ASDF can portably name files in subdirectories206148
    
    5908
    +Node: Output translations207698
    
    5909
    +Node: Source Registry Configuration208725
    
    5910
    +Node: Usual operations are made easier to the user210352
    
    5911
    +Node: Many bugs have been fixed210938
    
    5912
    +Node: ASDF itself is versioned212770
    
    5913
    +Node: ASDF can be upgraded213645
    
    5914
    +Node: Decoupled release cycle214797
    
    5915
    +Node: Pitfalls of the transition to ASDF 2215726
    
    5916
    +Node: Pitfalls of the upgrade to ASDF 3219996
    
    5917
    +Ref: Pitfalls of the upgrade to ASDF 3-Footnote-1224365
    
    5918
    +Node: What happened to the bundle operations224535
    
    5919
    +Node: Issues with installing the proper version of ASDF225700
    
    5920
    +Node: My Common Lisp implementation comes with an outdated version of ASDF. What to do?226171
    
    5921
    +Node: I'm a Common Lisp implementation vendor. When and how should I upgrade ASDF?227104
    
    5922
    +Node: Issues with configuring ASDF230987
    
    5923
    +Node: How can I customize where fasl files are stored?231362
    
    5924
    +Node: How can I wholly disable the compiler output cache?232455
    
    5925
    +Node: Issues with using and extending ASDF to define systems233834
    
    5926
    +Node: How can I cater for unit-testing in my system?234631
    
    5927
    +Node: How can I cater for documentation generation in my system?235519
    
    5928
    +Node: How can I maintain non-Lisp (e.g. C) source files?236040
    
    5929
    +Ref: report-bugs236472
    
    5930
    +Node: I want to put my module's files at the top level. How do I do this?236472
    
    5931
    +Node: How do I create a system definition where all the source files have a .cl extension?239622
    
    5932
    +Node: How do I mark a source file to be loaded only and not compiled?241595
    
    5933
    +Node: How do I work with readtables?242591
    
    5934
    +Node: How can I capture ASDF's output?246318
    
    5935
    +Node: LOAD-PATHNAME has a weird value246789
    
    5936
    +Node: ASDF development FAQs248275
    
    5937
    +Node: How do I run the tests interactively in a REPL?248514
    
    5938
    +Node: Ongoing Work250380
    
    5939
    +Node: Bibliography250659
    
    5940
    +Node: Concept Index254130
    
    5941
    +Node: Function and Class Index260989
    
    5942
    +Node: Variable Index272763
    
    5937 5943
     
    
    5938 5944
     End Tag Table

  • src/contrib/asdf/doc/asdf.pdf
    No preview for this file type
  • src/general-info/release-21c.txt
    ... ... @@ -22,7 +22,7 @@ New in this release:
    22 22
       * Feature enhancements
    
    23 23
     
    
    24 24
       * Changes
    
    25
    -    * ASDF 3.2.0
    
    25
    +    * ASDF 3.2.1
    
    26 26
     
    
    27 27
       * ANSI compliance fixes:
    
    28 28
     
    

  • src/lisp/Config.x86_freebsd
    1 1
     # -*- Mode: makefile -*-
    
    2 2
     include Config.x86_common
    
    3
    +# Set the path to your verison of GCC here.
    
    4
    +CC = gcc -m32
    
    3 5
     
    
    4 6
     CPPFLAGS += -march=pentium4 -mfpmath=sse
    
    5 7
     
    
    6 8
     UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
    
    7 9
     OS_SRC += FreeBSD-os.c elf.c
    
    8 10
     OS_LINK_FLAGS = -dynamic -export-dynamic
    
    9
    -OS_LIBS = -lutil -lmd
    
    11
    +OS_LIBS = -B/usr/lib32 -lutil -lmd
    
    10 12
     
    
    11 13
     EXEC_FINAL_OBJ = exec-final.o

  • src/motif/server/Config.FreeBSD
    1
    +CC=gcc 
    
    1 2
     CFLAGS = -pthread -O2 -I/usr/local/include -I. -I$(VPATH)
    
    2 3
     LDFLAGS = -L/usr/local/lib
    
    3 4
     LIBS = -lXm -lXt -lX11
    

  • src/tools/linker.sh
    ... ... @@ -70,7 +70,7 @@ case $uname_s in
    70 70
           # See Config.x86_${uname_s}
    
    71 71
           case $uname_s in
    
    72 72
     	Linux) OS_LIBS=-ldl;;
    
    73
    -	FreeBSD) OS_LIBS=-lutil;;
    
    73
    +	FreeBSD) OS_LIBS="-B/usr/lib32 -lutil";;
    
    74 74
           esac
    
    75 75
           ;;
    
    76 76
       Darwin)