From: Jürg Billeter Date: Tue, 13 Jan 2009 18:41:04 +0000 (+0000) Subject: Add -H command-line option to generate C header file for public API, stub X-Git-Tag: VALA_0_5_6~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c386e09e1ef57320a114142faa27946fe6a3cac6;p=thirdparty%2Fvala.git Add -H command-line option to generate C header file for public API, stub 2009-01-13 Jürg Billeter * vala/valacodecontext.vala: * gobject/valaccodebasemodule.vala: * compiler/valacompiler.vala: Add -H command-line option to generate C header file for public API, stub implementation svn path=/trunk/; revision=2336 --- diff --git a/ChangeLog b/ChangeLog index 1bef8a003..780cc2c4d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-01-13 Jürg Billeter + + * 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 * vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata: diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala index 59b608c2d..2ac8f73ca 100644 --- a/compiler/valacompiler.vala +++ b/compiler/valacompiler.vala @@ -40,6 +40,7 @@ class Vala.Compiler { static string target_glib; static bool ccode_only; + static string header_filename; static bool compile_only; static string output; static bool debug; @@ -68,6 +69,7 @@ class Vala.Compiler { { "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 }, @@ -166,6 +168,7 @@ class Vala.Compiler { 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); diff --git a/gobject/valaccodebasemodule.vala b/gobject/valaccodebasemodule.vala index b8de1e695..5766d9ebb 100644 --- a/gobject/valaccodebasemodule.vala +++ b/gobject/valaccodebasemodule.vala @@ -631,6 +631,26 @@ public class Vala.CCodeBaseModule : CCodeModule { 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) { diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index 33e72ef5c..08d7129da 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -75,6 +75,11 @@ public class Vala.CodeContext { */ public bool ccode_only { get; set; } + /** + * Output C header file. + */ + public string header_filename { get; set; } + /** * Compile but do not link. */