X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcold%2Fslam.lisp;h=02d91ad88f04af17a7fee0133129c0c9d534dd47;hb=55c7345f18c442abbbe46c66b51bcab612cae65f;hp=aa3b1f72c10754a98bd184b1585ae74efead88c8;hpb=b42c75203a3f077e8f59373a48af5e3a304addbf;p=sbcl.git diff --git a/src/cold/slam.lisp b/src/cold/slam.lisp index aa3b1f7..02d91ad 100644 --- a/src/cold/slam.lisp +++ b/src/cold/slam.lisp @@ -31,9 +31,23 @@ (> (file-write-date output) (file-write-date input)))) +;;; One possible use-case for slam.sh is to generate a trace-file for +;;; a file that is suddenly of interest, but was not of interest +;;; before. In order for this to work, we need to reload the stems +;;; and flags from build-order.lisp-expr, the user needs to have added +;;; :trace-file as a flag. +(setf *stems-and-flags* (read-from-file "build-order.lisp-expr")) + (do-stems-and-flags (stem flags) (unless (position :not-target flags) (let ((srcname (stem-source-path stem)) (objname (stem-object-path stem flags :target-compile))) - (unless (output-up-to-date-wrt-input-p objname srcname) + (unless (and (output-up-to-date-wrt-input-p objname srcname) + ;; Back to our "new-trace-file" case, also build if + ;; a trace file is desired but is out-of-date. + (or (not (position :trace-file flags)) + (output-up-to-date-wrt-input-p + (concatenate 'string (stem-remap-target stem) + ".trace") + srcname))) (target-compile-stem stem flags)))))