Generator now runs automatically when it has changed.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 2 Jul 2009 10:29:00 +0000 (11:29 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 2 Jul 2009 10:51:07 +0000 (11:51 +0100)
.gitignore
HACKING
src/Makefile.am
src/generator.ml

index 6c58e6f..fbb723f 100644 (file)
@@ -111,4 +111,5 @@ python/guestfs.pyc
 ruby/Rakefile
 ruby/ext/guestfs/extconf.h
 ruby/ext/guestfs/mkmf.log
+src/stamp-generator
 stamp-h1
diff --git a/HACKING b/HACKING
index fc9ed38..b42a807 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -14,10 +14,6 @@ etc. to the big list called 'functions' at the top of this file.
 'do_action' function.  Take a look at one of the numerous examples
 there.
 
-You will need to run src/generator.ml (from the top directory) which
-regenerates all the auto-generated files, and then continue with the
-ordinary build process.
-
 Formatting
 ----------------------------------------------------------------------
 
index 06d4522..eb8723a 100644 (file)
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-EXTRA_DIST = guestfs_protocol.x \
+EXTRA_DIST = \
+       guestfs_protocol.x \
        guestfs_protocol.c \
        guestfs_protocol.h \
-       MAX_PROC_NR
+       MAX_PROC_NR \
+       stamp-generator \
+       generator.ml
 
-EXTRA_DIST += generator.ml
+# Rerun the generator if it has changed.
+# Git removes empty directories, so in cases where the
+# generator is creating the sole file in a directory, we
+# have to create the directory first.
+noinst_DATA = stamp-generator
+
+stamp-generator: generator.ml
+       mkdir -p $(top_srcdir)/perl/lib/Sys
+       cd .. && ocaml -warn-error A $(srcdir)/src/$<
+
+guestfs_protocol.x: stamp-generator
 
 include_HEADERS = guestfs.h guestfs-actions.h guestfs-structs.h
 
index df5ff7e..766650f 100755 (executable)
@@ -8712,3 +8712,10 @@ Run it from the top source directory using the command
   let close = output_to "src/MAX_PROC_NR" in
   generate_max_proc_nr ();
   close ();
+
+  (* Always generate this file last, and unconditionally.  It's used
+   * by the Makefile to know when we must re-run the generator.
+   *)
+  let chan = open_out "src/stamp-generator" in
+  fprintf chan "1\n";
+  close_out chan