X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/b0e21f8370fb60321f178572e2b90dfc4e2eb5b6..12949379840101e2d65883f29c5e8f0f6de49e9c:/src/frontend.lisp diff --git a/src/frontend.lisp b/src/frontend.lisp index 1d09382..92573e7 100644 --- a/src/frontend.lisp +++ b/src/frontend.lisp @@ -23,9 +23,10 @@ ;;; along with SOD; if not, write to the Free Software Foundation, ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -(cl:defpackage #:sod-frontend - (:use #:common-lisp #:sod-utilities #:optparse #:sod #:sod-parser) - (:shadowing-import-from #:optparse #:int)) +(eval-when (:compile-toplevel :load-toplevel :execute) + (handler-bind ((warning #'muffle-warning)) + (cl:defpackage #:sod-frontend + (:use #:common-lisp #:sod-utilities #:optparse #:sod #:sod-parser)))) (cl:in-package #:sod-frontend) @@ -98,6 +99,7 @@ (backtracep nil) (builtinsp nil) (stdoutp nil) + (track-deps-p nil) (args nil)) ;; Option definitions. @@ -145,6 +147,9 @@ :print nil)))) (error (error) (option-parse-error "~A" error)))))) + (#\M "track-dependencies" + "Write make(1) fragments recording dependencies." + (set track-deps-p)) (#\p "stdout" ("Write output files to standard output.") (set stdoutp)) @@ -190,7 +195,11 @@ :direction :output :if-exists :supersede :if-does-not-exist :create) - (output-module module reason stream)))) + (output-module module reason stream)) + + (when track-deps-p + (write-dependency-file module reason + output-path)))) ;; Error recovery. (continue ()