[valadoc] Support --target-glib argument



commit f6e00b652424dcc034b2cdbdc61b3d8385dc53f1
Author: Evan Nemerson <evan coeus-group com>
Date:   Fri Feb 10 07:35:52 2012 +0100

    Support --target-glib argument

 src/driver/0.14.x/treebuilder.vala |   15 ++++++++++++++-
 src/driver/0.16.x/treebuilder.vala |   14 ++++++++++++++
 src/libvaladoc/settings.vala       |    5 +++++
 src/valadoc/valadoc.vala           |    3 +++
 4 files changed, 36 insertions(+), 1 deletions(-)
---
diff --git a/src/driver/0.14.x/treebuilder.vala b/src/driver/0.14.x/treebuilder.vala
index 556cb08..4b86e6d 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 4813bcd..555a313 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 afbdbfd..d901dd1 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 46b8b1b..f03426b 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]