[vala/staging: 3/7] vala: Add support for --target-glib=auto



commit f4b86c1e2aa0b74f843fc64de919390f6af46952
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Sat Mar 2 20:56:27 2019 +0100

    vala: Add support for --target-glib=auto
    
    Determine target-glib according to the available version of glib-2.0.
    
    Fixes https://gitlab.gnome.org/GNOME/vala/issues/761

 compiler/valacompiler.vala |  2 +-
 doc/valac.1                |  2 +-
 doc/valadoc.1              |  2 +-
 vala/valacodecontext.vala  | 16 ++++++++++++++--
 valadoc/valadoc.vala       |  2 +-
 5 files changed, 18 insertions(+), 6 deletions(-)
---
diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala
index 476093e7e..7394e45da 100644
--- a/compiler/valacompiler.vala
+++ b/compiler/valacompiler.vala
@@ -153,7 +153,7 @@ class Vala.Compiler {
                { "verbose", 'v', 0, OptionArg.NONE, ref verbose_mode, "Print additional messages to the 
console", null },
                { "no-color", 0, 0, OptionArg.NONE, ref disable_colored_output, "Disable colored output, 
alias for --color=never", null },
                { "color", 0, OptionFlags.OPTIONAL_ARG, OptionArg.CALLBACK, (void*) option_parse_color, 
"Enable color output, options are 'always', 'never', or 'auto'", "WHEN" },
-               { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code 
generation", "MAJOR.MINOR" },
+               { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code 
generation", "'MAJOR.MINOR', or 'auto'" },
                { "gresources", 0, 0, OptionArg.FILENAME_ARRAY, ref gresources, "XML of gresources", 
"FILE..." },
                { "gresourcesdir", 0, 0, OptionArg.FILENAME_ARRAY, ref gresources_directories, "Look for 
resources in DIRECTORY", "DIRECTORY..." },
                { "enable-version-header", 0, 0, OptionArg.NONE, ref enable_version_header, "Write vala build 
version in generated files", null },
diff --git a/doc/valac.1 b/doc/valac.1
index 275fa6c28..3c738eb94 100644
--- a/doc/valac.1
+++ b/doc/valac.1
@@ -182,7 +182,7 @@ or \fB--no-color\fR are declared then \fB--color\fR=\fIauto\fR is used where
 output is colored when stderr is a terminal.
 .RE
 .TP
-\fB\-\-target\-glib\fR=\fI\,MAJOR\/\fR.MINOR
+\fB\-\-target\-glib=\fR'MAJOR.MINOR', or 'auto'
 Target version of glib for code generation
 .TP
 \fB\-\-gresources\fR=\fI\,FILE\/\fR...
diff --git a/doc/valadoc.1 b/doc/valadoc.1
index 61260e4c8..45d50afad 100644
--- a/doc/valadoc.1
+++ b/doc/valadoc.1
@@ -107,7 +107,7 @@ Show all warnings
 \fB\-\-no\-color\fR
 Disable colored output
 .TP
-\fB\-\-target\-glib\fR=\fI\,MAJOR\/\fR.MINOR
+\fB\-\-target\-glib=\fR'MAJOR.MINOR', or 'auto'
 Target version of glib for code generation
 .SH BUGS
 https://gitlab.gnome.org/GNOME/vala/issues
diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala
index 34543a8d9..8b1a78be4 100644
--- a/vala/valacodecontext.vala
+++ b/vala/valacodecontext.vala
@@ -552,8 +552,20 @@ public class Vala.CodeContext {
         * @param target_glib a string of the format "%d.%d"
         */
        public void set_target_glib_version (string target_glib) {
-               int glib_major = target_glib_major;
-               int glib_minor = target_glib_minor;
+               int glib_major = 0;
+               int glib_minor = 0;
+
+               if (target_glib == "auto") {
+                       var available_glib = pkg_config_modversion ("glib-2.0");
+                       if (available_glib != null && available_glib.scanf ("%d.%d", out glib_major, out 
glib_minor) >= 2) {
+                               glib_minor -= ++glib_minor % 2;
+                               set_target_glib_version ("%d.%d".printf (glib_major, glib_minor));
+                               return;
+                       }
+               }
+
+               glib_major = target_glib_major;
+               glib_minor = target_glib_minor;
 
                if (target_glib != null && target_glib.scanf ("%d.%d", out glib_major, out glib_minor) != 2
                    || glib_minor % 2 != 0) {
diff --git a/valadoc/valadoc.vala b/valadoc/valadoc.vala
index 1bb91ff01..6d5093092 100644
--- a/valadoc/valadoc.vala
+++ b/valadoc/valadoc.vala
@@ -117,7 +117,7 @@ public class ValaDoc : Object {
                { "fatal-warnings", 0, 0, OptionArg.NONE, ref fatal_warnings, "Treat warnings as fatal", null 
},
                { "verbose", 0, 0, OptionArg.NONE, ref verbose, "Show all warnings", null },
                { "no-color", 0, 0, OptionArg.NONE, ref disable_diagnostic_colors, "Disable colored output", 
null },
-               { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code 
generation", "MAJOR.MINOR" },
+               { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code 
generation", "'MAJOR.MINOR', or 'auto'" },
                { OPTION_REMAINING, 0, 0, OptionArg.FILENAME_ARRAY, ref tsources, null, "FILE..." },
 
                { null }


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