]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Support --target-glib argument
authorEvan Nemerson <evan@coeus-group.com>
Fri, 10 Feb 2012 06:35:52 +0000 (07:35 +0100)
committerFlorian Brosch <flo.brosch@gmail.com>
Fri, 10 Feb 2012 06:35:52 +0000 (07:35 +0100)
src/driver/0.14.x/treebuilder.vala
src/driver/0.16.x/treebuilder.vala
src/libvaladoc/settings.vala
src/valadoc/valadoc.vala

index 556cb086966f3219c16d0b42906442fad1cfc3bd..4b86e6d254eaa9feac613def6119f19260838964 100644 (file)
@@ -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");
index 4813bcdd8f3206101670830bd164161cfffd4957..555a313c1372611fc6372dcf17d9d13186a8ada5 100644 (file)
@@ -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");
index afbdbfd796f2196ebbb824bfbedd74aa96f91198..d901dd1b78a000092318892d2981e19ad683c405 100755 (executable)
@@ -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;
index 46b8b1b0ac46eb68a6e1b810ffd4ce0e2464e4d9..f03426bc84e5a408c28ddf1904ab6ba17634971e 100755 (executable)
@@ -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;