build: Create dependencies for Goalfile itself.
[goals.git] / Goalfile.in
index aec3e5f..88e0684 100644 (file)
@@ -43,7 +43,7 @@ let objects = [
 
 let subdirs = [ "m4", "src", "stdlib", "tests" ]
 
-goal all = : ocaml_link ("src/goals", objects)
+goal all = : "Goalfile", ocaml_link ("src/goals", objects)
 
 goal clean = {
     for d in %subdirs; do
@@ -73,25 +73,26 @@ goal maintainer-clean = : clean {
     %OCAMLLEX %<
 }
 
-# XXX Depends on *.ml *.mli, but we don't have a function for this yet.
 # XXX Goalfile itself depends on this and we should probably have a
 # way to reevaluate it.
 # XXX Atomic output.
-goal depend () = "src/.depend" : {
+goal depend () =
+"src/.depend" : wildcard ("src/*.ml"), wildcard ("src/*.mli") {
     rm -f %@ %@-t
     # Like many existing tools, ocamldep produces make-compatible
     # output which doesn't work directly in goals.
-    %OCAMLDEP -all -one-line src/*.ml src/*.mli |
+    %OCAMLDEP -all -one-line -I src %< |
         sed 's|[./[:alnum:]]\+|"&"|g' |
         sed 's|" "|", "|g' |
         sed 's|.*|& ;|' > %@-t
     mv %@-t %@
 }
 
--include "src/.depend"
+-include "src/.depend";
 
-# XXX The Goalfile itself needs rules to rebuild it.
-#Makefile: Makefile.in ../config.status
-#        ../config.status $@
-#config.ml: config.ml.in ../config.status
-#        ../config.status $@
+"Goalfile": "Goalfile.in", "config.status" {
+    ./config.status %@
+}
+"src/config.ml" : "src/config.ml.in", "config.status" {
+    ./config.status %@
+}