chiark / gitweb /
src/: Write dependency-tracking Makefile fragments.
[sod] / src / frontend.lisp
index 1d0938250cc9f4726f3aa155ef11b7c44302be05..41f38cd5af909bdba2d2af6b73e4cc2471f49377 100644 (file)
@@ -98,6 +98,7 @@ (defun main ()
        (backtracep nil)
        (builtinsp nil)
        (stdoutp nil)
+       (track-deps-p nil)
        (args nil))
 
     ;; Option definitions.
@@ -145,6 +146,9 @@     (define-program
                                                  :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 +194,11 @@     (define-program
                             :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 ()