Changeset 11686


Ignore:
Timestamp:
02/23/09 21:12:39 (12 years ago)
Author:
ehuelsmann
Message:

Fix 'newer' check: check the build-artifacts in the build root (instead of what's in the source tree).
Clean build artifacts in the source tree src/.../lisp/util/ too.
Add some helper routines.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/build-abcl.lisp

    r11683 r11686  
    1919      (setf string (concatenate 'string "\"" string "\"")))
    2020    string))
     21
     22
     23(defun child-pathname (pathname parent)
     24  "Returns `pathname' relative to `parent', assuming that it
     25is infact a child of it while being rooted at the same root as `parent'."
     26  (let ((path-dir (pathname-directory pathname))
     27        (parent-dir (pathname-directory parent)))
     28    (do ((p1 path-dir (cdr p1))
     29         (p2 parent-dir (cdr p2)))
     30        ((or (endp p2) (not (equal (car p1) (car p2))))
     31         (when (endp p2)
     32           (make-pathname :directory (cons :relative p1)
     33                          :defaults pathname))))))
     34
     35
     36(defun file-newer (orig artifact)
     37  "Compares file date/time of `orig' and `artifact', returning
     38`NIL' if `orig' is newer than `artifact'."
     39  (or (null (probe-file artifact))
     40      (> (file-write-date orig)
     41         (file-write-date artifact))))
    2142
    2243
     
    259280(defun make-classes (force batch)
    260281  (let* ((source-files
    261           (remove-if-not #'(lambda (name)
    262                              (let ((output-name
    263                                     (make-pathname :type "class"
    264 ;;                                                   :name (pathname-name name)
    265 ;;###FIXME: we need defaults from *build-root*,
    266 ;; taking the bit of name which is below *abcl-dir*
    267                                                    :defaults name)))
    268                                (or force
    269                                    (null (probe-file output-name))
    270                                    (>= (file-write-date name)
    271                                        (file-write-date output-name)))))
    272                          (mapcan #'(lambda (default)
    273                                      (directory (merge-pathnames "*.java"
    274                                                                  default)))
    275                                  (list *abcl-dir*
    276                                        (merge-pathnames "util/" *abcl-dir*))))))
     282          (remove-if-not
     283           #'(lambda (name)
     284               (let ((output-name
     285                      (merge-pathnames
     286                       (make-pathname :type "class"
     287                                      :defaults (child-pathname name
     288                                                                *source-root*))
     289                       *build-root*)))
     290                 (or force
     291                     (file-newer name output-name))))
     292           (mapcan #'(lambda (default)
     293                       (directory (merge-pathnames "*.java"
     294                                                   default)))
     295                   (list *abcl-dir*
     296                         (merge-pathnames "util/" *abcl-dir*))))))
    277297    (format t "~&JDK: ~A~%" *jdk*)
    278298    (format t "Java compiler: ~A~%" *java-compiler*)
     
    441461                   (list *abcl-dir* "*.class" "*.abcl" "*.cls"
    442462                                    "native.h" "libabcl.so" "build")
     463                   (list (merge-pathnames "util/" *abcl-dir*) "*.class")
    443464                   (list (merge-pathnames "build/classes/org/armedbear/lisp/"
    444465                                          *tree-root*)
Note: See TracChangeset for help on using the changeset viewer.