Add Erlang bindings.
[libguestfs.git] / generator / generator_main.ml
index cdf7773..716e7b5 100644 (file)
@@ -1,5 +1,5 @@
 (* libguestfs
- * Copyright (C) 2009-2010 Red Hat Inc.
+ * Copyright (C) 2009-2011 Red Hat Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,6 +23,7 @@ open Printf
 
 open Generator_pr
 open Generator_structs
+open Generator_api_versions
 
 open Generator_c
 open Generator_xdr
@@ -37,7 +38,9 @@ open Generator_java
 open Generator_haskell
 open Generator_csharp
 open Generator_php
+open Generator_erlang
 open Generator_bindtests
+open Generator_errnostring
 
 let perror msg = function
   | Unix_error (err, _, _) ->
@@ -48,7 +51,7 @@ let perror msg = function
 (* Main program. *)
 let () =
   let lock_fd =
-    try openfile "HACKING" [O_RDWR] 0
+    try openfile "BUGS" [O_RDWR] 0
     with
     | Unix_error (ENOENT, _, _) ->
         eprintf "\
@@ -58,7 +61,7 @@ Run it from the top source directory using the command
 ";
         exit 1
     | exn ->
-        perror "open: HACKING" exn;
+        perror "open: BUGS" exn;
         exit 1 in
 
   (* Acquire a lock so parallel builds won't try to run the generator
@@ -68,18 +71,23 @@ Run it from the top source directory using the command
    *)
   (try lockf lock_fd F_LOCK 1
    with exn ->
-     perror "lock: HACKING" exn;
+     perror "lock: BUGS" exn;
      exit 1);
 
+  (* Read the API versions file. *)
+  load_api_versions "src/api-support/added";
+
   output_to "src/guestfs_protocol.x" generate_xdr;
-  output_to "src/guestfs-structs.h" generate_structs_h;
-  output_to "src/guestfs-actions.h" generate_actions_h;
+  output_to "src/guestfs.h" generate_guestfs_h;
   output_to "src/guestfs-internal-actions.h" generate_internal_actions_h;
   output_to "src/actions.c" generate_client_actions;
   output_to "src/bindtests.c" generate_bindtests;
   output_to "src/guestfs-structs.pod" generate_structs_pod;
   output_to "src/guestfs-actions.pod" generate_actions_pod;
   output_to "src/guestfs-availability.pod" generate_availability_pod;
+  output_to "src/errnostring_gperf.gperf" generate_errnostring_gperf;
+  output_to "src/errnostring.c" generate_errnostring_c;
+  output_to "src/errnostring.h" generate_errnostring_h;
   output_to "src/MAX_PROC_NR" generate_max_proc_nr;
   output_to "src/libguestfs.syms" generate_linker_script;
   output_to "daemon/actions.h" generate_daemon_actions_h;
@@ -88,8 +96,11 @@ Run it from the top source directory using the command
   output_to "daemon/optgroups.c" generate_daemon_optgroups_c;
   output_to "daemon/optgroups.h" generate_daemon_optgroups_h;
   output_to "capitests/tests.c" generate_tests;
+  output_to "fish/cmds_gperf.gperf" generate_fish_cmds_gperf;
   output_to "fish/cmds.c" generate_fish_cmds;
   output_to "fish/completion.c" generate_fish_completion;
+  output_to "fish/fish-cmds.h" generate_fish_cmds_h;
+  output_to "fish/guestfish-commands.pod" generate_fish_commands_pod;
   output_to "fish/guestfish-actions.pod" generate_fish_actions_pod;
   output_to "fish/prepopts.c" generate_fish_prep_options_c;
   output_to "fish/prepopts.h" generate_fish_prep_options_h;
@@ -122,12 +133,18 @@ Run it from the top source directory using the command
   output_to "csharp/Libguestfs.cs" generate_csharp;
   output_to "php/extension/php_guestfs_php.h" generate_php_h;
   output_to "php/extension/guestfs_php.c" generate_php_c;
+  output_to "erlang/guestfs.erl" generate_erlang_erl;
+  output_to "erlang/erl-guestfs.c" generate_erlang_c;
+
+  (* Generate the list of files generated -- last. *)
+  printf "generated %d lines of code\n" (get_lines_generated ());
+  let files = List.sort compare (get_files_generated ()) in
+  output_to "generator/files-generated.txt"
+    (fun () -> List.iter (pr "%s\n") files);
 
   (* 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 "generator/stamp-generator" in
   fprintf chan "1\n";
-  close_out chan;
-
-  printf "generated %d lines of code\n" (get_lines_generated ())
+  close_out chan