+2009-01-13 Jürg Billeter <j@bitron.ch>
+
+ * vala/valacodecontext.vala:
+ * gobject/valaccodebasemodule.vala:
+ * compiler/valacompiler.vala:
+
+ Add -H command-line option to generate C header file for public
+ API, stub implementation
+
2009-01-13 Thijs Vermeir <thijsvermeir@gmail.com>
* vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata:
static string target_glib;
static bool ccode_only;
+ static string header_filename;
static bool compile_only;
static string output;
static bool debug;
{ "directory", 'd', 0, OptionArg.FILENAME, ref directory, "Output directory", "DIRECTORY" },
{ "version", 0, 0, OptionArg.NONE, ref version, "Display version number", null },
{ "ccode", 'C', 0, OptionArg.NONE, ref ccode_only, "Output C code", null },
+ { "header", 'H', 0, OptionArg.FILENAME, ref header_filename, "Output C header file", "FILE" },
{ "compile", 'c', 0, OptionArg.NONE, ref compile_only, "Compile but do not link", null },
{ "output", 'o', 0, OptionArg.FILENAME, ref output, "Place output in file FILE", "FILE" },
{ "debug", 'g', 0, OptionArg.NONE, ref debug, "Produce debug information", null },
context.ccode_only = ccode_only;
context.compile_only = compile_only;
+ context.header_filename = header_filename;
context.output = output;
if (basedir != null) {
context.basedir = realpath (basedir);
file.accept (codegen);
}
}
+
+ // generate C header file for public API
+ if (context.header_filename != null) {
+ var writer = new CCodeWriter (context.header_filename);
+ if (!writer.open ()) {
+ Report.error (null, "unable to open `%s' for writing".printf (writer.filename));
+ return;
+ }
+ writer.write_newline ();
+ var once = new CCodeOnceSection (get_define_for_filename (writer.filename));
+ once.append (new CCodeNewline ());
+ once.append (new CCodeIdentifier ("G_BEGIN_DECLS"));
+ once.append (new CCodeNewline ());
+ once.append (new CCodeNewline ());
+ once.append (new CCodeIdentifier ("G_END_DECLS"));
+ once.append (new CCodeNewline ());
+ once.append (new CCodeNewline ());
+ once.write (writer);
+ writer.close ();
+ }
}
public override void visit_enum (Enum en) {