From: Evan Nemerson Date: Fri, 10 Feb 2012 06:35:52 +0000 (+0100) Subject: Support --target-glib argument X-Git-Tag: 0.37.1~3^2~208 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f6e00b652424dcc034b2cdbdc61b3d8385dc53f1;p=thirdparty%2Fvala.git Support --target-glib argument --- diff --git a/src/driver/0.14.x/treebuilder.vala b/src/driver/0.14.x/treebuilder.vala index 556cb0869..4b86e6d25 100644 --- a/src/driver/0.14.x/treebuilder.vala +++ b/src/driver/0.14.x/treebuilder.vala @@ -764,7 +764,6 @@ message ("--%s--", symbol.name); context.directory = context.basedir; } - // add default packages: if (settings.profile == "gobject-2.0" || settings.profile == "gobject" || settings.profile == null) { context.profile = Vala.Profile.GOBJECT; @@ -793,6 +792,20 @@ message ("--%s--", symbol.name); Vala.Report.error (null, "This version of valac only supports GLib 2"); } + if (settings.target_glib != null && settings.target_glib.scanf ("%d.%d", out glib_major, out glib_minor) != 2) { + Vala.Report.error (null, "Invalid format for --target-glib"); + } + + context.target_glib_major = glib_major; + context.target_glib_minor = glib_minor; + if (context.target_glib_major != 2) { + Vala.Report.error (null, "This version of valac only supports GLib 2"); + } + + for (int i = 16; i <= glib_minor; i += 2) { + context.add_define ("GLIB_2_%d".printf (i)); + } + // default packages if (!this.add_package (context, "glib-2.0")) { // Vala.Report.error (null, "glib-2.0 not found in specified Vala API directories"); diff --git a/src/driver/0.16.x/treebuilder.vala b/src/driver/0.16.x/treebuilder.vala index 4813bcdd8..555a313c1 100644 --- a/src/driver/0.16.x/treebuilder.vala +++ b/src/driver/0.16.x/treebuilder.vala @@ -751,6 +751,20 @@ public class Valadoc.Drivers.TreeBuilder : Vala.CodeVisitor { Vala.Report.error (null, "This version of valac only supports GLib 2"); } + if (settings.target_glib != null && settings.target_glib.scanf ("%d.%d", out glib_major, out glib_minor) != 2) { + Vala.Report.error (null, "Invalid format for --target-glib"); + } + + context.target_glib_major = glib_major; + context.target_glib_minor = glib_minor; + if (context.target_glib_major != 2) { + Vala.Report.error (null, "This version of valac only supports GLib 2"); + } + + for (int i = 16; i <= glib_minor; i += 2) { + context.add_define ("GLIB_2_%d".printf (i)); + } + // default packages if (!this.add_package (context, "glib-2.0")) { // Vala.Report.error (null, "glib-2.0 not found in specified Vala API directories"); diff --git a/src/libvaladoc/settings.vala b/src/libvaladoc/settings.vala index afbdbfd79..d901dd1b7 100755 --- a/src/libvaladoc/settings.vala +++ b/src/libvaladoc/settings.vala @@ -146,6 +146,11 @@ public class Valadoc.Settings : Object { */ public string[] gir_directories; + /** + * GLib version to target. + */ + public string target_glib; + public string gir_namespace; public string gir_version; diff --git a/src/valadoc/valadoc.vala b/src/valadoc/valadoc.vala index 46b8b1b0a..f03426bc8 100755 --- a/src/valadoc/valadoc.vala +++ b/src/valadoc/valadoc.vala @@ -73,6 +73,7 @@ public class ValaDoc : Object { private static string[] tsources; [CCode (array_length = false, array_null_terminated = true)] private static string[] packages; + static string target_glib; private const GLib.OptionEntry[] options = { { "directory", 'o', 0, OptionArg.FILENAME, ref directory, "Output directory", "DIRECTORY" }, @@ -113,6 +114,7 @@ public class ValaDoc : Object { { "force", 0, 0, OptionArg.NONE, ref force, "force", null }, { "verbose", 0, 0, OptionArg.NONE, ref verbose, "Show all warnings", null }, + { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code generation", "MAJOR.MINOR" }, { "", 0, 0, OptionArg.FILENAME_ARRAY, ref tsources, null, "FILE..." }, { null } @@ -224,6 +226,7 @@ public class ValaDoc : Object { settings.vapi_directories = vapi_directories; settings.metadata_directories = metadata_directories; settings.gir_directories = gir_directories; + settings.target_glib = target_glib; settings.source_files = tsources; settings.packages = packages;